import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import '../../Models/crmModels/crmProspectDetailsResponse.dart'; import '../../Utils/app_colors.dart'; import '../../Utils/commonServices.dart'; import '../../services/api_calling.dart'; import '../HomeScreenNotifier.dart'; class crmProspectDetailsProvider extends ChangeNotifier { List _leadsList = []; List _contactsList = []; List _ordersList = []; List _paymentsList = []; AccountDetails _accountDetails = AccountDetails(); var _transferAccount; bool _isLoading = false; TextEditingController nameController = TextEditingController(); TextEditingController designationController = TextEditingController(); TextEditingController mobileNumberController = TextEditingController(); TextEditingController alternativeMobileController = TextEditingController(); TextEditingController telephoneController = TextEditingController(); TextEditingController emailController = TextEditingController(); TextEditingController editNameController = TextEditingController(); TextEditingController editDesignationController = TextEditingController(); TextEditingController editMobileNumberController = TextEditingController(); TextEditingController editAlternativeMobileController = TextEditingController(); TextEditingController editTelephoneController = TextEditingController(); TextEditingController editEmailController = TextEditingController(); TextEditingController dateController = TextEditingController(); TextEditingController noteController = TextEditingController(); String? _nameError; String? _designationError; String? _mobileNumError; String? _altMobError; String? _teleError; String? _emailError; String? _noteError; String? _editNameError; String? _editDesignationError; String? _editMobileNumError; String? _editAltMobError; String? _editTeleError; String? _editEmailError; String? _dateError; List _headings = []; List _subHeadings = []; DateTime? _date; String? _formattedDate; get showTransferAccount => _transferAccount; List get leadList => _leadsList; List get contactList => _contactsList; List get ordersList => _ordersList; List get paymentsList => _paymentsList; AccountDetails get accountDetails => _accountDetails; String? get nameError => _nameError; String? get designationError => _designationError; String? get mobileNumError => _mobileNumError; String? get altMobError => _altMobError; String? get teleError => _teleError; String? get emailError => _emailError; String? get noteError => _noteError; String? get editNameError => _editNameError; String? get editDesignationError => _editDesignationError; String? get editMobileNumError => _editMobileNumError; String? get editAltMobError => _editAltMobError; String? get editTeleError => _editTeleError; String? get editEmailError => _editEmailError; String? get dateError => _dateError; bool get isLoading => _isLoading; List get Headings => _headings; List get subHeadings => _subHeadings; String? get formattedDate => _formattedDate; set nameError(String? value){ _nameError = value; notifyListeners(); } set designationError(String? value){ _designationError = value; notifyListeners(); } set mobileNumError(String? value){ _mobileNumError = value; notifyListeners(); } set altMobError(String? value){ _altMobError = value; notifyListeners(); } set teleError(String? value){ _teleError = value; notifyListeners(); } set emailError(String? value){ _emailError = value; notifyListeners(); } set noteError(String? value){ _noteError = value; notifyListeners(); } set editNameError(String? value){ _editNameError = value; notifyListeners(); } set editDesignationError(String? value){ _editDesignationError = value; notifyListeners(); } set editMobileNumError(String? value){ _editMobileNumError = value; notifyListeners(); } set editAltMobError(String? value){ _editAltMobError = value; notifyListeners(); } set editTeleError(String? value){ _editTeleError = value; notifyListeners(); } set editEmailError(String? value){ _editEmailError = value; notifyListeners(); } set isLoading(bool value){ _isLoading = value; notifyListeners(); } set formattedDate(String? value) { _formattedDate = value; dateController.text = _formattedDate!; _dateError = null; notifyListeners(); } set dateError(value){ _dateError = value; notifyListeners(); } void setDate(DateTime newDate) { _date = newDate; _formattedDate = DateFormat('yyyy-MM-dd').format(newDate); dateController.text = _formattedDate!; _dateError = null; notifyListeners(); } Future crmProspectDetailsAPIFunction(context, leadID) async { try { var HomeProv = Provider.of(context, listen: false); final data = await ApiCalling.crmProspectDetailsAPI( HomeProv.empId, HomeProv.session, leadID, ); _isLoading = true; notifyListeners(); if (data != null) { if (data.error == "0") { _leadsList = data.leads!; _accountDetails = data.accountDetails!; _contactsList =data.contacts!; _ordersList = data.orders!; _paymentsList = data.payments!; _headings = [ "Company Name", "Address", "Account Manager Name", "Account Created By", "State", "District", "Sub Locality", "Pincode", "Source", "Reference", "Team", "Segment", "Account Age", ]; _transferAccount = data.showTransfeLeadButton; _subHeadings = [ data.accountDetails!.name??"-", data.accountDetails!.address??"-", data.accountDetails!.accManager??"-", data.accountDetails!.owner??"-", data.accountDetails!.state??"-", data.accountDetails!.district??"-", data.accountDetails!.subLocality??"-", data.accountDetails!.pincode??"-", data.accountDetails!.source??"-", data.accountDetails!.reference??"-", data.accountDetails!.team??"-", data.accountDetails!.segment??"-", "${data.accountDetails!.aage ?? "-"} days old", ]; _isLoading = false; notifyListeners(); }else{ _isLoading = false; notifyListeners(); } }else{ _isLoading = false; notifyListeners(); } } catch (e, s) { _isLoading = false; notifyListeners(); } } Future crmProspectDetailsAddContactAPIFunction(context, accID) async { try { var prov = Provider.of(context, listen: false); final data = await ApiCalling.crmProspectDetailsAddAccountAPI(prov.empId, prov.session, accID, nameController.text, mobileNumberController.text, designationController.text, alternativeMobileController.text, telephoneController.text, emailController.text); _isLoading = true; notifyListeners(); if (data != null) { if (data.error == "0") { Navigator.pop(context,true); resetAll(); _isLoading = false; notifyListeners(); }else{ _isLoading = false; notifyListeners(); } }else{ _isLoading = false; notifyListeners(); } } catch (e, s) { _isLoading = false; notifyListeners(); } } Future crmProspectDetailsEditContactAPIFunction(context,contactID,accID) async { try { var prov = Provider.of(context, listen: false); final data = await ApiCalling.crmProspectDetailsEditContactAPI(prov.empId, prov.session, contactID, nameController.text,accID, mobileNumberController.text, designationController.text, alternativeMobileController.text, telephoneController.text, emailController.text); _isLoading = true; notifyListeners(); if (data != null) { if (data.error == "0") { _isLoading = false; Navigator.pop(context,true); resetAll(); _isLoading = false; notifyListeners(); }else{ _isLoading = false; notifyListeners(); } }else{ _isLoading = false; notifyListeners(); } } catch (e, s) { _isLoading = false; notifyListeners(); } } void showDatePickerDialog(BuildContext context) { showCupertinoModalPopup( context: context, builder: (BuildContext context) => Container( height: 216, padding: const EdgeInsets.only(top: 6.0), margin: EdgeInsets.only( bottom: MediaQuery.of(context).viewInsets.bottom, ), color: CupertinoColors.systemBackground.resolveFrom(context), child: SafeArea( top: false, child: Column( children: [ Expanded( flex: 1, child: SizedBox( height: 40, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ CupertinoButton( child: Text( 'Cancel', style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue), ), onPressed: () { Navigator.pop(context); }, ), CupertinoButton( child: Text( 'Done', style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue), ), onPressed: () { Navigator.pop(context); }, ), ], ), ), ), Expanded( flex: 3, child: CupertinoDatePicker( dateOrder: DatePickerDateOrder.dmy, initialDateTime: _date ?? DateTime.now(), mode: CupertinoDatePickerMode.date, use24hFormat: true, showDayOfWeek: true, onDateTimeChanged: (DateTime newDate) { setDate(newDate); }, ), ), ], ), ), ), ); } void onChangeName(value){ _nameError = ""; notifyListeners(); } void onChangeDesignation(value){ _designationError = ""; notifyListeners(); } void onChangeMobile(value){ _mobileNumError = ""; notifyListeners(); } void onChangeAltMobile(value){ _altMobError = ""; notifyListeners(); } void onChangeTelephone(value){ _teleError = ""; notifyListeners(); } void onChangeEmailId(value){ _emailError = ""; notifyListeners(); } void onChangeEditName(value){ _editNameError = ""; notifyListeners(); } void onChangeEditDesignation(value){ _editDesignationError = ""; notifyListeners(); } void onChangeEditMobile(value){ _editMobileNumError = ""; notifyListeners(); } void onChangeEditAltMobile(value){ _editAltMobError = ""; notifyListeners(); } void onChangeEditTelephone(value){ _editTeleError = ""; notifyListeners(); } void onChangeEditEmailId(value){ _editEmailError = ""; notifyListeners(); } void onChangeNote(value){ _noteError = ""; notifyListeners(); } void resetAll(){ nameController.clear(); designationController.clear(); mobileNumberController.clear(); alternativeMobileController.clear(); telephoneController.clear(); emailController.clear(); editNameController.clear(); editDesignationController.clear(); editMobileNumberController.clear(); editAlternativeMobileController.clear(); editTelephoneController.clear(); editEmailController.clear(); _nameError = ""; _designationError = ""; _mobileNumError = ""; _altMobError = ""; _teleError = ""; _emailError = ""; _editNameError = ""; _editDesignationError = ""; _editMobileNumError = ""; _editAltMobError = ""; _editTeleError = ""; _editEmailError = ""; notifyListeners(); } }