# ==========================================================
# StaffAvailabilityStats - QUERIES
# ==========================================================
# Notes:
# - Entity key is composite: key: ["staffId"]
# - So the single-record lookup is: staffAvailabilityStats(key: { staffId: ... })
# - There is no Query.staffAvailabilityStat(id: ...) unless you defined id as the key.
# ==========================================================

# ----------------------------------------------------------
# LIST ALL (admin/debug)
# ----------------------------------------------------------
query listStaffAvailabilityStats(
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  staffAvailabilityStatss(offset: $offset, limit: $limit) {
    id
    staffId
    needWorkIndex
    utilizationPercentage
    predictedAvailabilityScore
    scheduledHoursThisPeriod
    desiredHoursThisPeriod
    lastShiftDate
    acceptanceRate
    createdAt
    updatedAt
    createdBy

    staff {
      id
      fullName
    }
  }
}

# ----------------------------------------------------------
# GET BY KEY (staffId)
# ----------------------------------------------------------
query getStaffAvailabilityStatsByStaffId(
  $staffId: UUID!
) @auth(level: USER) {
  staffAvailabilityStats(key: { staffId: $staffId }) {
    id
    staffId
    needWorkIndex
    utilizationPercentage
    predictedAvailabilityScore
    scheduledHoursThisPeriod
    desiredHoursThisPeriod
    lastShiftDate
    acceptanceRate
    createdAt
    updatedAt
    createdBy

    staff {
      id
      fullName
    }
  }
}

# ----------------------------------------------------------
# FILTER (optional) - useful for dashboards
# NOTE: Data Connect filter ops are typically: eq, ne, gt, ge, lt, le, in, isNull
# ----------------------------------------------------------
query filterStaffAvailabilityStats(
  $needWorkIndexMin: Int
  $needWorkIndexMax: Int
  $utilizationMin: Int
  $utilizationMax: Int
  $acceptanceRateMin: Int
  $acceptanceRateMax: Int
  $lastShiftAfter: Timestamp
  $lastShiftBefore: Timestamp
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  staffAvailabilityStatss(
    where: {
      needWorkIndex: { ge: $needWorkIndexMin, le: $needWorkIndexMax }
      utilizationPercentage: { ge: $utilizationMin, le: $utilizationMax }
      acceptanceRate: { ge: $acceptanceRateMin, le: $acceptanceRateMax }
      lastShiftDate: { ge: $lastShiftAfter, le: $lastShiftBefore }
    }
    offset: $offset
    limit: $limit
  ) {
    id
    staffId
    needWorkIndex
    utilizationPercentage
    predictedAvailabilityScore
    scheduledHoursThisPeriod
    desiredHoursThisPeriod
    lastShiftDate
    acceptanceRate
    createdAt
    updatedAt
    createdBy

    staff {
      id
      fullName
    }
  }
}
