import graphene from graphene import InputObjectType class ScheduleCreateInput(InputObjectType): """ Input type for creating a new schedule. """ account_id = graphene.ID(required=True, description="ID of the account this schedule belongs to") # Service days monday_service = graphene.Boolean(description="Whether service is scheduled on Monday", default_value=False) tuesday_service = graphene.Boolean(description="Whether service is scheduled on Tuesday", default_value=False) wednesday_service = graphene.Boolean(description="Whether service is scheduled on Wednesday", default_value=False) thursday_service = graphene.Boolean(description="Whether service is scheduled on Thursday", default_value=False) friday_service = graphene.Boolean(description="Whether service is scheduled on Friday", default_value=False) saturday_service = graphene.Boolean(description="Whether service is scheduled on Saturday", default_value=False) sunday_service = graphene.Boolean(description="Whether service is scheduled on Sunday", default_value=False) weekend_service = graphene.Boolean(description="Whether weekend service is enabled", default_value=False) # Exceptions schedule_exception = graphene.String(description="Exceptions to the regular schedule") # Dates start_date = graphene.DateTime(required=True, description="Start date of the schedule (YYYY-MM-DD)") end_date = graphene.DateTime(description="End date of the schedule (YYYY-MM-DD)") class ScheduleUpdateInput(InputObjectType): """ Input type for updating an existing schedule. """ id = graphene.ID(required=True, description="ID of the schedule to update") account_id = graphene.ID(description="ID of the account this schedule belongs to") # Service days monday_service = graphene.Boolean(description="Whether service is scheduled on Monday") tuesday_service = graphene.Boolean(description="Whether service is scheduled on Tuesday") wednesday_service = graphene.Boolean(description="Whether service is scheduled on Wednesday") thursday_service = graphene.Boolean(description="Whether service is scheduled on Thursday") friday_service = graphene.Boolean(description="Whether service is scheduled on Friday") saturday_service = graphene.Boolean(description="Whether service is scheduled on Saturday") sunday_service = graphene.Boolean(description="Whether service is scheduled on Sunday") weekend_service = graphene.Boolean(description="Whether weekend service is enabled") # Exceptions schedule_exception = graphene.String(description="Exceptions to the regular schedule") # Dates start_date = graphene.DateTime(description="Start date of the schedule (YYYY-MM-DD)") end_date = graphene.DateTime(description="End date of the schedule (YYYY-MM-DD)") class GenerateServicesInput(InputObjectType): """ Input type for generating services based on a schedule. """ schedule_id = graphene.ID(required=True, description="ID of the schedule to generate services from") start_date = graphene.DateTime(required=True, description="Start date for service generation (YYYY-MM-DD)") end_date = graphene.DateTime(required=True, description="End date for service generation (YYYY-MM-DD)") class ScheduleFilterInput(graphene.InputObjectType): """Input type for filtering schedules""" account_id = graphene.ID(description="Filter by account ID") is_active = graphene.Boolean(description="Filter by active status") start_date = graphene.DateTime(description="Filter by start date") end_date = graphene.DateTime(description="Filter by end date") has_exceptions = graphene.Boolean(description="Filter by presence of schedule exceptions") has_weekend_service = graphene.Boolean(description="Filter by weekend service availability")