fix: Update staff application to connect with data connect
This commit is contained in:
129
backend/dataconnect/connector/shiftDayCompletion/mutations.gql
Normal file
129
backend/dataconnect/connector/shiftDayCompletion/mutations.gql
Normal 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)
|
||||
}
|
||||
417
backend/dataconnect/connector/shiftDayCompletion/queries.gql
Normal file
417
backend/dataconnect/connector/shiftDayCompletion/queries.gql
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
45
backend/dataconnect/schema/shiftDayCompletion.gql
Normal file
45
backend/dataconnect/schema/shiftDayCompletion.gql
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user