aggiunti trasferte, export excel, miglioramenti generali

This commit is contained in:
2026-02-04 12:55:04 +01:00
parent 17453f5d13
commit 5f4ef6faee
30 changed files with 1558 additions and 325 deletions

View File

@@ -329,3 +329,49 @@ def get_user_presences(user_id: str, start_date: date = None, end_date: date = N
})
return result
class ClearOfficePresenceRequest(BaseModel):
start_date: date
end_date: date
office_id: str
@router.post("/admin/clear-office-presence")
def clear_office_presence(data: ClearOfficePresenceRequest, db: Session = Depends(get_db), current_user=Depends(require_manager_or_admin)):
"""Clear all presence and parking for an office in a date range (Test Tool)"""
# Verify office access
if current_user.role == UserRole.MANAGER and current_user.office_id != data.office_id:
raise HTTPException(status_code=403, detail="Not authorized for this office")
# Get all users in the office
users = db.query(User).filter(User.office_id == data.office_id).all()
user_ids = [u.id for u in users]
if not user_ids:
return {"message": "No users in office", "count_presence": 0, "count_parking": 0}
# 1. Delete Parking Assignments
parking_delete = db.query(DailyParkingAssignment).filter(
DailyParkingAssignment.user_id.in_(user_ids),
DailyParkingAssignment.date >= data.start_date,
DailyParkingAssignment.date <= data.end_date
)
parking_count = parking_delete.delete(synchronize_session=False)
# 2. Delete Presence
presence_delete = db.query(UserPresence).filter(
UserPresence.user_id.in_(user_ids),
UserPresence.date >= data.start_date,
UserPresence.date <= data.end_date
)
presence_count = presence_delete.delete(synchronize_session=False)
db.commit()
return {
"message": "Cleared office presence and parking",
"count_presence": presence_count,
"count_parking": parking_count
}