second commit

This commit is contained in:
Anbarasu
2026-05-27 10:35:09 +05:30
parent c53794c04c
commit 1435ac47b0
501 changed files with 52818 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../../Helper/Constants/Colorconstants.dart';
class PickupCustomerTabController extends GetxController with SingleGetTickerProviderMixin{
late TabController tabController;
int tabIndex = 0;
final List<Tab> tabs = <Tab>[
Tab(
icon:Icon(
Icons.person,
color: ColorConstants.primaryColor,
size: 25,
),
text: "From Customer",
),
// // Tab(text: "Yesterday",),
Tab(
text: "From Business",
icon: Icon(
Icons.business,
color: ColorConstants.primaryColor,
size: 25,
),
),
];
@override
void onInit() {
tabController = TabController(vsync: this, length: tabs.length);
// TODO: implement onInit
super.onInit();
}
}

View File

@@ -0,0 +1,236 @@
import 'package:country_currency_pickers/country.dart';
import 'package:country_currency_pickers/utils/utils.dart';
import 'package:flutter/cupertino.dart';
import 'package:geocoding/geocoding.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
import 'package:rounded_loading_button_plus/rounded_loading_button.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:io';
import '../../../../../../../Data/Repository/Createcustomer/Createcustomerrepository.dart';
import '../../../../../../../Globalwidgets/Googleplaces/Googleplaces.dart';
import '../../../../../../../Helper/Locationservice/Locationservice.dart';
import '../../../../../../../Helper/location_service.dart';
import '../../../../../../../Helper/toast.dart';
import '../../../../../../../Model/Request/Createcustomer/Createcustomerrequest.dart';
import '../../../../../../../Model/Response/Createcustomer/Createcustomerresponse.dart';
import '../../../../../../../View/Createorder/Createorderview.dart';
import '../../../../../../Createorder/Createordercontroller.dart';
import '../../Tenantcustomercontroller.dart';
class AddPickupCustomerController extends GetxController{
String? latitude;
String? longitude;
String? suburb;
String? city;
String? state;
String? postCode;
int? tenantId;
int? appLocationId;
bool progress = true;
TextEditingController customerFirstNameController = TextEditingController();
TextEditingController customerLastNameController = TextEditingController();
TextEditingController customerPhoneController = TextEditingController();
TextEditingController addressController = TextEditingController();
TextEditingController doorNoController = TextEditingController();
TextEditingController landMarkController = TextEditingController();
Position? resultPosition;
final searchText = ''.obs;
final predictions = <Map<String, dynamic>>[].obs;
final selectedPlace = {}.obs;
Country selectedDialogCountry = CountryPickerUtils.getCountryByIsoCode('IN');
final GooglePlacesService placesService = GooglePlacesService();
final RoundedLoadingButtonController btnController = RoundedLoadingButtonController();
CreateCustomerRepository createCustomerRepository = CreateCustomerRepository();
TenantPickupCustomerController tenantPickupCustomerController = Get.put(TenantPickupCustomerController());
CreateOrderController createOrderController = Get.put(CreateOrderController());
LocationService locationService = LocationService();
getLocation() async {
resultPosition = await locationService.getLocation();
progress =false;
update();
}
void onSearchTextChanged(String text) async {
searchText.value = text;
if (text.length > 2) {
try {
final places = await placesService.getPlacesPredictions(text);
predictions.assignAll(places);
update();
} catch (e) {
print('Error fetching predictions: $e');
}
} else {
predictions.clear();
update();
}
}
Future<void> getPlaceDetails(String placeId,locationAddress) async {
try {
final details = await placesService.getPlaceDetails(placeId);
selectedPlace.value = details;
print('getPlaceDetailslatitude ${selectedPlace['geometry']['location']['lat']}');
print('getPlaceDetailslongitude ${selectedPlace['geometry']['location']['lng']}');
getAddressFromLatLng(selectedPlace['geometry']['location']['lat'],selectedPlace['geometry']['location']['lng'],locationAddress);
} catch (e) {
print('Error fetching place details: $e');
}
}
Future<void> getAddressFromLatLng(double latitudes, double longitudes,address) async {
await placemarkFromCoordinates(latitudes, longitudes).then((List<Placemark> placemarks) {
Placemark place = placemarks[0];
latitude = double.parse(latitudes.toString()).toString();
longitude = double.parse(longitudes.toString()).toString();
city = '${place.locality}';
state = '${place.administrativeArea}';
suburb = place.subLocality!.isNotEmpty?place.subLocality:place.street;
postCode = '${place.postalCode}';
addressController.text = address;
predictions.clear();
update();
print('latitude $latitude');
print('longitude $longitude');
print('eng $suburb');
print('city $city');
print('state $state');
print('postalCode $postCode');
print('subAdministrativeArea ${place.subAdministrativeArea}');
print('subThoroughfare ${place.subThoroughfare}');
print('currentLocationAddress ${addressController.text}');
print('streetss ${place.street}');
}).catchError((e) {
debugPrint(e);
});
}
describeValidation(){
if(customerFirstNameController.text.isEmpty){
btnController.reset();
Toast.showToast("Please enter your first name");
}
// else if(customerLastNameController.text.isEmpty){
// Toast.showToast("Please enter your last name");
// }
else if(customerPhoneController.text.isEmpty){
btnController.reset();
Toast.showToast("Please enter your phone number");
}else if(addressController.text.isEmpty){
btnController.reset();
Toast.showToast("Please enter your address");
}
else if(latitude == null &&longitude == null){
btnController.reset();
Toast.showToast("Please enter correct address");
}
// else if(doorNoController.text.isEmpty){
// Toast.showToast("Please enter your door number");
// }
// else if(landMarkController.text.isEmpty){
// Toast.showToast("Please enter your landmark");
// }
else{
btnController.success();
createCustomer();
update();
}
}
createCustomer() async{
var createdate = DateFormat("yyyy-MM-dd HH:mm:ss").format(DateTime.now());
var updatedate = DateFormat("yyyy-MM-dd HH:mm:ss").format(DateTime.now());
SharedPreferences prefs = await SharedPreferences.getInstance();
tenantId = prefs.getInt('tenantId');
appLocationId = prefs.getInt('appLocationId');
print('tenantIdcreateCustomer$tenantId');
String contactNo = customerPhoneController.text;
print("contact............$contactNo");
create(
CreateCustomers(
customerid:0,
configid:1,
tenantid: tenantId,
firstname:customerFirstNameController.text,
applocationid:appLocationId,
profileimage:"",
dialcode:"+91",
contactno:customerPhoneController.text,
devicetype:Platform.operatingSystem,
// deviceid:"${prefs.getString('deviceId')}",
// customertoken:"$fcmEntryToken",
address:addressController.text,
suburb:suburb,
city:city,
state:state,
postcode:postCode,
landmark:landMarkController.text,
doorno:doorNoController.text,
latitude:latitude,
longitude:longitude,
primaryaddress: 1,
));
}
create(CreateCustomers data )async{
CreateCustomerResponse? result = await createCustomerRepository.createCustomer(data);
if(result?.status == true){
customerFirstNameController.clear();
customerLastNameController.clear();
customerPhoneController.clear();
addressController.clear();
doorNoController.clear();
landMarkController.clear();
tenantPickupCustomerController.getCustomerByTenantId();
btnController.reset();
createOrderController.pickupCustomerId = result?.details?.customerid;
createOrderController.pickUpCustomerName = "${result?.details?.firstname}" + "${result?.details?.lastname}";
createOrderController.pickUpCustomerContactNo = result?.details?.contactno;
createOrderController.pickupLocationId = result?.details?.deliverylocationid;
createOrderController.pickupTenantLocationId = result?.details?.tenantlocationid;
createOrderController.fromLatitude = result?.details?.latitude;
createOrderController.fromLongitude = result?.details?.longitude;
createOrderController.fromAddress =result?.details?.address;
// Get.offAll(TenantPickUpCustomerView(navigate: true,));
Get.to(()=>CreateOrderView(isDashboard: false));
}else{
btnController.reset();
Toast.showToast('${result?.message}');
}
}
@override
void onInit() {
getLocation();
// TODO: implement onInit
super.onInit();
}
}

