1212
1313# === USER: CREATE ===
1414def create_attendance (db : Session , punch_time , current_user : dict ) -> Attendance :
15- new_att = Attendance (
16- punch_time = punch_time ,
17- fk_employee_id = current_user ["id" ]
18- )
15+ new_att = Attendance (punch_time = punch_time , fk_employee_id = current_user ["id" ])
1916 db .add (new_att )
2017 db .commit ()
2118 return new_att
2219
2320
2421# === USER: READ OWN ===
2522def get_my_attendance_all (db : Session , current_user : dict ) -> List [Attendance ]:
26- return db .query (Attendance ).filter (Attendance .fk_employee_id == current_user ["id" ]).all ()
23+ return (
24+ db .query (Attendance )
25+ .filter (Attendance .fk_employee_id == current_user ["id" ])
26+ .all ()
27+ )
2728
28-
2929
3030def get_my_attendance_by_date (
31- db : db_dependency ,
32- user : user_dependency ,
33- punch_date : date
31+ db : db_dependency , user : user_dependency , punch_date : date
3432):
3533 start_dt = datetime .combine (punch_date , time .min )
3634 end_dt = datetime .combine (punch_date , time .max )
@@ -40,34 +38,32 @@ def get_my_attendance_by_date(
4038 .filter (
4139 Attendance .fk_employee_id == user ["id" ],
4240 Attendance .punch_time >= start_dt ,
43- Attendance .punch_time <= end_dt
41+ Attendance .punch_time <= end_dt ,
4442 )
4543 .order_by (Attendance .punch_time )
4644 .all ()
4745 )
4846
4947
50-
51-
5248# MANAGER: All direct reports' attendance on a given date
5349def get_manager_team_attendance_by_date (
5450 punch_date : date ,
5551 db : Session ,
5652 user : dict ,
5753) -> List [Attendance ]:
5854 # Real check: does ANY employee report to this user?
59- has_subordinates = db . query ( Employee ). filter (
60- Employee . fk_manager_id == user ["id" ]
61- ). first ()
55+ has_subordinates = (
56+ db . query ( Employee ). filter ( Employee . fk_manager_id == user ["id" ]). first ()
57+ )
6258
6359 if not has_subordinates :
6460 return [] # No one reports to you → empty list (safe)
6561
6662 managed_ids = [
67- e .employee_id for e in
68- db .query (Employee .employee_id )
69- .filter (Employee .fk_manager_id == user ["id" ])
70- .all ()
63+ e .employee_id
64+ for e in db .query (Employee .employee_id )
65+ .filter (Employee .fk_manager_id == user ["id" ])
66+ .all ()
7167 ]
7268
7369 start_dt = datetime .combine (punch_date , time .min )
@@ -77,7 +73,7 @@ def get_manager_team_attendance_by_date(
7773 db .query (Attendance )
7874 .filter (
7975 Attendance .fk_employee_id .in_ (managed_ids ),
80- Attendance .punch_time .between (start_dt , end_dt )
76+ Attendance .punch_time .between (start_dt , end_dt ),
8177 )
8278 .order_by (Attendance .fk_employee_id , Attendance .punch_time )
8379 .all ()
@@ -92,15 +88,17 @@ def get_manager_subordinate_attendance_by_date(
9288 user : dict ,
9389) -> List [Attendance ]:
9490 # Security: employee must exist AND report directly to current user
95- employee = db .query (Employee ).filter (
96- Employee .employee_id == employee_id ,
97- Employee .fk_manager_id == user ["id" ]
98- ).first ()
91+ employee = (
92+ db .query (Employee )
93+ .filter (
94+ Employee .employee_id == employee_id , Employee .fk_manager_id == user ["id" ]
95+ )
96+ .first ()
97+ )
9998
10099 if not employee :
101100 raise HTTPException (
102- status_code = 404 ,
103- detail = "Employee not found under your management"
101+ status_code = 404 , detail = "Employee not found under your management"
104102 )
105103
106104 start_dt = datetime .combine (punch_date , time .min )
@@ -110,39 +108,43 @@ def get_manager_subordinate_attendance_by_date(
110108 db .query (Attendance )
111109 .filter (
112110 Attendance .fk_employee_id == employee_id ,
113- Attendance .punch_time .between (start_dt , end_dt )
111+ Attendance .punch_time .between (start_dt , end_dt ),
114112 )
115113 .order_by (Attendance .punch_time )
116114 .all ()
117115 )
118116
117+
119118# === ADMIN: READ ALL ===
120119def get_all_attendance (db : Session , user : user_dependency ):
121120 _require_admin (user = user )
122121 return db .query (Attendance ).all ()
123122
124123
125- def get_attendance_by_date_all_employees (db : Session , punch_date : datetime , user : user_dependency ):
124+ def get_attendance_by_date_all_employees (
125+ db : Session , punch_date : datetime , user : user_dependency
126+ ):
126127 _require_admin (user = user )
127128 start_dt = datetime .combine (punch_date , time .min )
128129 end_dt = datetime .combine (punch_date , time .max )
129130
130131 return (
131132 db .query (Attendance )
132- .filter (
133- Attendance .punch_time >= start_dt ,
134- Attendance .punch_time <= end_dt
135- )
133+ .filter (Attendance .punch_time >= start_dt , Attendance .punch_time <= end_dt )
136134 .order_by (Attendance .punch_time )
137135 .all ()
138136 )
139137
140138
141- def get_attendance_by_date_one_employee (db : Session , employee_id : int , punch_date : datetime , user :user_dependency ):
139+ def get_attendance_by_date_one_employee (
140+ db : Session , employee_id : int , punch_date : datetime , user : user_dependency
141+ ):
142142 _require_admin (user = user )
143143 employee = db .query (Employee ).filter (Employee .employee_id == employee_id ).first ()
144144 if not employee :
145- raise HTTPException (status_code = status .HTTP_404_NOT_FOUND ,detail = "Employee not found" )
145+ raise HTTPException (
146+ status_code = status .HTTP_404_NOT_FOUND , detail = "Employee not found"
147+ )
146148 start_dt = datetime .combine (punch_date , time .min )
147149 end_dt = datetime .combine (punch_date , time .max )
148150
@@ -158,13 +160,16 @@ def get_attendance_by_date_one_employee(db: Session, employee_id: int, punch_dat
158160 )
159161
160162
161- def get_all_attendance_of_employee (db : Session , employee_id : int , user :user_dependency ):
163+ def get_all_attendance_of_employee (
164+ db : Session , employee_id : int , user : user_dependency
165+ ):
162166 _require_admin (user = user )
163- employee = db .query (Employee ).filter (Employee .employee_id == employee_id ).first ()
167+ employee = db .query (Employee ).filter (Employee .employee_id == employee_id ).first ()
164168 if not employee :
165- raise HTTPException (status_code = status .HTTP_404_NOT_FOUND , detail = "Employee Not Founds" )
166- records = db .query (Attendance ).filter (Attendance .fk_employee_id == employee_id ).all ()
169+ raise HTTPException (
170+ status_code = status .HTTP_404_NOT_FOUND , detail = "Employee Not Founds"
171+ )
172+ records = (
173+ db .query (Attendance ).filter (Attendance .fk_employee_id == employee_id ).all ()
174+ )
167175 return records
168-
169-
170-
0 commit comments