diff --git a/lib/helpers/services/api_endpoints.dart b/lib/helpers/services/api_endpoints.dart index 04823ee..fae25cf 100644 --- a/lib/helpers/services/api_endpoints.dart +++ b/lib/helpers/services/api_endpoints.dart @@ -2,8 +2,7 @@ class ApiEndpoints { static const String baseUrl = "https://stageapi.marcoaiot.com/api"; // static const String baseUrl = "https://api.marcoaiot.com/api"; // static const String baseUrl = "https://devapi.marcoaiot.com/api"; - // static const String baseUrl = "https://mapi.marcoaiot.com/api"; - + // static const String baseUrl = "https://mapi.marcoaiot.com/api"; static const String getMasterCurrencies = "/Master/currencies/list"; static const String getMasterExpensesCategories = @@ -140,6 +139,8 @@ class ApiEndpoints { static const String getServiceProjectsList = "/serviceproject/list"; static const String getServiceProjectDetail = "/serviceproject/details"; static const String getServiceProjectJobList = "/serviceproject/job/list"; - static const String getServiceProjectJobDetail = "/serviceproject/job/details"; + static const String getServiceProjectJobDetail = + "/serviceproject/job/details"; + static const String editServiceProjectJob = "/serviceproject/job/edit"; static const String createServiceProjectJob = "/serviceproject/job/create"; } diff --git a/lib/helpers/services/api_service.dart b/lib/helpers/services/api_service.dart index 9caa30e..6ddca9e 100644 --- a/lib/helpers/services/api_service.dart +++ b/lib/helpers/services/api_service.dart @@ -307,35 +307,83 @@ class ApiService { } // Service Project Module APIs + /// Edit a Service Project Job + static Future editServiceProjectJobApi({ + required String jobId, + required List> + operations, + }) async { + final endpoint = "${ApiEndpoints.editServiceProjectJob}/$jobId"; + logSafe("Editing Service Project Job: $jobId with operations: $operations"); -/// Get details for a single Service Project Job -static Future getServiceProjectJobDetailApi(String jobId) async { - final endpoint = "${ApiEndpoints.getServiceProjectJobDetail}/$jobId"; - logSafe("Fetching Job Detail for Job ID: $jobId"); - - try { - final response = await _getRequest(endpoint); - if (response == null) { - logSafe("Service Project Job Detail request failed: null response", level: LogLevel.error); - return null; + try { + // PATCH request is usually similar to PUT, but with http.patch + String? token = await _getToken(); + if (token == null) return false; + + final uri = Uri.parse("${ApiEndpoints.baseUrl}$endpoint"); + + final headers = _headers(token); + + final response = await http + .patch(uri, headers: headers, body: jsonEncode(operations)) + .timeout(extendedTimeout); + + logSafe( + "Edit Service Project Job response status: ${response.statusCode}"); + logSafe("Edit Service Project Job response body: ${response.body}"); + + final json = jsonDecode(response.body); + + if (response.statusCode == 200 && json['success'] == true) { + logSafe("Service Project Job edited successfully: ${json['data']}"); + return true; + } else { + logSafe( + "Failed to edit Service Project Job: ${json['message'] ?? 'Unknown error'}", + level: LogLevel.warning, + ); + return false; + } + } catch (e, stack) { + logSafe("Exception during editServiceProjectJobApi: $e", + level: LogLevel.error); + logSafe("StackTrace: $stack", level: LogLevel.debug); + return false; } - - final jsonResponse = _parseResponseForAllData( - response, - label: "Service Project Job Detail", - ); - - if (jsonResponse != null) { - return JobDetailsResponse.fromJson(jsonResponse); - } - } catch (e, stack) { - logSafe("Exception during getServiceProjectJobDetailApi: $e", level: LogLevel.error); - logSafe("StackTrace: $stack", level: LogLevel.debug); } - - return null; -} + + /// Get details for a single Service Project Job + static Future getServiceProjectJobDetailApi( + String jobId) async { + final endpoint = "${ApiEndpoints.getServiceProjectJobDetail}/$jobId"; + logSafe("Fetching Job Detail for Job ID: $jobId"); + + try { + final response = await _getRequest(endpoint); + if (response == null) { + logSafe("Service Project Job Detail request failed: null response", + level: LogLevel.error); + return null; + } + + final jsonResponse = _parseResponseForAllData( + response, + label: "Service Project Job Detail", + ); + + if (jsonResponse != null) { + return JobDetailsResponse.fromJson(jsonResponse); + } + } catch (e, stack) { + logSafe("Exception during getServiceProjectJobDetailApi: $e", + level: LogLevel.error); + logSafe("StackTrace: $stack", level: LogLevel.debug); + } + + return null; + } /// Create a new Service Project Job static Future createServiceProjectJobApi({