import 'dart:developer'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:image_picker/image_picker.dart'; import 'package:muaawana/config/provider.dart'; import 'package:muaawana/models/emergency/Result.dart'; import 'package:muaawana/providers/technician_provider.dart'; import '../services/urgent_request_services.dart'; import '../utils/connection.dart'; import '../utils/image_picker.dart'; import 'order_status_provider.dart'; class UrgentRequestProvider extends ChangeNotifier { UrgentRequestService get service => GetIt.I(); TechnicianProvider _technicianProvider = TechnicianProvider(); bool loader = false; List _images = []; // File? _image; final picker = ImagePicker(); // Instance of Image picker List get imageList => _images; File? _image; File? get image => _image; List urgentRequestList = []; String technicianPhone = ''; Future pickPicture(String source,context) async { final imagePicker = ImagePick(); final image = await imagePicker.pick(source,context); if (image != null) { _image = image; notifyListeners(); } } Future getImages() async { _images = []; notifyListeners(); final pickedImages = await picker.pickMultiImage(); List xfilePick = pickedImages; if (xfilePick.isNotEmpty) { //print(xfilePick.length); for (var xfile in xfilePick) { _images.add(File(xfile.path)); } } notifyListeners(); } setUrgentRequestToZero() { urgentRequestList = []; notifyListeners(); } //TODO UrgentRequestProvider. sendUrgentRequest(String comment, String date, String address, double altitude, double longitude) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final sendUrgentRequestResult = await service.userAddUrgentRequest( _images, comment, date, address, altitude, longitude); if ((sendUrgentRequestResult.statusCode == 200 || sendUrgentRequestResult.statusCode == 201) && sendUrgentRequestResult.data != null) { loader = false; notifyListeners(); } else { loader = false; notifyListeners(); } } catch (e, stackTrace) { loader = false; notifyListeners(); log("-----> Login Caught Error : "); log(e.toString()); log("-----> Login Caught Error StackTrace : "); log(stackTrace.toString()); } } else { /// No Internet Connection log("-----> No Internet Connection"); loader = false; notifyListeners(); } } updateUrgentRequest(int addressId, String comment, String date) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final sendUrgentRequestResult = await service.updateUrgentRequest( addressId, _images, comment, date); if ((sendUrgentRequestResult.statusCode == 200 || sendUrgentRequestResult.statusCode == 201) && sendUrgentRequestResult.data != null) { loader = false; notifyListeners(); } else { loader = false; notifyListeners(); } } catch (e, stackTrace) { loader = false; notifyListeners(); log("-----> Login Caught Error : "); log(e.toString()); log("-----> Login Caught Error StackTrace : "); log(stackTrace.toString()); } } else { /// No Internet Connection log("-----> No Internet Connection"); loader = false; notifyListeners(); } } getUrgentRequestById( int urgentRequestId, ) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final getUrgentRequestResult = await service.getUrgentRequestById(urgentRequestId); if ((getUrgentRequestResult.statusCode == 200 || getUrgentRequestResult.statusCode == 201) && getUrgentRequestResult.data != null) { loader = false; notifyListeners(); } else { loader = false; notifyListeners(); } } catch (e, stackTrace) { loader = false; notifyListeners(); log("-----> Login Caught Error : "); log(e.toString()); log("-----> Login Caught Error StackTrace : "); log(stackTrace.toString()); } } else { /// No Internet Connection log("-----> No Internet Connection"); loader = false; notifyListeners(); } } Future getUrgentRequestByState(String state, int size, int page) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final getUrgentRequestResult = await service.getUrgentRequestByState(state, size, page); if ((getUrgentRequestResult.statusCode == 200 || getUrgentRequestResult.statusCode == 201) && getUrgentRequestResult.data != null) { urgentRequestList.addAll(getUrgentRequestResult.data!.urgentRequest!); loader = false; notifyListeners(); } else { loader = false; notifyListeners(); } } catch (e, stackTrace) { loader = false; notifyListeners(); log("-----> Login Caught Error : "); log(e.toString()); log("-----> Login Caught Error StackTrace : "); log(stackTrace.toString()); } } else { /// No Internet Connection log("-----> No Internet Connection"); loader = false; notifyListeners(); } } getUrgentRequestTechnician() async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final getUrgentRequestResult = await service.getUrgentRequestTechnicianPhone(); if ((getUrgentRequestResult.statusCode == 200 || getUrgentRequestResult.statusCode == 201) && getUrgentRequestResult.data != null) { technicianPhone = getUrgentRequestResult.data!; loader = false; notifyListeners(); } else { loader = false; notifyListeners(); } } catch (e, stackTrace) { loader = false; notifyListeners(); log("-----> Login Caught Error : "); log(e.toString()); log("-----> Login Caught Error StackTrace : "); log(stackTrace.toString()); } } else { /// No Internet Connection log("-----> No Internet Connection"); loader = false; notifyListeners(); } } Future completeUrgentOrder( double description, int id, BuildContext context) async { if (await Connection.checkConnection()) { //print(description); loader = true; notifyListeners(); try { final requestItemResult = await service.completeRequest(_image!, description, id); if (requestItemResult.statusCode == 200 || requestItemResult.statusCode == 201) { context.read().pickedUrgentRequest = requestItemResult.data; // await changeRequestState(requestId,'WORK_PAYMENT_DONE'); loader = false; notifyListeners(); return true; } else { loader = false; notifyListeners(); return false; } } catch (e, stackTrace) { log(stackTrace.toString()); loader = false; notifyListeners(); return false; } } else { /// No Internet Connection loader = false; notifyListeners(); return false; } } Future workNotDone(int requestId, String description) async { if (await Connection.checkConnection()) { loader = true; notifyListeners(); try { final rejectRequestResult = await service.workNotDone(requestId, description); if (rejectRequestResult.statusCode == 200 || rejectRequestResult.statusCode == 201) { // await changeRequestState(requestId,'WORK_NOT_DONE'); loader = false; notifyListeners(); return true; } else { loader = false; notifyListeners(); return false; } } catch (e, stackTrace) { log(stackTrace.toString()); loader = false; notifyListeners(); return false; } } else { /// No Internet Connection loader = false; notifyListeners(); return false; } } }