Merge branch 'dev' into 538-be-assign-a-hub-manager-to-an-order
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
# LIST ALL (admin/debug)
|
# LIST ALL (admin/debug)
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
@@ -78,7 +77,6 @@ query listBenefitsDataByStaffId(
|
|||||||
|
|
||||||
vendorBenefitPlan {
|
vendorBenefitPlan {
|
||||||
id
|
id
|
||||||
vendorId
|
|
||||||
title
|
title
|
||||||
description
|
description
|
||||||
requestLabel
|
requestLabel
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ mutation CreateCertificate(
|
|||||||
$status: CertificateStatus!
|
$status: CertificateStatus!
|
||||||
$fileUrl: String
|
$fileUrl: String
|
||||||
$icon: String
|
$icon: String
|
||||||
$certificationType: ComplianceType
|
$certificationType: ComplianceType!
|
||||||
$issuer: String
|
$issuer: String
|
||||||
$staffId: UUID!
|
$staffId: UUID!
|
||||||
$validationStatus: ValidationStatus
|
$validationStatus: ValidationStatus
|
||||||
@@ -29,21 +29,20 @@ mutation CreateCertificate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
mutation UpdateCertificate(
|
mutation UpdateCertificate(
|
||||||
$id: UUID!
|
$staffId: UUID!
|
||||||
|
$certificationType: ComplianceType!
|
||||||
$name: String
|
$name: String
|
||||||
$description: String
|
$description: String
|
||||||
$expiry: Timestamp
|
$expiry: Timestamp
|
||||||
$status: CertificateStatus
|
$status: CertificateStatus
|
||||||
$fileUrl: String
|
$fileUrl: String
|
||||||
$icon: String
|
$icon: String
|
||||||
$staffId: UUID
|
|
||||||
$certificationType: ComplianceType
|
|
||||||
$issuer: String
|
$issuer: String
|
||||||
$validationStatus: ValidationStatus
|
$validationStatus: ValidationStatus
|
||||||
$certificateNumber: String
|
$certificateNumber: String
|
||||||
) @auth(level: USER) {
|
) @auth(level: USER) {
|
||||||
certificate_update(
|
certificate_update(
|
||||||
id: $id
|
key: { staffId: $staffId, certificationType: $certificationType }
|
||||||
data: {
|
data: {
|
||||||
name: $name
|
name: $name
|
||||||
description: $description
|
description: $description
|
||||||
@@ -51,8 +50,6 @@ mutation UpdateCertificate(
|
|||||||
status: $status
|
status: $status
|
||||||
fileUrl: $fileUrl
|
fileUrl: $fileUrl
|
||||||
icon: $icon
|
icon: $icon
|
||||||
staffId: $staffId
|
|
||||||
certificationType: $certificationType
|
|
||||||
issuer: $issuer
|
issuer: $issuer
|
||||||
validationStatus: $validationStatus
|
validationStatus: $validationStatus
|
||||||
certificateNumber: $certificateNumber
|
certificateNumber: $certificateNumber
|
||||||
@@ -60,6 +57,49 @@ mutation UpdateCertificate(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
mutation DeleteCertificate($id: UUID!) @auth(level: USER) {
|
mutation DeleteCertificate($staffId: UUID!, $certificationType: ComplianceType!)
|
||||||
certificate_delete(id: $id)
|
@auth(level: USER) {
|
||||||
|
certificate_delete(
|
||||||
|
key: { staffId: $staffId, certificationType: $certificationType }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# UPSERT STAFF CERTIFICATE
|
||||||
|
# Creates the certificate record if it does not exist, or updates
|
||||||
|
# it if it already exists (matched by staffId + certificationType key).
|
||||||
|
# Use this when uploading a certificate for the first time or
|
||||||
|
# updating an existing one.
|
||||||
|
#
|
||||||
|
# To update multiple certificates in a single network call, use
|
||||||
|
# aliased mutations in one GraphQL request from the client:
|
||||||
|
#
|
||||||
|
# mutation {
|
||||||
|
# cert1: upsertStaffCertificate(staffId: $id, certificationType: BACKGROUND_CHECK, ...)
|
||||||
|
# cert2: upsertStaffCertificate(staffId: $id, certificationType: FOOD_HANDLER, ...)
|
||||||
|
# }
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
mutation upsertStaffCertificate(
|
||||||
|
$staffId: UUID!
|
||||||
|
$certificationType: ComplianceType!
|
||||||
|
$name: String!
|
||||||
|
$status: CertificateStatus!
|
||||||
|
$fileUrl: String
|
||||||
|
$expiry: Timestamp
|
||||||
|
$issuer: String
|
||||||
|
$certificateNumber: String
|
||||||
|
$validationStatus: ValidationStatus
|
||||||
|
) @auth(level: USER) {
|
||||||
|
certificate_upsert(
|
||||||
|
data: {
|
||||||
|
staffId: $staffId
|
||||||
|
certificationType: $certificationType
|
||||||
|
name: $name
|
||||||
|
status: $status
|
||||||
|
fileUrl: $fileUrl
|
||||||
|
expiry: $expiry
|
||||||
|
issuer: $issuer
|
||||||
|
certificateNumber: $certificateNumber
|
||||||
|
validationStatus: $validationStatus
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,12 +18,14 @@ query listCertificates @auth(level: USER) {
|
|||||||
id
|
id
|
||||||
fullName
|
fullName
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
query getCertificateById($id: UUID!) @auth(level: USER) {
|
query getCertificateByKey($staffId: UUID!, $certificationType: ComplianceType!)
|
||||||
certificate(id: $id) {
|
@auth(level: USER) {
|
||||||
|
certificate(
|
||||||
|
key: { staffId: $staffId, certificationType: $certificationType }
|
||||||
|
) {
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
description
|
description
|
||||||
@@ -42,7 +44,6 @@ query getCertificateById($id: UUID!) @auth(level: USER) {
|
|||||||
id
|
id
|
||||||
fullName
|
fullName
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +67,5 @@ query listCertificatesByStaffId($staffId: UUID!) @auth(level: USER) {
|
|||||||
id
|
id
|
||||||
fullName
|
fullName
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
37
backend/dataconnect/connector/costCenter/mutations.gql
Normal file
37
backend/dataconnect/connector/costCenter/mutations.gql
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# CREATE COST CENTER
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
mutation createCostCenter(
|
||||||
|
$name: String!
|
||||||
|
$createdBy: String
|
||||||
|
) @auth(level: USER) {
|
||||||
|
costCenter_insert(
|
||||||
|
data: {
|
||||||
|
name: $name
|
||||||
|
createdBy: $createdBy
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# UPDATE COST CENTER
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
mutation updateCostCenter(
|
||||||
|
$id: UUID!
|
||||||
|
$name: String
|
||||||
|
) @auth(level: USER) {
|
||||||
|
costCenter_update(
|
||||||
|
id: $id
|
||||||
|
data: {
|
||||||
|
name: $name
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# DELETE COST CENTER
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
mutation deleteCostCenter($id: UUID!) @auth(level: USER) {
|
||||||
|
costCenter_delete(id: $id)
|
||||||
|
}
|
||||||
47
backend/dataconnect/connector/costCenter/queries.gql
Normal file
47
backend/dataconnect/connector/costCenter/queries.gql
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# LIST ALL COST CENTERS
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
query listCostCenters(
|
||||||
|
$offset: Int
|
||||||
|
$limit: Int
|
||||||
|
) @auth(level: USER) {
|
||||||
|
costCenters(offset: $offset, limit: $limit) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
createdAt
|
||||||
|
updatedAt
|
||||||
|
createdBy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# GET BY ID
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
query getCostCenterById($id: UUID!) @auth(level: USER) {
|
||||||
|
costCenter(id: $id) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
createdAt
|
||||||
|
updatedAt
|
||||||
|
createdBy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
# GET COST CENTER LINKED TO A SPECIFIC HUB
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
query getCostCenterByHubId($hubId: UUID!) @auth(level: USER) {
|
||||||
|
hubs(where: { id: { eq: $hubId } }) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
costCenterId
|
||||||
|
costCenter {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
createdAt
|
||||||
|
updatedAt
|
||||||
|
createdBy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,3 +39,24 @@ mutation updateHub(
|
|||||||
mutation deleteHub($id: UUID!) @auth(level: USER) {
|
mutation deleteHub($id: UUID!) @auth(level: USER) {
|
||||||
hub_delete(id: $id)
|
hub_delete(id: $id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutation assignCostCenterToHub(
|
||||||
|
$hubId: UUID!
|
||||||
|
$costCenterId: UUID!
|
||||||
|
) @auth(level: USER) {
|
||||||
|
hub_update(
|
||||||
|
id: $hubId
|
||||||
|
data: {
|
||||||
|
costCenterId: $costCenterId
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
mutation removeCostCenterFromHub($hubId: UUID!) @auth(level: USER) {
|
||||||
|
hub_update(
|
||||||
|
id: $hubId
|
||||||
|
data: {
|
||||||
|
costCenterId: null
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,11 @@ query listHubs @auth(level: USER) {
|
|||||||
address
|
address
|
||||||
nfcTagId
|
nfcTagId
|
||||||
ownerId
|
ownerId
|
||||||
|
costCenterId
|
||||||
|
costCenter {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
createdAt
|
createdAt
|
||||||
updatedAt
|
updatedAt
|
||||||
createdBy
|
createdBy
|
||||||
@@ -20,6 +25,11 @@ query getHubById($id: UUID!) @auth(level: USER) {
|
|||||||
address
|
address
|
||||||
nfcTagId
|
nfcTagId
|
||||||
ownerId
|
ownerId
|
||||||
|
costCenterId
|
||||||
|
costCenter {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
createdAt
|
createdAt
|
||||||
updatedAt
|
updatedAt
|
||||||
createdBy
|
createdBy
|
||||||
@@ -34,6 +44,11 @@ query getHubsByOwnerId($ownerId: UUID!) @auth(level: USER) {
|
|||||||
address
|
address
|
||||||
nfcTagId
|
nfcTagId
|
||||||
ownerId
|
ownerId
|
||||||
|
costCenterId
|
||||||
|
costCenter {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
createdAt
|
createdAt
|
||||||
updatedAt
|
updatedAt
|
||||||
createdBy
|
createdBy
|
||||||
@@ -58,5 +73,10 @@ query filterHubs(
|
|||||||
address
|
address
|
||||||
nfcTagId
|
nfcTagId
|
||||||
ownerId
|
ownerId
|
||||||
|
costCenterId
|
||||||
|
costCenter {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ mutation createInvoice(
|
|||||||
$vendorId: UUID!
|
$vendorId: UUID!
|
||||||
$businessId: UUID!
|
$businessId: UUID!
|
||||||
$orderId: UUID!
|
$orderId: UUID!
|
||||||
|
$shiftId: UUID
|
||||||
|
|
||||||
$paymentTerms: InovicePaymentTerms
|
$paymentTerms: InovicePaymentTerms
|
||||||
$invoiceNumber: String!
|
$invoiceNumber: String!
|
||||||
@@ -31,6 +32,7 @@ mutation createInvoice(
|
|||||||
vendorId: $vendorId
|
vendorId: $vendorId
|
||||||
businessId: $businessId
|
businessId: $businessId
|
||||||
orderId: $orderId
|
orderId: $orderId
|
||||||
|
shiftId: $shiftId
|
||||||
|
|
||||||
paymentTerms: $paymentTerms
|
paymentTerms: $paymentTerms
|
||||||
invoiceNumber: $invoiceNumber
|
invoiceNumber: $invoiceNumber
|
||||||
@@ -61,6 +63,7 @@ mutation updateInvoice(
|
|||||||
$vendorId: UUID
|
$vendorId: UUID
|
||||||
$businessId: UUID
|
$businessId: UUID
|
||||||
$orderId: UUID
|
$orderId: UUID
|
||||||
|
$shiftId: UUID
|
||||||
|
|
||||||
$paymentTerms: InovicePaymentTerms
|
$paymentTerms: InovicePaymentTerms
|
||||||
$invoiceNumber: String
|
$invoiceNumber: String
|
||||||
@@ -92,6 +95,7 @@ mutation updateInvoice(
|
|||||||
vendorId: $vendorId
|
vendorId: $vendorId
|
||||||
businessId: $businessId
|
businessId: $businessId
|
||||||
orderId: $orderId
|
orderId: $orderId
|
||||||
|
shiftId: $shiftId
|
||||||
|
|
||||||
paymentTerms: $paymentTerms
|
paymentTerms: $paymentTerms
|
||||||
invoiceNumber: $invoiceNumber
|
invoiceNumber: $invoiceNumber
|
||||||
@@ -121,3 +125,39 @@ mutation updateInvoice(
|
|||||||
mutation deleteInvoice($id: UUID!) @auth(level: USER) {
|
mutation deleteInvoice($id: UUID!) @auth(level: USER) {
|
||||||
invoice_delete(id: $id)
|
invoice_delete(id: $id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# APPROVE INVOICE
|
||||||
|
# Called by the client to approve a shift-day completion record.
|
||||||
|
# Sets status to APPROVED, triggering the invoice-ready state.
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
mutation approveInvoice($id: UUID!) @auth(level: USER) {
|
||||||
|
invoice_update(
|
||||||
|
id: $id
|
||||||
|
data: {
|
||||||
|
status: APPROVED
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# DISPUTE INVOICE
|
||||||
|
# Called by the client to dispute a shift-day completion record.
|
||||||
|
# Sets status to DISPUTED and stores the dispute details.
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
mutation disputeInvoice(
|
||||||
|
$id: UUID!
|
||||||
|
$disputedItems: Any
|
||||||
|
$disputeReason: String!
|
||||||
|
$disputeDetails: String
|
||||||
|
) @auth(level: USER) {
|
||||||
|
invoice_update(
|
||||||
|
id: $id
|
||||||
|
data: {
|
||||||
|
status: DISPUTED
|
||||||
|
disputedItems: $disputedItems
|
||||||
|
disputeReason: $disputeReason
|
||||||
|
disputeDetails: $disputeDetails
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ query listInvoices(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -74,6 +75,7 @@ query getInvoiceById($id: UUID!) @auth(level: USER) {
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -144,6 +146,7 @@ query listInvoicesByVendorId(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -214,6 +217,7 @@ query listInvoicesByBusinessId(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -284,6 +288,7 @@ query listInvoicesByOrderId(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -354,6 +359,7 @@ query listInvoicesByStatus(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -407,11 +413,14 @@ query listInvoicesByStatus(
|
|||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# FILTER INVOICES (multi filters)
|
# FILTER INVOICES (multi filters)
|
||||||
# NOTE: Timestamp filters use ge/le (NOT gte/lte)
|
# NOTE: Timestamp filters use ge/le (NOT gte/lte)
|
||||||
|
# Supports shiftId filter — use with status: PENDING_REVIEW to list
|
||||||
|
# shift-day completion records awaiting client approval.
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
query filterInvoices(
|
query filterInvoices(
|
||||||
$vendorId: UUID
|
$vendorId: UUID
|
||||||
$businessId: UUID
|
$businessId: UUID
|
||||||
$orderId: UUID
|
$orderId: UUID
|
||||||
|
$shiftId: UUID
|
||||||
$status: InvoiceStatus
|
$status: InvoiceStatus
|
||||||
|
|
||||||
$issueDateFrom: Timestamp
|
$issueDateFrom: Timestamp
|
||||||
@@ -428,6 +437,7 @@ query filterInvoices(
|
|||||||
vendorId: { eq: $vendorId }
|
vendorId: { eq: $vendorId }
|
||||||
businessId: { eq: $businessId }
|
businessId: { eq: $businessId }
|
||||||
orderId: { eq: $orderId }
|
orderId: { eq: $orderId }
|
||||||
|
shiftId: { eq: $shiftId }
|
||||||
status: { eq: $status }
|
status: { eq: $status }
|
||||||
|
|
||||||
issueDate: { ge: $issueDateFrom, le: $issueDateTo }
|
issueDate: { ge: $issueDateFrom, le: $issueDateTo }
|
||||||
@@ -443,6 +453,7 @@ query filterInvoices(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
@@ -517,6 +528,7 @@ query listOverdueInvoices(
|
|||||||
vendorId
|
vendorId
|
||||||
businessId
|
businessId
|
||||||
orderId
|
orderId
|
||||||
|
shiftId
|
||||||
|
|
||||||
paymentTerms
|
paymentTerms
|
||||||
invoiceNumber
|
invoiceNumber
|
||||||
|
|||||||
@@ -100,3 +100,26 @@ mutation updateOrder(
|
|||||||
mutation deleteOrder($id: UUID!) @auth(level: USER) {
|
mutation deleteOrder($id: UUID!) @auth(level: USER) {
|
||||||
order_delete(id: $id)
|
order_delete(id: $id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutation assignHubManagerToOrder(
|
||||||
|
$orderId: UUID!
|
||||||
|
$hubManagerId: UUID!
|
||||||
|
) @auth(level: USER) {
|
||||||
|
order_update(
|
||||||
|
id: $orderId
|
||||||
|
data: {
|
||||||
|
hubManagerId: $hubManagerId
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
mutation removeHubManagerFromOrder(
|
||||||
|
$orderId: UUID!
|
||||||
|
) @auth(level: USER) {
|
||||||
|
order_update(
|
||||||
|
id: $orderId
|
||||||
|
data: {
|
||||||
|
hubManagerId: null
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
@@ -48,6 +48,18 @@ query listOrders(
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,6 +110,18 @@ query getOrderById($id: UUID!) @auth(level: USER) {
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,6 +180,18 @@ query getOrdersByBusinessId(
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,6 +250,18 @@ query getOrdersByVendorId(
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,6 +320,18 @@ query getOrdersByStatus(
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,6 +393,18 @@ query getOrdersByDateRange(
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -390,6 +462,18 @@ query getRapidOrders(
|
|||||||
hubName
|
hubName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -528,3 +612,27 @@ query listCompletedOrdersByBusinessAndDateRange(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# GET HUB MANAGER ASSIGNED TO AN ORDER
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
query getHubManagerByOrderId($orderId: UUID!) @auth(level: USER) {
|
||||||
|
order(id: $orderId) {
|
||||||
|
id
|
||||||
|
hubManagerId
|
||||||
|
hubManager {
|
||||||
|
id
|
||||||
|
role
|
||||||
|
title
|
||||||
|
department
|
||||||
|
teamHubId
|
||||||
|
isActive
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,129 +0,0 @@
|
|||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 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)
|
|
||||||
}
|
|
||||||
@@ -1,417 +0,0 @@
|
|||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -31,6 +31,42 @@ mutation updateStaffDocument(
|
|||||||
data: {
|
data: {
|
||||||
status: $status
|
status: $status
|
||||||
documentUrl: $documentUrl
|
documentUrl: $documentUrl
|
||||||
|
expiryDate: $expiryDate
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# UPSERT STAFF DOCUMENT
|
||||||
|
# Creates the document record if it does not exist, or updates
|
||||||
|
# it if it already exists (matched by staffId + documentId key).
|
||||||
|
# Use this when uploading a document for the first time or
|
||||||
|
# re-uploading/updating an existing one.
|
||||||
|
#
|
||||||
|
# To update multiple documents in a single network call, use
|
||||||
|
# aliased mutations in one GraphQL request from the client:
|
||||||
|
#
|
||||||
|
# mutation {
|
||||||
|
# doc1: upsertStaffDocument(staffId: $id, staffName: $name, documentId: $d1, ...)
|
||||||
|
# doc2: upsertStaffDocument(staffId: $id, staffName: $name, documentId: $d2, ...)
|
||||||
|
# }
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
mutation upsertStaffDocument(
|
||||||
|
$staffId: UUID!
|
||||||
|
$staffName: String!
|
||||||
|
$documentId: UUID!
|
||||||
|
$status: DocumentStatus!
|
||||||
|
$documentUrl: String
|
||||||
|
$expiryDate: Timestamp
|
||||||
|
) @auth(level: USER) {
|
||||||
|
staffDocument_upsert(
|
||||||
|
data: {
|
||||||
|
staffId: $staffId
|
||||||
|
staffName: $staffName
|
||||||
|
documentId: $documentId
|
||||||
|
status: $status
|
||||||
|
documentUrl: $documentUrl
|
||||||
|
expiryDate: $expiryDate
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,3 +64,35 @@ query getTeamMembersByTeamId($teamId: UUID!) @auth(level: USER) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query getHubManagersByTeamHubId($teamHubId: UUID!) @auth(level: USER) {
|
||||||
|
teamMembers(
|
||||||
|
where: {
|
||||||
|
teamHubId: { eq: $teamHubId }
|
||||||
|
role: { eq: MANAGER }
|
||||||
|
isActive: { eq: true }
|
||||||
|
inviteStatus: { eq: ACCEPTED }
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
id
|
||||||
|
teamId
|
||||||
|
role
|
||||||
|
title
|
||||||
|
department
|
||||||
|
teamHubId
|
||||||
|
isActive
|
||||||
|
createdAt
|
||||||
|
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
fullName
|
||||||
|
email
|
||||||
|
photoUrl
|
||||||
|
}
|
||||||
|
|
||||||
|
teamHub {
|
||||||
|
id
|
||||||
|
hubName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ enum ValidationStatus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type Certificate @table(name: "certificates") {
|
type Certificate @table(name: "certificates", key: ["staffId", "certificationType"]) {
|
||||||
id: UUID! @default(expr: "uuidV4()")
|
id: UUID! @default(expr: "uuidV4()")
|
||||||
|
|
||||||
name: String!
|
name: String!
|
||||||
@@ -39,7 +39,7 @@ type Certificate @table(name: "certificates") {
|
|||||||
status: CertificateStatus!
|
status: CertificateStatus!
|
||||||
fileUrl: String
|
fileUrl: String
|
||||||
icon: String
|
icon: String
|
||||||
certificationType: ComplianceType
|
certificationType: ComplianceType!
|
||||||
issuer: String #Issuing Authority
|
issuer: String #Issuing Authority
|
||||||
certificateNumber: String
|
certificateNumber: String
|
||||||
|
|
||||||
|
|||||||
7
backend/dataconnect/schema/costCenter.gql
Normal file
7
backend/dataconnect/schema/costCenter.gql
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
type CostCenter @table(name: "cost_centers") {
|
||||||
|
id: UUID! @default(expr: "uuidV4()")
|
||||||
|
name: String!
|
||||||
|
createdAt: Timestamp @default(expr: "request.time")
|
||||||
|
updatedAt: Timestamp @default(expr: "request.time")
|
||||||
|
createdBy: String
|
||||||
|
}
|
||||||
@@ -5,6 +5,8 @@ type Hub @table(name: "hubs") {
|
|||||||
address: String
|
address: String
|
||||||
nfcTagId: String
|
nfcTagId: String
|
||||||
ownerId: UUID!
|
ownerId: UUID!
|
||||||
|
costCenterId: UUID
|
||||||
|
costCenter: CostCenter @ref(fields: "costCenterId", references: "id")
|
||||||
createdAt: Timestamp @default(expr: "request.time")
|
createdAt: Timestamp @default(expr: "request.time")
|
||||||
updatedAt: Timestamp @default(expr: "request.time")
|
updatedAt: Timestamp @default(expr: "request.time")
|
||||||
createdBy: String
|
createdBy: String
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ type Invoice @table(name: "invoices") {
|
|||||||
orderId: UUID!
|
orderId: UUID!
|
||||||
order: Order! @ref(fields: "orderId", references: "id")
|
order: Order! @ref(fields: "orderId", references: "id")
|
||||||
|
|
||||||
|
shiftId: UUID
|
||||||
|
shift: Shift @ref(fields: "shiftId", references: "id")
|
||||||
|
|
||||||
#web
|
#web
|
||||||
paymentTerms: InovicePaymentTerms
|
paymentTerms: InovicePaymentTerms
|
||||||
invoiceNumber: String!
|
invoiceNumber: String!
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
# --- Environment & Variables ---
|
# --- Environment & Variables ---
|
||||||
|
|
||||||
# Flutter check
|
# Flutter check
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
FLUTTER := flutter
|
||||||
|
else
|
||||||
FLUTTER := $(shell which flutter)
|
FLUTTER := $(shell which flutter)
|
||||||
|
endif
|
||||||
|
|
||||||
# Firebase & GCP Configuration
|
# Firebase & GCP Configuration
|
||||||
GCP_DEV_PROJECT_ID := krow-workforce-dev
|
GCP_DEV_PROJECT_ID := krow-workforce-dev
|
||||||
|
|||||||
Reference in New Issue
Block a user