aggiunti trasferte, export excel, miglioramenti generali
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user