package services import ( "time" "attune-heart-therapy/internal/jobs" "attune-heart-therapy/internal/repositories" ) // jobManagerService implements the JobManagerService interface type jobManagerService struct { manager *jobs.Manager } // NewJobManagerService creates a new job manager service func NewJobManagerService( notificationService NotificationService, bookingRepo repositories.BookingRepository, userRepo repositories.UserRepository, ) JobManagerService { // Use default config from jobs package manager := jobs.NewManager(notificationService, bookingRepo, userRepo, nil) return &jobManagerService{ manager: manager, } } // Start starts the job manager func (s *jobManagerService) Start() error { return s.manager.Start() } // Stop stops the job manager func (s *jobManagerService) Stop() error { return s.manager.Stop() } // IsRunning returns whether the job manager is running func (s *jobManagerService) IsRunning() bool { return s.manager.IsRunning() } // ScheduleRemindersForBooking schedules reminders for a booking func (s *jobManagerService) ScheduleRemindersForBooking(bookingID uint, userID uint, meetingTime time.Time) error { reminderScheduler := s.manager.GetReminderScheduler() return reminderScheduler.ScheduleRemindersForBooking(bookingID, userID, meetingTime) } // CancelRemindersForBooking cancels reminders for a booking func (s *jobManagerService) CancelRemindersForBooking(bookingID uint) error { reminderScheduler := s.manager.GetReminderScheduler() return reminderScheduler.CancelRemindersForBooking(bookingID) }