Add /api/attendance/status_texts endpoint; dynamic status filter in Attendance List (filter by status_text LIKE)
This commit is contained in:
@@ -1098,6 +1098,15 @@ async def dashboard_summary(
|
||||
"staff_count": len(staff_set),
|
||||
}
|
||||
|
||||
@app.get("/api/attendance/status_texts")
|
||||
async def attendance_status_texts(
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
"""Return distinct status_text values for filter dropdown."""
|
||||
rows = db.query(AttendanceRecord.status_text).distinct().all()
|
||||
return [r[0] for r in rows if r[0]]
|
||||
|
||||
@app.get("/api/attendance/stats")
|
||||
async def attendance_stats(
|
||||
date_from: Optional[str] = None,
|
||||
@@ -1234,6 +1243,7 @@ async def attendance_records(
|
||||
date_to: Optional[str] = None,
|
||||
staff: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
status_text: Optional[str] = None,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
@@ -1256,6 +1266,8 @@ async def attendance_records(
|
||||
q = q.filter(AttendanceRecord.employee_name == staff)
|
||||
if status:
|
||||
q = q.filter(AttendanceRecord.status_code == status)
|
||||
if status_text:
|
||||
q = q.filter(AttendanceRecord.status_text.like(f"%{status_text}%"))
|
||||
if search:
|
||||
like = f"%{search}%"
|
||||
q = q.filter(or_(
|
||||
|
||||
Reference in New Issue
Block a user