dept_service.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import datetime
  2. from extensions.ext_database import db
  3. from models.account import Account
  4. from models.dept import Dept
  5. from services.account_service import AccountService
  6. class DeptService:
  7. @staticmethod
  8. def get_dept_account_list():
  9. dept_list = []
  10. account_list = []
  11. dept_results = db.session.query(Dept.dept_id, Dept.dept_name).filter(Dept.status == "active").all()
  12. account_results = (
  13. db.session.query(Account.dept_id, Account.id, Account.email).filter(Account.status == "active").all()
  14. )
  15. for dept_row in dept_results:
  16. for account_row in account_results:
  17. if account_row.dept_id == dept_row.dept_id:
  18. account_list.append({"account_id": account_row.id, "email": account_row.email})
  19. dept_list.append({"dept_id": dept_row.dept_id, "dept_name": dept_row.dept_name, "accounts": account_list})
  20. return dept_list
  21. @staticmethod
  22. def get_dept_account(dept_id):
  23. dept_account = []
  24. account_results = (
  25. db.session.query(Account.dept_id, Account.id, Account.email)
  26. .filter(Account.status == "active", Account.dept_id == str(dept_id))
  27. .all()
  28. )
  29. for row in account_results:
  30. dept_account.append({"account_id": row.id, "email": row.email})
  31. return dept_account
  32. @staticmethod
  33. def get_dept_list():
  34. dept_list = []
  35. dept_results = db.session.query(Dept.dept_id, Dept.dept_name).filter(Dept.status == "active").all()
  36. for dept_row in dept_results:
  37. dept_list.append({"dept_id": dept_row.dept_id, "dept_name": dept_row.dept_name})
  38. return dept_list
  39. @staticmethod
  40. def get_dept_by_name(dept_name):
  41. dept = db.session.query(Dept).filter(Dept.status == "active", Dept.dept_name == dept_name).first()
  42. return dept
  43. @staticmethod
  44. def get_dept_by_id_name(dept_id, dept_name):
  45. dept = (
  46. db.session.query(Dept)
  47. .filter(Dept.status == "active", Dept.dept_name == dept_name, Dept.dept_id == dept_id)
  48. .first()
  49. )
  50. return dept
  51. @staticmethod
  52. def get_dept_by_id(dept_id):
  53. dept = db.session.query(Dept).filter(Dept.status == "active", Dept.dept_id == dept_id).first()
  54. return dept
  55. @staticmethod
  56. def save_dept(dept_name, current_user):
  57. dept = Dept(
  58. dept_name=dept_name,
  59. status="active",
  60. created_at=datetime.datetime.now(),
  61. created_by=current_user.id,
  62. )
  63. db.session.add(dept)
  64. db.session.flush()
  65. db.session.commit()
  66. @staticmethod
  67. def update_dept(dept_id, dept_name, current_user):
  68. db.session.query(Dept).filter(Dept.dept_id == dept_id).update(
  69. {"updated_by": current_user.id, "updated_at": datetime.datetime.now(), "dept_name": dept_name}
  70. )
  71. db.session.commit()
  72. @staticmethod
  73. def delete_dept(dept):
  74. AccountService.delete_account_dept(dept)
  75. db.session.delete(dept)
  76. db.session.commit()
  77. @staticmethod
  78. def save_dept_account_list(dept_id, dept_account_list):
  79. for dept_account in dept_account_list:
  80. account_id = dept_account.get("account_id")
  81. AccountService.update_account_dept(dept_id, account_id)
  82. @staticmethod
  83. def delete_dept_account_list(dept_id, dept_account_list):
  84. for dept_account in dept_account_list:
  85. account_id = dept_account.get("account_id")
  86. AccountService.update_account_dept("", account_id)