# ------------------------------------------------------------ # CREATE — called automatically at the end of each shift day # ------------------------------------------------------------ mutation createShiftDayCompletion( $shiftId: UUID! $orderId: UUID! $businessId: UUID! $vendorId: UUID! $dayDate: Timestamp! $dayNumber: Int! $hours: Float $cost: Float $staffSummary: Any $createdBy: String ) @auth(level: USER) { shiftDayCompletion_insert( data: { shiftId: $shiftId orderId: $orderId businessId: $businessId vendorId: $vendorId dayDate: $dayDate dayNumber: $dayNumber status: PENDING_REVIEW hours: $hours cost: $cost staffSummary: $staffSummary createdBy: $createdBy } ) } # ------------------------------------------------------------ # APPROVE — client approves a daily completion record # ------------------------------------------------------------ mutation approveShiftDayCompletion( $id: UUID! $reviewedBy: String! $reviewedAt: Timestamp! ) @auth(level: USER) { shiftDayCompletion_update( id: $id data: { status: APPROVED reviewedBy: $reviewedBy reviewedAt: $reviewedAt } ) } # ------------------------------------------------------------ # DISPUTE — client disputes a daily completion record # ------------------------------------------------------------ mutation disputeShiftDayCompletion( $id: UUID! $reviewedBy: String! $reviewedAt: Timestamp! $disputeReason: String! $disputeDetails: String $disputedItems: Any ) @auth(level: USER) { shiftDayCompletion_update( id: $id data: { status: DISPUTED reviewedBy: $reviewedBy reviewedAt: $reviewedAt disputeReason: $disputeReason disputeDetails: $disputeDetails disputedItems: $disputedItems } ) } # ------------------------------------------------------------ # LINK INVOICE — set once invoice is generated after full approval # ------------------------------------------------------------ mutation linkInvoiceToShiftDayCompletion( $id: UUID! $invoiceId: UUID! ) @auth(level: USER) { shiftDayCompletion_update( id: $id data: { invoiceId: $invoiceId } ) } # ------------------------------------------------------------ # UPDATE — general-purpose update (admin use) # ------------------------------------------------------------ mutation updateShiftDayCompletion( $id: UUID! $status: ShiftDayCompletionStatus $hours: Float $cost: Float $staffSummary: Any $disputeReason: String $disputeDetails: String $disputedItems: Any $reviewedBy: String $reviewedAt: Timestamp $invoiceId: UUID ) @auth(level: USER) { shiftDayCompletion_update( id: $id data: { status: $status hours: $hours cost: $cost staffSummary: $staffSummary disputeReason: $disputeReason disputeDetails: $disputeDetails disputedItems: $disputedItems reviewedBy: $reviewedBy reviewedAt: $reviewedAt invoiceId: $invoiceId } ) } # ------------------------------------------------------------ # DELETE # ------------------------------------------------------------ mutation deleteShiftDayCompletion($id: UUID!) @auth(level: USER) { shiftDayCompletion_delete(id: $id) }