""" Schedule models for managing service schedules.py. """ import uuid from django.db import models from django.utils import timezone class Schedule(models.Model): """Service schedules.py for accounts""" id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) account = models.ForeignKey('Account', on_delete=models.CASCADE, related_name='schedules') # Service days monday_service = models.BooleanField(default=False) tuesday_service = models.BooleanField(default=False) wednesday_service = models.BooleanField(default=False) thursday_service = models.BooleanField(default=False) friday_service = models.BooleanField(default=False) saturday_service = models.BooleanField(default=False) sunday_service = models.BooleanField(default=False) weekend_service = models.BooleanField(default=False) # Exceptions schedule_exception = models.TextField(blank=True, null=True) # Dates start_date = models.DateField() end_date = models.DateField(blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: app_label = 'core' verbose_name = 'Schedule' verbose_name_plural = 'Schedules' ordering = ['-start_date'] indexes = [ models.Index(fields=['account']), ] def __str__(self): return f"Schedule for {self.account.name}" @property def is_active(self): """Check if schedule is active based on end_date""" return self.end_date is None or self.end_date > timezone.now().date() @property def service_days(self): """Return list of service days""" days = [] if self.monday_service: days.append('Monday') if self.tuesday_service: days.append('Tuesday') if self.wednesday_service: days.append('Wednesday') if self.thursday_service: days.append('Thursday') if self.friday_service: days.append('Friday') if self.saturday_service: days.append('Saturday') if self.sunday_service: days.append('Sunday') return days def has_service_on_day(self, day_name): """Check if there is service on a specific day""" day_map = { 'monday': self.monday_service, 'tuesday': self.tuesday_service, 'wednesday': self.wednesday_service, 'thursday': self.thursday_service, 'friday': self.friday_service, 'saturday': self.saturday_service, 'sunday': self.sunday_service, } return day_map.get(day_name.lower(), False)