import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/etqan_ovr/etqan_get_employee_incident_report.dart'; import 'package:mohem_flutter_app/models/etqan_ovr/etqan_get_requests_model.dart'; import 'package:mohem_flutter_app/models/etqan_ovr/etqan_getprojects_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_department_sections.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_project_departments.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_projects.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_section_topics.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_details.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_transaction_attachment_model.dart'; class EtqanApiClient { static final EtqanApiClient _instance = EtqanApiClient._internal(); EtqanApiClient._internal(); factory EtqanApiClient() => _instance; Future> getEtqanProjects() async { String url = "${ApiConsts.cocRest}ETQAN_GetProjects"; Map postParams = {"P_SELECTED_EMPLOYEE_NUMBER": AppState().memberInformationList?.eMPLOYEENUMBER}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( (json) { List? responseData = []; if (json["ETQAN_GetProjects_Response"] != null && json["ETQAN_GetProjects_Response"].isNotEmpty) { json["ETQAN_GetProjects_Response"].forEach((element) { responseData.add(EtqanGetProjectsResponse.fromJson(element)); }); } return responseData; }, url, postParams, ); } Future> getEmployeeEtqanRequests() async { String url = "${ApiConsts.cocRest}ETQAN_GetEmployeeOVRRequests"; Map postParams = { "ETQAN_EmployeeID": AppState().memberInformationList?.eMPLOYEENUMBER, "P_SELECTED_EMPLOYEE_NUMBER": AppState().memberInformationList?.eMPLOYEENUMBER, }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( (json) { List responseData = []; if (json["ETQAN_GetEmployeeOVRRequests_Response"] != null && json["ETQAN_GetEmployeeOVRRequests_Response"].isNotEmpty) { json["ETQAN_GetEmployeeOVRRequests_Response"].forEach((element) { responseData.add(EtqanGetEmployeeOvrRequestsResponse.fromJson(element)); }); } if (responseData.isNotEmpty) { for (EtqanGetEmployeeOvrRequestsResponse action in responseData) { action.createdDate = action.createdDate?.split(" ")[0]; } responseData.sort((EtqanGetEmployeeOvrRequestsResponse a, EtqanGetEmployeeOvrRequestsResponse b) => (b.createdDate ?? '').compareTo(a.createdDate ?? '')); } return responseData; }, url, postParams, ); } Future> getEtqanIncidentRequests(String ticketNo) async { String url = "${ApiConsts.cocRest}ETQAN_GetIncidentRequest"; Map postParams = {"ETQAN_TicketNumber": ticketNo, "P_SELECTED_EMPLOYEE_NUMBER": AppState().memberInformationList?.eMPLOYEENUMBER}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( (json) { List responseData = []; if (json["ETQAN_GetIncidentRequest_Response"] != null && json["ETQAN_GetIncidentRequest_Response"].isNotEmpty) { json["ETQAN_GetIncidentRequest_Response"].forEach((element) { responseData.add(EtqanGetIncidentRequestResponse.fromJson(element)); }); } return responseData; }, url, postParams, ); } Future createRequest(String description, int? projectID, String? attachmentBase64) async { String url = "${ApiConsts.cocRest}ETQAN_CreateIncident"; Map postParams = { "P_SELECTED_EMPLOYEE_NUMBER": AppState().memberInformationList?.eMPLOYEENUMBER, "P_USER_NAME": AppState().memberInformationList?.eMPLOYEENUMBER, "ETQAN_Emp_EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ETQAN_Description": description, "ETQAN_ProjectId": projectID, "ETQAN_FileInfoBase64": attachmentBase64, "ETQAN_IsAnonymous": false, }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( (json) { if (json["ETQAN_CreateIncident_Response"] != null) { var response = json["ETQAN_CreateIncident_Response"]; if (response["id"] != null && response["ticketNumber"] != null) { return 1; } return null; } return null; // "ETQAN_CreateIncident_Response": { // "id": "00adabe4-4a32-4b35-1f00-08de4d152e7c", // "ticketNumber": "OVR/OLY/2026/224" // }, }, url, postParams, ); } }