fix: Update staff application to connect with data connect

This commit is contained in:
dhinesh-m24
2026-02-24 17:29:20 +05:30
40 changed files with 3035 additions and 199 deletions

View File

@@ -0,0 +1,129 @@
# ------------------------------------------------------------
# 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)
}

View File

@@ -0,0 +1,417 @@
# ------------------------------------------------------------
# GET BY ID
# ------------------------------------------------------------
query getShiftDayCompletionById($id: UUID!) @auth(level: USER) {
shiftDayCompletion(id: $id) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
disputeReason
disputeDetails
disputedItems
reviewedBy
reviewedAt
invoiceId
createdAt
updatedAt
createdBy
shift {
id
title
date
startTime
endTime
hours
durationDays
status
}
order {
id
eventName
orderType
poReference
teamHub {
hubName
address
}
}
business {
id
businessName
email
contactName
}
vendor {
id
companyName
email
}
invoice {
id
invoiceNumber
status
issueDate
dueDate
amount
}
}
}
# ------------------------------------------------------------
# LIST ALL COMPLETION RECORDS FOR A SHIFT
# ------------------------------------------------------------
query listShiftDayCompletionsByShift(
$shiftId: UUID!
$offset: Int
$limit: Int
) @auth(level: USER) {
shiftDayCompletions(
where: { shiftId: { eq: $shiftId } }
orderBy: { dayNumber: ASC }
offset: $offset
limit: $limit
) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
disputeReason
disputeDetails
disputedItems
reviewedBy
reviewedAt
invoiceId
createdAt
updatedAt
shift {
id
title
date
startTime
endTime
durationDays
status
}
invoice {
id
invoiceNumber
status
amount
}
}
}
# ------------------------------------------------------------
# LIST ALL COMPLETION RECORDS FOR AN ORDER
# ------------------------------------------------------------
query listShiftDayCompletionsByOrder(
$orderId: UUID!
$offset: Int
$limit: Int
) @auth(level: USER) {
shiftDayCompletions(
where: { orderId: { eq: $orderId } }
orderBy: { dayDate: ASC }
offset: $offset
limit: $limit
) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
disputeReason
disputeDetails
disputedItems
reviewedBy
reviewedAt
invoiceId
createdAt
updatedAt
shift {
id
title
date
startTime
endTime
durationDays
status
}
invoice {
id
invoiceNumber
status
amount
}
}
}
# ------------------------------------------------------------
# LIST PENDING REVIEW RECORDS FOR A BUSINESS (client view)
# ------------------------------------------------------------
query listPendingShiftDayCompletionsByBusiness(
$businessId: UUID!
$offset: Int
$limit: Int
) @auth(level: USER) {
shiftDayCompletions(
where: {
businessId: { eq: $businessId }
status: { eq: PENDING_REVIEW }
}
orderBy: { dayDate: ASC }
offset: $offset
limit: $limit
) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
createdAt
updatedAt
shift {
id
title
date
startTime
endTime
durationDays
status
location
locationAddress
}
order {
id
eventName
orderType
poReference
teamHub {
hubName
address
}
}
vendor {
id
companyName
}
}
}
# ------------------------------------------------------------
# LIST ALL RECORDS FOR A BUSINESS FILTERED BY STATUS
# ------------------------------------------------------------
query listShiftDayCompletionsByBusinessAndStatus(
$businessId: UUID!
$status: ShiftDayCompletionStatus!
$offset: Int
$limit: Int
) @auth(level: USER) {
shiftDayCompletions(
where: {
businessId: { eq: $businessId }
status: { eq: $status }
}
orderBy: { dayDate: DESC }
offset: $offset
limit: $limit
) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
disputeReason
disputeDetails
disputedItems
reviewedBy
reviewedAt
invoiceId
createdAt
updatedAt
shift {
id
title
date
startTime
endTime
durationDays
status
}
order {
id
eventName
orderType
poReference
}
invoice {
id
invoiceNumber
status
amount
}
}
}
# ------------------------------------------------------------
# LIST ALL APPROVED RECORDS FOR A SHIFT (invoice trigger check)
# ------------------------------------------------------------
query listApprovedShiftDayCompletionsByShift(
$shiftId: UUID!
) @auth(level: USER) {
shiftDayCompletions(
where: {
shiftId: { eq: $shiftId }
status: { eq: APPROVED }
}
orderBy: { dayNumber: ASC }
) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
reviewedBy
reviewedAt
invoiceId
createdAt
updatedAt
shift {
id
title
durationDays
hours
cost
status
order {
id
eventName
businessId
vendorId
poReference
teamHub {
hubName
address
}
}
}
}
}
# ------------------------------------------------------------
# LIST ALL RECORDS BY VENDOR FILTERED BY STATUS
# ------------------------------------------------------------
query listShiftDayCompletionsByVendorAndStatus(
$vendorId: UUID!
$status: ShiftDayCompletionStatus!
$offset: Int
$limit: Int
) @auth(level: USER) {
shiftDayCompletions(
where: {
vendorId: { eq: $vendorId }
status: { eq: $status }
}
orderBy: { dayDate: DESC }
offset: $offset
limit: $limit
) {
id
shiftId
orderId
businessId
vendorId
dayDate
dayNumber
status
hours
cost
staffSummary
disputeReason
disputeDetails
reviewedBy
reviewedAt
invoiceId
createdAt
updatedAt
shift {
id
title
date
startTime
endTime
durationDays
status
}
business {
id
businessName
email
}
invoice {
id
invoiceNumber
status
amount
}
}
}

View File

@@ -0,0 +1,45 @@
enum ShiftDayCompletionStatus {
PENDING_REVIEW
APPROVED
DISPUTED
}
type ShiftDayCompletion @table(name: "shift_day_completions", key: ["id"]) {
id: UUID! @default(expr: "uuidV4()")
shiftId: UUID!
shift: Shift! @ref(fields: "shiftId", references: "id")
orderId: UUID!
order: Order! @ref(fields: "orderId", references: "id")
businessId: UUID!
business: Business! @ref(fields: "businessId", references: "id")
vendorId: UUID!
vendor: Vendor! @ref(fields: "vendorId", references: "id")
dayDate: Timestamp!
dayNumber: Int!
status: ShiftDayCompletionStatus! @default(expr: "'PENDING_REVIEW'")
hours: Float
cost: Float
staffSummary: Any @col(dataType: "jsonb")
disputeReason: String
disputeDetails: String
disputedItems: Any @col(dataType: "jsonb")
reviewedBy: String
reviewedAt: Timestamp
invoiceId: UUID
invoice: Invoice @ref(fields: "invoiceId", references: "id")
createdAt: Timestamp @default(expr: "request.time")
updatedAt: Timestamp @default(expr: "request.time")
createdBy: String
}