2026-01-26 10:30:49 -05:00

129 lines
6.7 KiB
Python

import graphene
from graphene import InputObjectType
class PunchlistCreateInput(InputObjectType):
"""
Input type for creating a new Punchlist.
"""
project_id = graphene.ID(required=True, description="ID of the project for this punchlist")
account_id = graphene.ID(required=True, description="ID of the account for this punchlist")
date = graphene.Date(required=True, description="Date of the punchlist (YYYY-MM-DD)")
second_visit = graphene.Boolean(description="Whether a second visit is required")
second_date = graphene.DateTime(description="Date and time of the second visit")
# Front area section
front_ceiling = graphene.Boolean(description="Front area ceiling cleaned")
front_vents = graphene.Boolean(description="Front area vents cleaned")
front_fixtures = graphene.Boolean(description="Front area fixtures cleaned")
front_counter = graphene.Boolean(description="Front counter cleaned")
# Main work area section
main_equipment = graphene.String(description="Main equipment type")
main_equipment_disassemble = graphene.Boolean(description="Equipment disassembled")
main_equipment_reassemble = graphene.Boolean(description="Equipment reassembled")
main_equipment_alerts = graphene.Boolean(description="Equipment alerts identified")
main_equipment_exterior = graphene.Boolean(description="Equipment exterior cleaned")
main_walls = graphene.Boolean(description="Main area walls cleaned")
main_fixtures = graphene.Boolean(description="Main area fixtures cleaned")
main_ceiling = graphene.Boolean(description="Main area ceiling cleaned")
main_vents = graphene.Boolean(description="Main area vents cleaned")
main_floors = graphene.Boolean(description="Main area floors cleaned")
# Equipment section
equip_primary = graphene.Boolean(description="Primary equipment cleaned")
equip_station_1 = graphene.Boolean(description="Station 1 cleaned")
equip_station_2 = graphene.Boolean(description="Station 2 cleaned")
equip_station_3 = graphene.Boolean(description="Station 3 cleaned")
equip_storage = graphene.Boolean(description="Storage area cleaned")
equip_prep = graphene.Boolean(description="Prep area cleaned")
equip_delivery = graphene.Boolean(description="Delivery area cleaned")
equip_office = graphene.Boolean(description="Office area cleaned")
equip_sinks = graphene.Boolean(description="Sinks cleaned")
equip_dispensers = graphene.Boolean(description="Dispensers cleaned")
equip_other = graphene.Boolean(description="Other equipment cleaned")
# Back area section
back_ceiling = graphene.Boolean(description="Back area ceiling cleaned")
back_vents = graphene.Boolean(description="Back area vents cleaned")
# End of visit section
end_trash = graphene.Boolean(description="Trash removed")
end_clean = graphene.Boolean(description="Area left clean")
end_secure = graphene.Boolean(description="Area secured")
# Notes
notes = graphene.String(description="Notes about the punchlist")
class PunchlistUpdateInput(InputObjectType):
"""
Input type for updating an existing Punchlist.
"""
id = graphene.ID(required=True, description="ID of the punchlist to update")
project_id = graphene.ID(description="ID of the project for this punchlist")
account_id = graphene.ID(description="ID of the account for this punchlist")
date = graphene.Date(description="Date of the punchlist (YYYY-MM-DD)")
second_visit = graphene.Boolean(description="Whether a second visit is required")
second_date = graphene.DateTime(description="Date and time of the second visit")
# Front area section
front_ceiling = graphene.Boolean(description="Front area ceiling cleaned")
front_vents = graphene.Boolean(description="Front area vents cleaned")
front_fixtures = graphene.Boolean(description="Front area fixtures cleaned")
front_counter = graphene.Boolean(description="Front counter cleaned")
# Main work area section
main_equipment = graphene.String(description="Main equipment type")
main_equipment_disassemble = graphene.Boolean(description="Equipment disassembled")
main_equipment_reassemble = graphene.Boolean(description="Equipment reassembled")
main_equipment_alerts = graphene.Boolean(description="Equipment alerts identified")
main_equipment_exterior = graphene.Boolean(description="Equipment exterior cleaned")
main_walls = graphene.Boolean(description="Main area walls cleaned")
main_fixtures = graphene.Boolean(description="Main area fixtures cleaned")
main_ceiling = graphene.Boolean(description="Main area ceiling cleaned")
main_vents = graphene.Boolean(description="Main area vents cleaned")
main_floors = graphene.Boolean(description="Main area floors cleaned")
# Equipment section
equip_primary = graphene.Boolean(description="Primary equipment cleaned")
equip_station_1 = graphene.Boolean(description="Station 1 cleaned")
equip_station_2 = graphene.Boolean(description="Station 2 cleaned")
equip_station_3 = graphene.Boolean(description="Station 3 cleaned")
equip_storage = graphene.Boolean(description="Storage area cleaned")
equip_prep = graphene.Boolean(description="Prep area cleaned")
equip_delivery = graphene.Boolean(description="Delivery area cleaned")
equip_office = graphene.Boolean(description="Office area cleaned")
equip_sinks = graphene.Boolean(description="Sinks cleaned")
equip_dispensers = graphene.Boolean(description="Dispensers cleaned")
equip_other = graphene.Boolean(description="Other equipment cleaned")
# Back area section
back_ceiling = graphene.Boolean(description="Back area ceiling cleaned")
back_vents = graphene.Boolean(description="Back area vents cleaned")
# End of visit section
end_trash = graphene.Boolean(description="Trash removed")
end_clean = graphene.Boolean(description="Area left clean")
end_secure = graphene.Boolean(description="Area secured")
# Notes
notes = graphene.String(description="Notes about the punchlist")
# Export fields
exported_at = graphene.DateTime(description="When the punchlist was exported")
sheet_url = graphene.String(description="URL to the Google Sheet")
pdf_url = graphene.String(description="URL to the PDF")
class PunchlistFilterInput(InputObjectType):
"""
Input type for filtering Punchlists.
"""
project_id = graphene.ID(description="Filter by project ID")
account_id = graphene.ID(description="Filter by account ID")
start_date = graphene.Date(description="Filter by start date (inclusive)")
end_date = graphene.Date(description="Filter by end date (inclusive)")
is_exported = graphene.Boolean(description="Filter by export status")
second_visit = graphene.Boolean(description="Filter by second visit requirement")