updateTicketWithMultipleLicenses method
Update ticket with MULTIPLE driving license files PUBLIC method - called by JobService
Implementation
Future<Map<String, dynamic>> updateTicketWithMultipleLicenses({
required String ticketID,
required int numberOfPeople,
required List<File> licenseFiles,
required String employeeFieldID,
required String licenseFieldID,
}) async {
try {
print('Updating ticket with multiple licenses');
print('Ticket ID: $ticketID');
print('Number of People: $numberOfPeople');
print('License Files: ${licenseFiles.length}');
const mutation = r'''
mutation UpdateTicket($input: UpdateProjectTicketInput!) {
updateProjectTicket(input: $input) {
success
message
projectTicket {
id
ticketNumber
customValues
documentFiles {
url
filename
type
label
size
}
updatedAt
}
}
}
''';
// Create custom files array - one entry per license file
final customFiles = licenseFiles.map((file) => {
'fieldID': licenseFieldID,
'file': null, // Files will be added via multipart
}).toList();
final Map<String, dynamic> input = {
'id': ticketID,
'customValues': jsonEncode({
'cf_$employeeFieldID': numberOfPeople,
}),
'customFiles': customFiles,
};
final variables = {'input': input};
// Use BaasApi to upload multiple documents
final result = await _api.uploadTicketWithMultipleDocuments(
mutation: mutation,
variables: variables,
filePaths: licenseFiles.map((f) => f.path).toList(),
fieldID: licenseFieldID,
);
final ticketResponse = result['updateProjectTicket'];
if (ticketResponse != null) {
print(' Ticket updated with ${licenseFiles.length} licenses successfully');
return ticketResponse;
}
return {'success': false, 'message': 'Unknown error - no response data'};
} catch (e) {
print('Error updating ticket with multiple licenses: $e');
return {'success': false, 'message': e.toString()};
}
}