import 'dart:convert'; import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/models/device/asset_search.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/asset_nd_auto_complete_by_dynamic_codes_model.dart'; import 'package:test_sa/modules/internal_audit_module/models/update_audit_form_model.dart'; import 'package:test_sa/modules/internal_audit_module/models/equipment_internal_audit_data_model.dart'; import 'package:test_sa/modules/internal_audit_module/models/equipment_internal_audit_form_model.dart'; import 'package:test_sa/modules/internal_audit_module/models/system_internal_audit_data_model.dart'; import 'package:test_sa/modules/internal_audit_module/models/system_internal_audit_form_model.dart'; import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart'; class InternalAuditProvider extends ChangeNotifier { final pageItemNumber = 10; final searchPageItemNumber = 10; int pageNo = 1; void reset() { pageNo = 1; stateCode = null; } int? stateCode; bool isDetailLoading = false; bool nextPage = false; bool isNextPageLoading = false; bool isLoading = false; Future getEquipmentInternalAuditById(int id) async { try { isLoading = true; notifyListeners(); Response response = await ApiManager.instance.get( "${URLs.getInternalAuditEquipmentById}?internalAuditEquipmentId=$id", ); if (response.statusCode >= 200 && response.statusCode < 300) { final decodedBody = jsonDecode(response.body); EquipmentInternalAuditDataModel model = EquipmentInternalAuditDataModel.fromJson(decodedBody["data"]); isLoading = false; notifyListeners(); return model; } else { isLoading = false; notifyListeners(); return null; } } catch (error) { isLoading = false; notifyListeners(); return null; } } Future getInternalSystemAuditById(int id) async { try { isLoading = true; notifyListeners(); Response response = await ApiManager.instance.get("${URLs.getInternalAuditSystemById}?AuditSystemId=$id"); if (response.statusCode >= 200 && response.statusCode < 300) { final decodedBody = jsonDecode(response.body); SystemInternalAuditDataModel model = SystemInternalAuditDataModel.fromJson(decodedBody["data"]); isLoading = false; notifyListeners(); return model; } else { isLoading = false; notifyListeners(); return null; } } catch (error) { isLoading = false; notifyListeners(); return null; } } Future loadAllWorkOrderDetailsByID({required int workOrderTypeId, required int workOrderId}) async { try { isLoading = true; notifyListeners(); Response response = await ApiManager.instance.get("${URLs.loadAllWorkOrderDetailsByID}?workOrderTypeId=$workOrderTypeId&workOrderId=$workOrderId"); if (response.statusCode >= 200 && response.statusCode < 300) { final decodedBody = jsonDecode(response.body); SystemAuditWorkOrderDetailModel model = SystemAuditWorkOrderDetailModel.fromJson(decodedBody["data"]); isLoading = false; notifyListeners(); return model; } else { isLoading = false; notifyListeners(); return null; } } catch (error) { isLoading = false; notifyListeners(); return null; } } Future updateEquipmentInternalAudit({required AuditFormModel model}) async { isLoading = true; Response response; try { response = await ApiManager.instance.put(URLs.updateAuditEquipmentsEngineer, body: model.toJson()); stateCode = response.statusCode; isLoading = false; notifyListeners(); if (stateCode == 200) { return true; } return false; } catch (error) { isLoading = false; stateCode = -1; notifyListeners(); return false; } } Future updateSystemInternalAudit({required AuditFormModel model}) async { isLoading = true; Response response; try { response = await ApiManager.instance.put(URLs.updateAuditSystemEngineer, body: model.toJson()); stateCode = response.statusCode; isLoading = false; notifyListeners(); log('status code ${stateCode}'); if (stateCode == 200) { return true; } return false; } catch (error) { isLoading = false; stateCode = -1; notifyListeners(); return false; } } Future addEquipmentInternalAudit({ required BuildContext context, required EquipmentInternalAuditFormModel request, }) async { bool status = false; Response response; try { response = await ApiManager.instance.post(URLs.addOrUpdateEquipmentInternalAudit, body: request.toJson()); if (response.statusCode >= 200 && response.statusCode < 300) { status = true; notifyListeners(); } else { Fluttertoast.showToast(msg: "${context.translation.failedRequestMessage} :${json.decode(response.body)['message']}"); status = false; } return status; } catch (error) { print(error); status = false; notifyListeners(); return status; } } Future addSystemInternalAudit({ required BuildContext context, required SystemInternalAuditFormModel request, }) async { bool status = false; Response response; try { response = await ApiManager.instance.post(URLs.addOrUpdateInternalAuditSystem, body: request.toJson()); if (response.statusCode >= 200 && response.statusCode < 300) { status = true; notifyListeners(); } else { Fluttertoast.showToast(msg: "${context.translation.failedRequestMessage} :${json.decode(response.body)['message']}"); status = false; } return status; } catch (error) { print(error); status = false; notifyListeners(); return status; } } Future> getWorkOrderByWoType({String? text, required int? woId}) async { late Response response; try { Response response = await ApiManager.instance.get("${URLs.getWoAutoComplete}?workOrderTypeId=$woId&search=$text"); // response = await ApiManager.instance.post(url, body: {"search": text}); List woOrderList = []; if (response.statusCode >= 200 && response.statusCode < 300) { List categoriesListJson = json.decode(response.body)["data"]; woOrderList = categoriesListJson.map((wo) => WoAutoCompleteModel.fromJson(wo)).toList(); } return woOrderList; } catch (error) { return []; } } }