View File

@@ -0,0 +1,196 @@
import 'package:flutter/cupertino.dart';
import 'package:geocoding/geocoding.dart';
import 'package:get/get.dart';
import 'package:rounded_loading_button_plus/rounded_loading_button.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../../../../../Data/Provider/Getcustomeraddress/Getcustomeraddressprovider.dart';
import '../../../../../../Data/Repository/Createcustomer/Createcustomerrepository.dart';
import '../../../../../../Globalwidgets/Googleplaces/Googleplaces.dart';
import '../../../../../../Helper/Constants/Apiconstants.dart';
import '../../../../../../Helper/location_service.dart';
import '../../../../../../Helper/toast.dart';
import '../../../../../../Model/Request/Authentication/Createuser/Createdeliveryaddress/Createdeliveryaddressrequest.dart';
import '../../../../../../Model/Response/Createcustomer/Createdeliveryaddress/Createdeliveryaddressresponsel.dart';
import '../../../../../../Model/Response/Getcustomeraddress/GetCustomerAddress.dart';
import '../../../../../../View/Createorder/Pickuplocation/Tabs/Allcustomers/Tenantcustomers/Customeraddress/Customeraddressview.dart';
class PickupCustomerAddressController extends GetxController{
String? latitude;
String? longitude;
String? address;
String? customerName;
String? customerContactNo;
int locationId = 0;
int roleId = 0;
int? customerId;
int? deliveryLocationId;
int selectedAddressIndex = -1;
List <CustomerAddressDetail> getCustomeraddress =[];
bool loader = true;
bool deliveryAddressList = false;
var customerAddressInfo;
TextEditingController searchController = TextEditingController();
TextEditingController addressController = TextEditingController();
TextEditingController suburbController = TextEditingController();
TextEditingController cityController = TextEditingController();
TextEditingController stateController = TextEditingController();
TextEditingController postCodeController = TextEditingController();
TextEditingController landmarkController = TextEditingController();
TextEditingController doornoController = TextEditingController();
final searchText = ''.obs;
final predictions = <Map<String, dynamic>>[].obs;
final selectedPlace = {}.obs;
final GooglePlacesService placesService = GooglePlacesService();
final RoundedLoadingButtonController btnController = RoundedLoadingButtonController();
final RoundedLoadingButtonController submitBtnController = RoundedLoadingButtonController();
CreateCustomerRepository createCustomerRepository = CreateCustomerRepository();
GetCustomersAddressProvider getCustomersAddressProvider = GetCustomersAddressProvider();
getDetails()async{
SharedPreferences prefs = await SharedPreferences.getInstance();
roleId = prefs.getInt('roleId')??0;
print('roleIdingetDetails $roleId');
update();
}
getCustomerAddress()async{
GetCustomerAddress? result = await getCustomersAddressProvider.getCustomerAddress('${ApiConstants.getCustomerAddress}?customerid=$customerId');
getCustomeraddress = result?.details??[];
loader = false;
for (var i = 0; i < getCustomeraddress.length; i++) {
if (getCustomeraddress[i].defaultaddress == '1') {
deliveryLocationId = getCustomeraddress[i].locationid;
print('getCustomerAddressforloop $deliveryLocationId');
update();
}
}
update();
print('getCustomerAddressincontroller${result?.toJson()}');
}
describeValidation(){
if(addressController.text.isEmpty){
submitBtnController.reset();
Toast.showToast("Delivery address should not be empty");
}
else if(suburbController.text.isEmpty){
submitBtnController.reset();
Toast.showToast("Suburb should not be empty!");
}
else if(stateController.text.isEmpty){
submitBtnController.reset();
Toast.showToast("State should not be empty!");
}else if(postCodeController.text.isEmpty){
submitBtnController.reset();
Toast.showToast("Pin code should not be empty!");
}
else{
submitBtnController.success();
createDeliveryAddress();
}
}
createDeliveryAddress()async {
create(
CreateDeliveryAddress(
customerid:customerAddressInfo.customerid,
address: addressController.text,
suburb: suburbController.text,
city: cityController.text,
state: stateController.text,
postcode: postCodeController.text,
// countycode:"91",
latitude: '$latitude',
longitude: '$longitude',
primaryaddress: 0,
));
}
create(CreateDeliveryAddress data )async{
CreateDeliveryAddressResponse? result = await createCustomerRepository.createDeliveryAddress(data);
if(result?.status == true){
deliveryAddressList = false;
getCustomerAddress();
submitBtnController.reset();
Get.to(CustomerPickupAddressView(data: customerAddressInfo,));
update();
}
print('CreateDeliveryAddress create ${result!.toJson()}');
}
void onSearchTextChanged(String text) async {
searchText.value = text;
if (text.length > 2) {
try {
final places = await placesService.getPlacesPredictions(text);
predictions.assignAll(places);
update();
} catch (e) {
print('Error fetching predictions: $e');
}
} else {
predictions.clear();
update();
}
}
Future<void> getPlaceDetails(String placeId,locationAddress) async {
try {
final details = await placesService.getPlaceDetails(placeId);
selectedPlace.value = details;
print('getPlaceDetailslatitude ${selectedPlace['geometry']['location']['lat']}');
print('getPlaceDetailslongitude ${selectedPlace['geometry']['location']['lng']}');
getAddressFromLatLng(selectedPlace['geometry']['location']['lat'],selectedPlace['geometry']['location']['lng'],locationAddress);
} catch (e) {
print('Error fetching place details: $e');
}
}
Future<void> getAddressFromLatLng(double latitudes, double longitudes,locationAddress) async {
await placemarkFromCoordinates(latitudes, longitudes).then((List<Placemark> placemarks) {
Placemark place = placemarks[0];
latitude = double.parse(latitudes.toString()).toString();
longitude = double.parse(longitudes.toString()).toString();
cityController.text = '${place.locality}';
stateController.text = '${place.administrativeArea}';
suburbController.text = (place.subLocality!.isNotEmpty?place.subLocality:place.street)!;
postCodeController.text = '${place.postalCode}';
addressController.text = locationAddress;
predictions.clear();
update();
print('latitude $latitude');
print('longitude $longitude');
print('subAdministrativeArea ${place.subAdministrativeArea}');
print('subThoroughfare ${place.subThoroughfare}');
print('currentLocationAddress ${ addressController.text}');
print('streetss ${place.street}');
}).catchError((e) {
debugPrint(e);
});
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
}

View File

@@ -0,0 +1,111 @@
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import '../../../../../Data/Repository/Customers/getCustomerbytenantidrepository.dart';
import '../../../../../Helper/toast.dart';
import '../../../../../Model/Response/Customers/GetCustomerById/GetCustomerByTenantId.dart';
class TenantPickupCustomerController extends GetxController{
final int limit = 10;
int page = 1;
var hasMore = true.obs;
bool progress = true;
RxBool shimmer = true.obs;
var getCustomerBytenantId = <GetCustomerByTenantIdDetails>[].obs;
TextEditingController searchController = TextEditingController();
GetCustomersByTenantIdRepository getCustomersByTenantIdRepository = GetCustomersByTenantIdRepository();
getCustomerByTenantId()async{
GetCustomerByTenantId? result = await getCustomersByTenantIdRepository.getCustomerByTenantId();
getCustomerByTenantIdResult(result!);
}
getTenantsByTenantId()async{
GetCustomerByTenantId? result = await getCustomersByTenantIdRepository.getTenantsByTenantId();
getCustomerByTenantIdResult(result!);
}
getCustomerByTenantIdResult(GetCustomerByTenantId data) {
final seen = <dynamic>{};
/// Logic to remove duplicates
getCustomerBytenantId.value = (data.details ?? []).where((customer) {
if (seen.contains(customer.customerid)) {
return false; // Duplicate
} else {
seen.add(customer.customerid);
return true;
}
}).toList();
progress = false;
update();
}
Future getSearchCustomerData(keyword) async {
GetCustomerByTenantId? result = await getCustomersByTenantIdRepository.getCustomerKeywordByTenantId(keyword);
if (result?.code == 200) {
getCustomerBytenantId.clear();
getCustomerBytenantId.addAll(result?.details??[]);
shimmer.value = false;
update();
print('getSearchCustomerDatalength ${getCustomerBytenantId.length}');
if(getCustomerBytenantId.isEmpty){
Toast.showToast('No customer at this moment');
}
} else {
// Toast.showToast(result?.message??"");
}
}
Future refreshData() async {
searchController.clear();
page = 1;
hasMore.value = true;
getCustomerBytenantId.value = [];
if(searchController.text.isEmpty){
print("ifffffffffffffffffffffffffffffffffff");
await getCustomerData();
}
}
Future getCustomerData() async {
GetCustomerByTenantId? result = await getCustomersByTenantIdRepository.getCustomerByPageLimitTenantId(page,limit);
if (result?.code == 200) {
if (result!.details!.length < limit) {
hasMore.value = false;
}
// getCustomerBytenantId.clear();
getCustomerBytenantId.addAll(result.details??[]);
shimmer.value = false;
page++;
update();
} else {
// Toast.showToast(result?.message??"");
}
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
}