Implement time off management (Issue #3)
Add full time-off lifecycle: create/edit/delete with shift conflict detection, auto-removal from conflicting shifts with admin notification, shift restoration on admin delete, and hard block on assigning volunteers with approved time off to shifts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -26,11 +26,12 @@ func New(db *sql.DB, jwtSecret string, staticDir string) http.Handler {
|
||||
notificationStore := notification.NewStore(db)
|
||||
notificationHandler := notification.NewHandler(notificationStore)
|
||||
|
||||
scheduleStore := schedule.NewStore(db)
|
||||
scheduleHandler := schedule.NewHandler(scheduleStore, notificationStore)
|
||||
|
||||
timeoffStore := timeoff.NewStore(db)
|
||||
timeoffHandler := timeoff.NewHandler(timeoffStore)
|
||||
|
||||
scheduleStore := schedule.NewStore(db)
|
||||
scheduleHandler := schedule.NewHandler(scheduleStore, notificationStore, timeoffStore)
|
||||
|
||||
timeoffHandler := timeoff.NewHandler(timeoffStore, notificationStore, volunteerStore)
|
||||
|
||||
checkinStore := checkin.NewStore(db)
|
||||
checkinHandler := checkin.NewHandler(checkinStore)
|
||||
@@ -81,7 +82,10 @@ func New(db *sql.DB, jwtSecret string, staticDir string) http.Handler {
|
||||
// Time off
|
||||
r.Get("/timeoff", timeoffHandler.List)
|
||||
r.Post("/timeoff", timeoffHandler.Create)
|
||||
r.Put("/timeoff/{id}", timeoffHandler.Update)
|
||||
r.Delete("/timeoff/{id}", timeoffHandler.Delete)
|
||||
r.With(middleware.RequireAdmin).Put("/timeoff/{id}/review", timeoffHandler.Review)
|
||||
r.With(middleware.RequireAdmin).Get("/timeoff/{id}/shifts", timeoffHandler.RemovedShifts)
|
||||
|
||||
// Check-in / check-out
|
||||
r.Post("/checkin", checkinHandler.CheckIn)
|
||||
|
||||
Reference in New Issue
Block a user