import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:generp/Models/TechniciansPendingComplaintsResponse.dart'; import 'package:generp/Notifiers/HomeScreenNotifier.dart'; import 'package:generp/Utils/SharedpreferencesService.dart'; import 'package:generp/screens/serviceEngineer/serviceEngineerDashboard.dart'; import 'package:generp/services/api_calling.dart'; import 'package:image_picker/image_picker.dart'; import 'package:provider/provider.dart'; import '../Utils/commonServices.dart'; import '../screens/splash.dart'; class Pendingcomplaintsprovider extends ChangeNotifier { TextEditingController fsrNumberController = TextEditingController(); TextEditingController runningHoursController = TextEditingController(); TextEditingController feedbackController = TextEditingController(); List _technician_complaint_list = []; bool _isLoading = false; String? _statusId; String? _selectedValue; TimeOfDay _selectedTime = TimeOfDay.now(); String _formattedTime = ""; final ImagePicker _picker = ImagePicker(); File? _image; var _image_picked = 0; List get technician_complaint_list => _technician_complaint_list; bool get isLoading => _isLoading; String? get statusID => _statusId; String? get selectedValue => _selectedValue; TimeOfDay get selectedTime => _selectedTime; String get formattedTime => _formattedTime; int get imagePicked => _image_picked; set statusID(String? value){ _statusId = value; notifyListeners(); } Future TechnicianPendingComplaints(BuildContext context) async { var HomeProvider = Provider.of(context, listen: false); try { final data = await ApiCalling.LoadTechnicianComplaintsAPI( HomeProvider.empId, HomeProvider.session, ); //await UserApi.LoadTechnicianComplaintsAPI("752","bb1bd615748920990e679a575b0684cf3f53367620dd775a47e4a771bde22f313f4d7722ce131d65427ce054053aed8eb0ca").then((data) => { if (data != null) { if (data.sessionExists == 1) { if (data.error == 0) { _technician_complaint_list = data.list!; _isLoading = false; notifyListeners(); } else { _isLoading = false; } } else { // SharedpreferencesService().clearPreferences(); // Navigator.push( // context, // MaterialPageRoute(builder: (context) => Splash()), // ); } } } on Error catch (e) { debugPrint(e.toString()); } } Future TimePicker(context) async { return await showDialog( context: context, builder: (BuildContext context) => AlertDialog( content: TimePickerDialog( initialTime: TimeOfDay.now(), initialEntryMode: TimePickerEntryMode.input, ), ), ) ?? false; } Future selectTime(BuildContext context) async { final TimeOfDay? picked = await showTimePicker( context: context, initialTime: _selectedTime, ); if (picked != null && picked != _selectedTime) _selectedTime = picked; _formattedTime = _selectedTime.hour.toString() + ":" + _selectedTime.minute.toString(); } String formatTime(int hour, int minute) { String period = (hour >= 12) ? 'pm' : 'am'; if (hour == 0) { hour = 12; } else if (hour > 12) { hour -= 12; } String formattedHour = (hour < 10) ? '0$hour' : '$hour'; String formattedMinute = (minute < 10) ? '0$minute' : '$minute'; print("formattedTime: $formattedHour:$formattedMinute $period"); return '$formattedHour:$formattedMinute $period'; } Future UpdateComplaintAPIFunction( BuildContext context, complaint_id, feedback, fsrNumber, runningHr, statusId, ) async { var HomeProvider = Provider.of(context,listen: false); try { final data = await ApiCalling.UpdateComplaintAPI( HomeProvider.empId, HomeProvider.session, complaint_id, _selectedTime.hour.toString() + ":" + _selectedTime.minute.toString(), feedback, fsrNumber, runningHr, statusId, _image, ); if (data != null) { if (data.sessionExists == 1) { if (data.error == 0) { toast(context, "Complaint Status Updated!"); Navigator.pop(context); } else if (data.error == 1) { toast(context, "Something Went Wrong, please try again later!"); } else if (data.error == 2) { toast(context, "Tag Generator before updating visit !"); } else if (data.error == 3) { toast(context, "Tag Location before updating visit !"); } else { toast(context, "Something Went Wrong, please try again later!"); } } else { // SharedpreferencesService().clearPreferences(); // Navigator.push( // context, // MaterialPageRoute(builder: (context) => Splash()), // ); } } } on Error catch (e) { print(e.toString()); } } Future SelectAttachmentDialogue( BuildContext context ) async { return await showDialog( context: context, builder: (context) => AlertDialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(5.0), ), elevation: 20, shadowColor: Colors.black, title: Align( alignment: Alignment.center, child: Text( "Select Source", style: TextStyle( color: Colors.black, fontWeight: FontWeight.w500, decoration: TextDecoration.underline, ), ), ), content: Container( height: 85, child: Column( children: [ InkWell( onTap: () { Navigator.of(context).pop(false); imgFromGallery(); }, child: Container( height: 35, child: Text("Select photo from gallery"), ), ), SizedBox(height: 10), InkWell( onTap: () { Navigator.of(context).pop(false); imgFromCamera( ); }, child: Container( height: 35, child: Text("Capture photo from camera"), ), ), ], ), ), ), barrierDismissible: true, ) ?? false; } imgFromCamera( ) async { // Capture a photo try { final XFile? galleryImage = await _picker.pickImage( source: ImageSource.camera, imageQuality: 50, ); print("added"); _image = File(galleryImage!.path); _image_picked = 1; notifyListeners(); } catch (e) { debugPrint("mmmm: ${e.toString()}"); } } imgFromGallery( ) async { // Pick an image try { final XFile? galleryImage = await _picker.pickImage( source: ImageSource.gallery, ); final bytes = (await galleryImage?.readAsBytes())?.lengthInBytes; final kb = bytes! / 1024; final mb = kb / 1024; debugPrint("Jenny: bytes:$bytes, kb:$kb, mb: $mb"); _image = File(galleryImage!.path); _image_picked = 1; notifyListeners(); } catch (e) { debugPrint("mmmm: ${e.toString()}"); } } }