query getShiftRoleById(
    $shiftId: UUID!
    $roleId: UUID!
  ) @auth(level: USER) {
  shiftRole(key: { shiftId: $shiftId, roleId: $roleId }) {
    id
    shiftId
    roleId
    count
    assigned
    startTime
    endTime
    hours
    department
    uniform
    breakType
    isBreakPaid
    totalValue
    createdAt

    role {
      id
      name
      costPerHour
    }

    shift{
      location
      locationAddress
      description
      latitude
      longitude
      orderId

      order{
        recurringDays
        permanentDays
        notes

        business{
          id
          businessName
          companyLogoUrl
        }

        vendor{
          id
          companyName
        }

        teamHub{
          hubName
        }

      }
    }
  }
}

query listShiftRolesByShiftId(
  $shiftId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: { shiftId: { eq: $shiftId } }
    offset: $offset
    limit: $limit
  ) {
    id
    shiftId
    roleId
    count
    assigned
    startTime
    endTime
    hours
    department
    uniform
    breakType
    isBreakPaid
    totalValue
    createdAt

    role {
      id
      name
      costPerHour
    }

    shift{
      location
      locationAddress
      description
      latitude
      longitude
      orderId

      order{
        recurringDays
        permanentDays
        notes

        business{
          id
          businessName
        }

        vendor{
          id
          companyName
        }

      }
    }
  }
}

query listShiftRolesByRoleId(
  $roleId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: { roleId: { eq: $roleId } }
    offset: $offset
    limit: $limit
  ) {
    id
    shiftId
    roleId
    count
    assigned
    startTime
    endTime
    hours
    department
    uniform
    breakType
    isBreakPaid
    totalValue
    createdAt

    role {
      id
      name
      costPerHour
    }

    shift{
      location
      locationAddress
      description
      latitude
      longitude
      orderId

      order{
        recurringDays
        permanentDays
        notes

        business{
          id
          businessName
        }

        vendor{
          id
          companyName
        }

      }
    }

  }
}

query listShiftRolesByShiftIdAndTimeRange(
  $shiftId: UUID!
  $start: Timestamp!
  $end: Timestamp!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: {
      shiftId: { eq: $shiftId }
      startTime: { ge: $start }
      endTime: { le: $end }
    }
    offset: $offset
    limit: $limit
  ) {
    id
    shiftId
    roleId
    count
    assigned
    startTime
    endTime
    hours
    department
    uniform
    breakType
    isBreakPaid
    totalValue
    createdAt

    role {
      id
      name
      costPerHour
    }

    shift{
      location
      locationAddress
      description
      latitude
      longitude
      orderId

      order{
        recurringDays
        permanentDays
        notes

        business{
          id
          businessName
        }

        vendor{
          id
          companyName
        }

      }
    }

  }
}

# ------------------------------------------------------------
# LIST SHIFT ROLES BY VENDOR (via Shift -> Order)
# ------------------------------------------------------------
query listShiftRolesByVendorId(
  $vendorId: UUID!

  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: {
      shift: {
        status: {in: [IN_PROGRESS, CONFIRMED, ASSIGNED, OPEN, PENDING]} #IN_PROGRESS? PENDING?
        order: {
          vendorId: { eq: $vendorId }
        }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { createdAt: DESC }
  ) {
    id
    shiftId
    roleId
    count
    assigned
    startTime
    endTime
    hours
    department
    uniform
    breakType
    isBreakPaid
    totalValue
    createdAt

    role {
      id
      name
      costPerHour
    }

    shift {
      id
      title
      date
      location
      locationAddress
      description
      latitude
      longitude
      orderId
      status
      durationDays

      order {
        id
        eventName
        vendorId
        businessId
        orderType
        status
        date
        recurringDays
        permanentDays
        notes

        business { id businessName }
        vendor { id companyName }
      }
    }

  }
}

#orders view client
query listShiftRolesByBusinessAndDateRange(
  $businessId: UUID!
  $start: Timestamp!
  $end: Timestamp!
  $offset: Int
  $limit: Int
  $status: ShiftStatus
) @auth(level: USER) {
  shiftRoles(
    where: {
      shift: {
        date: { ge: $start, le: $end }
        order: { businessId: { eq: $businessId } }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { createdAt: DESC }
  ) {
    shiftId
    roleId
    count
    assigned
    hours
    startTime
    endTime
    totalValue
    role { id name }
    shift {
      id
      date
      location
      locationAddress
      title
      status
      order { id eventName }
    }
  }
}

#list shiftsroles for update order in client app
query listShiftRolesByBusinessAndOrder(
  $businessId: UUID!
  $orderId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: {
      shift: {
        orderId: { eq: $orderId }
        order: { businessId: { eq: $businessId } }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { createdAt: DESC }
  ) {
    id
    shiftId
    roleId
    count
    assigned
    startTime
    endTime
    hours
    breakType
    isBreakPaid
    totalValue
    createdAt

    role { id name costPerHour }

    shift {
      id
      title
      date
      orderId
      location
      locationAddress

      order{
        vendorId
        eventName
        date
        #location

        teamHub {
          address
          placeId
          hubName
        }
      
      }
    }
  }
}

#reorder get list by businessId
query listShiftRolesByBusinessDateRangeCompletedOrders(
  $businessId: UUID!
  $start: Timestamp!
  $end: Timestamp!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: {
      shift: {
        date: { ge: $start, le: $end }
        order: {
          businessId: { eq: $businessId }
          status: { eq: COMPLETED }
        }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { createdAt: DESC }
  ) {
    shiftId
    roleId
    count
    assigned
    hours
    startTime
    endTime
    totalValue

    role {
      id
      name
      costPerHour
    }

    shift {
      id
      date
      location
      locationAddress
      title
      status

      order {
        id
        orderType
      }
    }
  }
}

#view for billing period
query listShiftRolesByBusinessAndDatesSummary(
  $businessId: UUID!
  $start: Timestamp!
  $end: Timestamp!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shiftRoles(
    where: {
      shift: {
        date: { ge: $start, le: $end }
        status: { eq: COMPLETED }
        order: { businessId: { eq: $businessId } }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { createdAt: DESC }
  ) {
    roleId
    hours
    totalValue
    role { id name }
  }
}

# ------------------------------------------------------------
# BUSINESS: GET COMPLETED SHIFTS FOR A BUSINESS (via order.businessId)
# ------------------------------------------------------------
#for spending insights in home view
query getCompletedShiftsByBusinessId(
  $businessId: UUID!
  $dateFrom: Timestamp!
  $dateTo: Timestamp!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  shifts(
    where: {
      order: { businessId: { eq: $businessId } }
      status: {in: [IN_PROGRESS, CONFIRMED, COMPLETED, OPEN]}
      date: { ge: $dateFrom, le: $dateTo }
    }
    offset: $offset
    limit: $limit
  ) {
    id
    #title

    #orderId

    date
    startTime
    endTime
    hours
    cost

    #location
    #locationAddress
    #latitude
    #longitude
    #description

    #status
    workersNeeded
    filled
    #filledAt

    #managers
    #durationDays

    createdAt

    order {
      #id
      #eventName
      status
      #orderType
      #businessId
      #vendorId
      #business { id businessName email contactName }
      #vendor { id companyName }
    }
  }
}
