getAllTickets method

Future<Map<String, dynamic>> getAllTickets({
  1. required String projectID,
  2. required String tenantProductID,
  3. List<String>? trackerIDs,
})

Fetch all tickets with employee profiles (for employer home screen)

Implementation

Future<Map<String, dynamic>> getAllTickets({
  required String projectID,
  required String tenantProductID,
  List<String>? trackerIDs,
}) async {
  const query = r'''
    query getAllTickets($projectID: UUID!, $tenantProductID: UUID!, $trackerIDs: [UUID!]) {
      projectTickets(projectID: $projectID, tenantProductID: $tenantProductID, filters: { trackerIDs: $trackerIDs }) {
        success
        message
        total
        projectTickets {
          id
          ticketNumber
          subject
          description
          tracker {
            id
            name
          }
          status {
            id
            name
          }
          priority {
            id
            name
          }
          userAuthor {
            id
            username
            email
          }
          tenantAuthor {
            id
            username
            email
            firstName
            lastName
            phoneNumber
            location
            language
            profile_Photo
            image
            video
            createdAt
            updatedAt
          }
          assignee {
            id
            username
            email
            firstName
            lastName
            phoneNumber
            location
            language
            profile_Photo
          }
          customValues
          totalTimeSpent
          hasActiveTimer
          canEdit
          canDelete
          createdAt
          updatedAt
        }
      }
    }
  ''';

  final variables = {
    'projectID': projectID,
    'tenantProductID': tenantProductID,
    if (trackerIDs != null && trackerIDs.isNotEmpty) 'trackerIDs': trackerIDs,
  };

  print("Fetching all tickets with variables: $variables");

  final result = await _api.graphql(query, variables);

  final ticketsResponse = result['projectTickets'];
  if (ticketsResponse != null) {
    print("getAllTickets service returning: ${ticketsResponse['total']} tickets");
    return ticketsResponse;
  }

  return {
    'success': false,
    'message': 'Failed to fetch tickets'
  };
}