query listApplications @auth(level: USER) {
  applications {
    id
    shiftId
    staffId
    status
    appliedAt
    checkInTime
    checkOutTime
    origin
    createdAt

    shift {
      id
      title
      date
      startTime
      endTime
      location
      status

      order {
        id
        eventName
        #location

        teamHub {
          address
          placeId
          hubName
        }
      
        business {
          id
          businessName
          email
          contactName
        }
        vendor {
          id
          companyName
        }
      }

    }

    shiftRole {
      id
      roleId
      count
      assigned
      startTime
      endTime
      hours
      totalValue
      role {
        id
        name
        costPerHour
      }
    }
  }
}

query getApplicationById($id: UUID!) @auth(level: USER) {
  application(id: $id) {
    id
    shiftId
    staffId
    status
    appliedAt
    checkInTime
    checkOutTime
    origin
    createdAt
    shift {
      id
      title
      date
      startTime
      endTime
      location
      status

      order {
        id
        eventName
        #location

        teamHub {
          address
          placeId
          hubName
        }
      
        business {
          id
          businessName
          email
          contactName
        }
        vendor {
          id
          companyName
        }
      }

    }

    shiftRole {
      id
      roleId
      count
      assigned
      startTime
      endTime
      hours
      totalValue
      role {
        id
        name
        costPerHour
      }
    }
  }
}

query getApplicationsByShiftId($shiftId: UUID!) @auth(level: USER) {
  applications(where: { shiftId: { eq: $shiftId } }) {
    id
    shiftId
    staffId
    status
    appliedAt
    checkInTime
    checkOutTime
    origin
    createdAt

    shift {
      id
      title
      date
      startTime
      endTime
      location
      status

      order {
        id
        eventName
        #location

        teamHub {
          address
          placeId
          hubName
        }
      
        business {
          id
          businessName
          email
          contactName
        }
        vendor {
          id
          companyName
        }
      }

    }

    shiftRole {
      id
      roleId
      count
      assigned
      startTime
      endTime
      hours
      totalValue
      role {
        id
        name
        costPerHour
      }
    }

  }
}

query getApplicationsByShiftIdAndStatus(
  $shiftId: UUID!
  $status: ApplicationStatus!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  applications(
    where: {
      shiftId: { eq: $shiftId }
      status: { eq: $status }
    }
    offset: $offset
    limit: $limit
  ) {
    id
    shiftId
    staffId
    status
    appliedAt
    checkInTime
    checkOutTime
    origin
    createdAt

    shift {
      id
      title
      date
      startTime
      endTime
      location
      status

      order {
        id
        eventName
        #location

        teamHub {
          address
          placeId
          hubName
        }
      
        business {
          id
          businessName
          email
          contactName
        }
        vendor {
          id
          companyName
        }
      }
    }

    shiftRole {
      id
      roleId
      count
      assigned
      startTime
      endTime
      hours
      totalValue
      role {
        id
        name
        costPerHour
      }
    }
  }
}

query getApplicationsByStaffId(
  $staffId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  applications(
    where: { staffId: { eq: $staffId } }
    offset: $offset
    limit: $limit
  ) {
    id
    shiftId
    staffId
    status
    appliedAt
    checkInTime
    checkOutTime
    origin
    createdAt

    shift {
      id
      title
      date
      startTime
      endTime
      location
      status

      order {
        id
        eventName
        #location

        teamHub {
          address
          placeId
          hubName
        }
      
        business {
          id
          businessName
          email
          contactName
        }
        vendor {
          id
          companyName
        }
      }

    }

    shiftRole {
      id
      roleId
      count
      assigned
      startTime
      endTime
      hours
      totalValue
      role {
        id
        name
        costPerHour
      }
    }

  }
}

#getting staffs of an shiftrole ACCEPTED for orders view client
query listAcceptedApplicationsByShiftRoleKey(
  $shiftId: UUID!
  $roleId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  applications(
    where: {
      shiftId: { eq: $shiftId }
      roleId: { eq: $roleId }
      status: { eq: ACCEPTED }
    }
    offset: $offset
    limit: $limit
    orderBy: { appliedAt: ASC }
  ) {
    id
    checkInTime
    checkOutTime
    staff { id fullName email phone photoUrl }
  }
}

#getting staffs of an shiftrole ACCEPTED for orders of the day view client 
query listAcceptedApplicationsByBusinessForDay(
  $businessId: UUID!
  $dayStart: Timestamp!
  $dayEnd: Timestamp!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  applications(
    where: {
      #status: { eq: ACCEPTED }
      status: { in: [ACCEPTED, CONFIRMED, CHECKED_IN, CHECKED_OUT, LATE] }
      shift: {
        date: { ge: $dayStart, le: $dayEnd }
        order: { businessId: { eq: $businessId } }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { appliedAt: ASC }
  ) {
    id
    shiftId
    roleId
    checkInTime
    checkOutTime
    appliedAt
    staff { id fullName email phone photoUrl averageRating }
  }
}

#coverage list and today live
query listStaffsApplicationsByBusinessForDay(
  $businessId: UUID!
  $dayStart: Timestamp!
  $dayEnd: Timestamp!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  applications(
    where: {
      status: {in: [ACCEPTED, CONFIRMED, CHECKED_IN, CHECKED_OUT, LATE]}
      shift: {
        date: { ge: $dayStart, le: $dayEnd }
        order: { businessId: { eq: $businessId } }
        #status: { eq: ACCEPTED }
      }
    }
    offset: $offset
    limit: $limit
    orderBy: { appliedAt: ASC }
  ) {
    id
    shiftId
    roleId
    checkInTime
    checkOutTime
    appliedAt
    status

    shiftRole{
      shift{
        location
        cost
      }
      count
      assigned
      hours
      
      role{
        name
      }
    }
    staff { id fullName email phone photoUrl }
  }
}