This commit is contained in:
2025-01-24 19:00:27 +05:30
parent 26aaa8c4e8
commit d9ddf69827
47 changed files with 3291 additions and 108 deletions

View File

@@ -0,0 +1,218 @@
import 'package:flutter/material.dart';
import 'package:grocery_app/src/core/network_services/service_locator.dart';
import 'package:grocery_app/src/core/utils/snack_bar.dart';
import 'package:grocery_app/src/logic/repo/auth_repo.dart';
import 'package:grocery_app/utils/constants/shared_pref_utils.dart';
import 'package:grocery_app/utils/extensions/extensions.dart';
class AuthProvider extends ChangeNotifier {
int _currentIndex = 0;
final int _totalPages = 4; // Set total number of pages
final PageController _pageController = PageController();
final TextEditingController name = TextEditingController();
final TextEditingController lastName = TextEditingController();
final TextEditingController email = TextEditingController();
final TextEditingController address = TextEditingController();
final TextEditingController passwordController = TextEditingController();
final TextEditingController confirmPasswordController =
TextEditingController();
int get currentIndex => _currentIndex;
PageController get pageController => _pageController;
// Calculate progress as a percentage
double get progress => (_currentIndex + 1) / _totalPages;
final _authRepo = getIt<AuthRepo>();
String numberwithCode = '';
Future<bool> sendOtp(String number, BuildContext context) async {
context.showLoader(show: true);
var data = {"phone": "+91" + number};
numberwithCode = "+91" + number;
try {
var response = await _authRepo.sendOtp(data);
print("check response ${response}");
context.showLoader(show: false);
return response.fold(
(error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false;
},
(response) {
print("hdsfvjhdfghjdf");
_showSnackBar(context, "OTP sent successfully", Colors.green);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
print("Unexpected error: $e");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again."),
backgroundColor: Colors.red,
),
);
return false;
}
}
Future<bool> verifiOtp(String otp, BuildContext context) async {
context.showLoader(show: true);
var data = {
"phone": numberwithCode,
"otp": otp,
};
try {
var result = await _authRepo.verifyOtp(data);
return result.fold(
(error) {
// Show error Snackbar
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false; // Login failed
},
(response) {
// Login success
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("OTP Verify successful!"),
backgroundColor: Colors.green,
),
);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again."),
backgroundColor: Colors.red,
),
);
return false;
}
}
// //login
// //vendorRegister
Future<bool> vendorRegister(BuildContext context) async {
context.showLoader(show: true);
var data = {
"firstName": await SharedPrefUtils.getFirstName(),
"lastName": await SharedPrefUtils.getLastName(),
"email": await SharedPrefUtils.getEmail(),
"password": await SharedPrefUtils.getPassword(),
"vendorType": "individual",
};
try {
var result = await _authRepo.customerRegister(data);
return result.fold(
(error) {
// Show error Snackbar
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false; // Login failed
},
(response) {
// Login success
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Vendor Register successful!"),
backgroundColor: Colors.green,
),
);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again."),
backgroundColor: Colors.red,
),
);
return false;
}
}
// void goToNextPage() {
// // Ensure that the current index is updated correctly
// if (_currentIndex < _totalPages - 1) {
// _currentIndex++; // Increment the index here
// _pageController.animateToPage(
// _currentIndex,
// duration: const Duration(milliseconds: 300),
// curve: Curves.ease,
// );
// notifyListeners(); // Notify listeners to update the view
// }
// }
// void goToPage(int index) {
// if (index >= 0 && index < _totalPages) {
// _currentIndex = index;
// print("Navigating to page: $_currentIndex"); // Debug print
// _pageController.animateToPage(
// _currentIndex,
// duration: const Duration(milliseconds: 300),
// curve: Curves.ease,
// );
// notifyListeners();
// }
// }
@override
void dispose() {
_pageController.dispose();
super.dispose();
}
// bool _isChecked = false;
// bool get isChecked => _isChecked;
// void toggleCheckbox(bool value) {
// _isChecked = value;
// notifyListeners();
// }
void _showSnackBar(BuildContext context, String message, Color color) {
showTopSnackBar(context, message, color);
}
}

View File

@@ -0,0 +1,350 @@
// import 'dart:io';
// import 'package:flutter/material.dart';
// import 'package:intl/intl.dart';
// import 'package:vendor_app/src/core/network_services/service_locator.dart';
// import 'package:vendor_app/src/core/routes/routes.dart';
// import 'package:vendor_app/src/core/utiils_lib/extensions.dart';
// import 'package:vendor_app/src/core/utiils_lib/shared_pref_utils.dart';
// import 'package:vendor_app/src/data/store_model.dart';
// import 'package:vendor_app/src/logic/repo/auth_repo.dart';
// import 'package:vendor_app/src/logic/repo/store_repo.dart';
// class DaySelectionProvider with ChangeNotifier {
// List<String> _selectedDays = [];
// List<String> get selectedDays => _selectedDays;
// final _storeRepo = getIt<StoreRepo>();
// void toggleDay(String day) {
// if (_selectedDays.contains(day)) {
// _selectedDays.remove(day);
// } else {
// _selectedDays.add(day);
// }
// notifyListeners();
// }
// void removeDay(String day) {
// _selectedDays.remove(day);
// notifyListeners();
// }
// final TextEditingController storeName = TextEditingController();
// final TextEditingController storeDescription = TextEditingController();
// final TextEditingController officialPhoneNumber = TextEditingController();
// final TextEditingController storeAddress = TextEditingController();
// final TextEditingController storeGSTNumber = TextEditingController();
// final TextEditingController storeGumastaNumber = TextEditingController();
// bool _editStore = false;
// bool get editStore => _editStore;
// setEditStore(bool type) {
// _editStore = type;
// notifyListeners();
// }
// File? _image;
// File? get image => _image;
// void setImage(File? image) {
// _image = image;
// notifyListeners();
// }
// //// create store /////////////////////////////////////////////////////
// final TextEditingController bankName = TextEditingController();
// final TextEditingController accountHoldername = TextEditingController();
// final TextEditingController accountNumber = TextEditingController();
// final TextEditingController ifscCode = TextEditingController();
// final TextEditingController appwithdrawalPin = TextEditingController();
// String _selectedTime = 'Open';
// String _selectedClosedTime = 'Close';
// String get selectedTime => _selectedTime;
// String get selectedClosedTime => _selectedClosedTime;
// Future<void> Opening(BuildContext context) async {
// TimeOfDay? pickedTime = await showTimePicker(
// context: context,
// initialTime: TimeOfDay.now(),
// );
// if (pickedTime != null) {
// _selectedTime = pickedTime.format(context);
// notifyListeners();
// }
// }
// Future<void> closedTiming(BuildContext context) async {
// TimeOfDay? pickedTime = await showTimePicker(
// context: context,
// initialTime: TimeOfDay.now(),
// );
// if (pickedTime != null) {
// _selectedClosedTime = pickedTime.format(context);
// notifyListeners();
// }
// }
// String _pin = '';
// String _confirmPin = '';
// bool _isMatch = true;
// String get pin => _pin;
// String get confirmPin => _confirmPin;
// bool get isMatch => _isMatch;
// void setPin(String pin) {
// _pin = pin;
// _validatePins();
// }
// void setConfirmPin(String confirmPin) {
// _confirmPin = confirmPin;
// _validatePins();
// }
// void _validatePins() {
// _isMatch = _pin == _confirmPin;
// notifyListeners();
// }
// void reset() {
// _pin = '';
// _confirmPin = '';
// _isMatch = true;
// notifyListeners();
// }
// // create store
// // Dynamically build the operateDates map
// Map<String, bool> getOperateDates(List<String> selectedDays) {
// // Define all possible days
// List<String> allDays = [
// 'monday',
// 'tuesday',
// 'wednesday',
// 'thursday',
// 'friday',
// 'saturday',
// 'sunday'
// ];
// // Create the operateDates map
// Map<String, bool> operateDates = {
// for (var day in allDays)
// day: selectedDays.map((e) => e.toLowerCase()).contains(day)
// };
// return operateDates;
// }
// Future<bool> createStore(BuildContext context) async {
// context.showLoader(show: true);
// var data = {
// "storeName": storeName.text,
// "storeDescription": storeDescription.text,
// "officialPhoneNumber": officialPhoneNumber.text,
// "storeAddress": storeAddress.text,
// "gstNumber": storeGSTNumber.text,
// "gumastaNumber": storeGumastaNumber.text,
// "storePicture": image!.path.split('/').last,
// "operateDates": getOperateDates(selectedDays),
// "operateTimes": {
// "startTime": selectedTime,
// "endTime": selectedClosedTime
// },
// "paymentDetails": {
// "bankName": bankName.text,
// "accountHolder": accountHoldername.text,
// "accountNumber": accountNumber.text,
// "ifscCode": ifscCode.text,
// "appWithdrawalPin": confirmPin.toString()
// }
// };
// try {
// var result = await _storeRepo.createStore(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Store created successful!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// Future<bool> updateSore(BuildContext context,String id) async {
// context.showLoader(show: true);
// var data = {
// "operateDates": getOperateDates(selectedDays),
// "operateTimes": {
// "startTime": selectedTime,
// "endTime": selectedClosedTime
// },
// "paymentDetails": {
// "bankName": bankName.text,
// "accountHolder": accountHoldername.text,
// "accountNumber": accountNumber.text,
// "ifscCode": ifscCode.text,
// "appWithdrawalPin": confirmPin.toString()
// }
// };
// print("dfhgkjhg ${data}");
// try {
// var result = await _storeRepo.updateStore(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Store created successful!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// bool isLoading = false;
// StoreModel? store_model;
// Future<void> getStore() async {
// isLoading = true;
// notifyListeners();
// final result = await _storeRepo.getStore({});
// result.fold(
// (error) {
// // Handle error
// isLoading = false;
// notifyListeners();
// },
// (store) {
// setEditStore(false);
// print("lksjdfdkjf ${store.createdAt}");
// isLoading = false;
// store_model = store;
// notifyListeners();
// },
// );
// }
// Future<bool> vendorLogOut(BuildContext context) async {
// context.showLoader(show: true);
// var data = {};
// try {
// var result = await _storeRepo.vendorLogOut(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) async {
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Store created successful!"),
// backgroundColor: Colors.green,
// ),
// );
// await SharedPrefUtils.clear();
// context.clearAndPush(routePath: MyRoutes.SELECTACCOUNT);
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// }

View File

@@ -0,0 +1,443 @@
// import 'dart:io';
// import 'package:flutter/material.dart';
// import 'package:image_picker/image_picker.dart';
// import 'package:vendor_app/src/core/network_services/service_locator.dart';
// import 'package:vendor_app/src/core/utiils_lib/extensions.dart';
// import 'package:vendor_app/src/core/utiils_lib/snack_bar.dart';
// import 'package:vendor_app/src/data/ProductCategoryModel.dart';
// import 'package:vendor_app/src/data/prdouct_model.dart';
// import 'package:vendor_app/src/logic/repo/product_repo.dart';
// import 'package:flutter/material.dart';
// import 'package:vendor_app/src/core/network_services/service_locator.dart';
// import 'package:vendor_app/src/data/prdouct_model.dart';
// import 'package:vendor_app/src/logic/repo/product_repo.dart';
// import 'package:vendor_app/src/logic/services/product_locator.dart';
// class ProductProvider extends ChangeNotifier {
// ProductCategoryModel? selectedCategory;
// // String selectedSubcategory = '';
// // String selectedProduct = '';
// ProductCategoryModel? selectedSubcategory;
// ProductCategoryModel? selectedProduct;
// String productId = '';
// // String productDescription = '';
// // String productUnit = '';
// // double productPrice = 0.0;
// // double discountPrice = 0.0;
// bool inStock = true;
// String selectedProductQuantity = '';
// bool isLoading = false;
// final _authRepo = getIt<ProductRepo>();
// // Dynamic Data
// List<ProductCategoryModel> categories = [];
// Map<String, List<ProductCategoryModel>> subcategories = {};
// Map<String, List<ProductCategoryModel>> products = {};
// void setCategory(ProductCategoryModel category) {
// selectedCategory = category;
// selectedSubcategory = null;
// selectedProduct = null;
// products.clear();
// loadSubcategories(category);
// notifyListeners();
// }
// void setSubcategory(ProductCategoryModel subcategory) {
// selectedSubcategory = subcategory;
// selectedProduct = null;
// loadProducts(subcategory); // Load products for the selected subcategory
// notifyListeners();
// }
// void loadSubcategories(ProductCategoryModel category) {
// if (category.childCategories != null) {
// subcategories[category.name!] = category.childCategories!;
// } else {
// subcategories.clear();
// }
// notifyListeners();
// }
// // Load products for a selected subcategory
// void loadProducts(ProductCategoryModel subcategory) {
// if (subcategory.childCategories != null) {
// products[subcategory.name!] = subcategory.childCategories!;
// } else {
// products.clear();
// }
// notifyListeners();
// }
// void setProduct(ProductCategoryModel product) {
// productId = product.id!;
// selectedProduct = product;
// notifyListeners();
// }
// void setProductQuantity(String value) {
// selectedProductQuantity = value;
// notifyListeners();
// }
// void toggleStock(bool value) {
// inStock = value;
// notifyListeners();
// }
// void clearData() {
// _isImageLoading = false;
// productDescriptionController.clear();
// productUnitController.clear();
// productPriceController.clear();
// productProductDiscountPriceController.clear();
// productStockController.clear();
// productNameController.clear();
// productquantityController.clear();
// productqlongDescriptionController.clear();
// _isImageLoading = false;
// _selectedImage = null;
// selectedCategory = null;
// selectedSubcategory = null;
// selectedProduct = null;
// selectedSubcategory;
// categories = [];
// subcategories.forEach((key, value) => value.clear());
// products.forEach((key, value) => value.clear());
// subcategories = {};
// products = {};
// }
// // Fetch categories from API
// Future<void> getCategoryByLevel() async {
// clearData();
// isLoading = true;
// notifyListeners();
// final result = await _authRepo.getCategoryByLevel({});
// result.fold(
// (error) {
// isLoading = false;
// notifyListeners();
// },
// (categoryList) {
// // Populate categories and subcategories dynamically
// categories = categoryList;
// // Populate subcategories for each category
// for (var category in categoryList) {
// if (category.childCategories != null) {
// subcategories[category.name!] = category.childCategories!;
// }
// if (category.childCategories != null) {
// products[category.name!] = category.childCategories!;
// }
// }
// isLoading = false;
// notifyListeners();
// },
// );
// }
// // Load subcategories for a selected category
// final ImagePicker _picker = ImagePicker();
// File? _selectedImage;
// File? get selectedImage => _selectedImage;
// // Method to pick an image
// Future<void> pickImage(BuildContext context) async {
// final XFile? pickedFile =
// await _picker.pickImage(source: ImageSource.gallery);
// if (pickedFile != null) {
// _selectedImage = File(pickedFile.path);
// uploadImage(context);
// notifyListeners();
// }
// }
// TextEditingController productDescriptionController = TextEditingController();
// TextEditingController productUnitController = TextEditingController();
// TextEditingController productPriceController = TextEditingController();
// TextEditingController productProductDiscountPriceController =
// TextEditingController();
// TextEditingController productStockController = TextEditingController();
// TextEditingController productNameController = TextEditingController();
// TextEditingController productquantityController = TextEditingController();
// TextEditingController productqlongDescriptionController =
// TextEditingController();
// Future<bool> createProduct(BuildContext context) async {
// context.showLoader(show: true);
// try {
// var data = {
// "categoryId": productId,
// "quantity": productquantityController.text,
// "description": productDescriptionController.text,
// "unit": productUnitController.text,
// "basePrice": productPriceController.text,
// "discountPrice": productProductDiscountPriceController.text,
// "isInStock": inStock,
// "stock": int.parse(productStockController.text.isEmpty
// ? '0'
// : productStockController.text),
// "name": selectedProduct!.name,
// "additionalInfo": productqlongDescriptionController.text,
// "productImages": [_uploadedUrl]
// };
// print("hjhdfjg ${data}");
// var result = await _authRepo.createProduct(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Product created successful!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// Future<bool> deleteProduct(BuildContext context, String id) async {
// context.showLoader(show: true);
// try {
// var data = {};
// var result = await _authRepo.deleteProduct(data, id);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// _showSnackBar(context, "Product deleted successful!", Colors.green);
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// Future<bool> updateProduct(BuildContext context, String id) async {
// context.showLoader(show: true);
// print("check stock ${productUnitController.text}");
// try {
// var data = {
// "quantity": productquantityController.text,
// "description": productDescriptionController.text,
// "unit": productUnitController.text,
// "basePrice": productPriceController.text,
// "discountPrice": productProductDiscountPriceController.text,
// "isInStock": inStock,
// "stock": int.parse(productStockController.text.isEmpty
// ? '0'
// : productStockController.text),
// "name": productNameController!.text,
// "additionalInfo": productqlongDescriptionController.text,
// };
// print("check stock ${data}");
// var result = await _authRepo.updateProduct(data, id);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// _showSnackBar(context, "Product Updated successful!", Colors.green);
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// bool isLoadingg = false;
// List<Product> products1 = [];
// Future<void> getProduct() async {
// isLoadingg = true;
// notifyListeners();
// final result = await _authRepo.getProduct({});
// result.fold(
// (error) {
// // Handle error
// isLoadingg = false;
// notifyListeners();
// },
// (productList) {
// print("nfjkkjjfgk ${productList}");
// products1 = productList.data!;
// isLoadingg = false;
// notifyListeners();
// },
// );
// }
// // Future<bool> uploadImage(BuildContext context) async
// // {
// // context.showLoader(show: true);
// // try {
// // var data = {
// // "image": selectedImage!.path,
// // };
// // var result = await _authRepo.uploadImage(data);
// // context.showLoader(show: false);
// // return result.fold(
// // (error)
// // {
// // // Show error Snackbar
// // ScaffoldMessenger.of(context).showSnackBar(
// // SnackBar(
// // content: Text(error.message),
// // backgroundColor: Colors.red,
// // ),
// // );
// // return false; // Login failed
// // },
// // (response)
// // {
// // print("check thie respodnse ${ response.status}");
// // ScaffoldMessenger.of(context).showSnackBar(
// // SnackBar(
// // content: Text("Product created successful!"),
// // backgroundColor: Colors.green,
// // ),
// // );
// // return true;
// // },
// // );
// // } catch (e) {
// // context.showLoader(show: false);
// // print("Unexpected error: $e");
// // ScaffoldMessenger.of(context).showSnackBar(
// // SnackBar(
// // content: Text("Something went wrong. Please try again."),
// // backgroundColor: Colors.red,
// // ),
// // );
// // return false;
// // }
// // }
// bool _isImageLoading = false;
// bool get isImageLoading => _isImageLoading;
// String _uploadedUrl = '';
// Future<bool> uploadImage(BuildContext context) async {
// final result = await _authRepo.uploadImage(selectedImage!);
// return result.fold(
// (error) {
// // _showSnackBar(context, error.message, Colors.red);
// return false;
// },
// (uploadImage) {
// _isImageLoading = true;
// _uploadedUrl = uploadImage.data!.url.toString();
// notifyListeners();
// _showSnackBar(context, "Image uploaxded successfully!", Colors.green);
// return true;
// },
// );
// }
// void _showSnackBar(BuildContext context, String message, Color color) {
// showTopSnackBar(context, message, color);
// }
// }

View File

@@ -0,0 +1,61 @@
// import 'package:flutter/material.dart';
// import 'package:vendor_app/src/core/network_services/service_locator.dart';
// import 'package:vendor_app/src/core/utiils_lib/shared_pref_utils.dart';
// import 'package:vendor_app/src/logic/repo/home_repo.dart';
// class HomeProvider extends ChangeNotifier {
// final _homeRepo = getIt<HomeRepo>();
// Future<bool> refreshToken(BuildContext context) async {
// var data = {"refresh_token": "${await SharedPrefUtils.getRefreshToken()}"};
// var result = await _homeRepo.refreshToken(data, context);
// return result.fold(
// (error) {
// print("dkjhsfgjkdfkg");
// return true;
// },
// (response) {
// print("dkjhssfdgdfgdfgfgjkdfkg");
// return true;
// },
// );
// }
// String _userName = '';
// String _phone = '';
// String get userName => _userName;
// String get phone => _phone;
// void setUserName(String name) {
// _userName = name;
// notifyListeners();
// }
// void setPhone(String phoneNumber) {
// _phone = phoneNumber;
// notifyListeners();
// }
// Future<void> getMe() async {
// var data = {};
// try {
// var result = await _homeRepo.getMe(data);
// return result.fold(
// (error) {},
// (response) {
// setUserName(response.firstName);
// setPhone(response.phone);
// SharedPrefUtils.USER_NAME =
// response.firstName + " " + response.lastName;
// SharedPrefUtils.PHONE = response.phone;
// notifyListeners();
// },
// );
// } catch (e) {}
// }
// }

View File

@@ -0,0 +1,225 @@
import 'package:flutter/material.dart';
import 'package:grocery_app/src/core/network_services/service_locator.dart';
import 'package:grocery_app/src/logic/repo/auth_repo.dart';
import 'package:grocery_app/utils/extensions/extensions.dart';
class LoginProvider extends ChangeNotifier {
final _authRepo = getIt<AuthRepo>();
final TextEditingController passwordController = TextEditingController();
final TextEditingController emailOrPasswordController =
TextEditingController();
final TextEditingController phoneController = TextEditingController();
final TextEditingController newPassword = TextEditingController();
final TextEditingController confirmsNewPassword = TextEditingController();
final TextEditingController countryCodes = TextEditingController();
String countryCode = '';
// Future<bool> login(BuildContext context) async {
// context.showLoader(show: true);
// var data = {
// "phone": "+91" + emailOrPasswordController.text,
// "password": passwordController.text
// };
// print("Check request data: $data");
// try {
// var result = await _authRepo.login(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Login successful!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e)
// {
// context.showLoader(show: false);
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// Future<bool> forgetPassword(BuildContext context, String countryCode) async {
// context.showLoader(show: true);
// countryCodes.text = countryCode;
// var data = {"phone": countryCode + phoneController.text};
// print("Check dddd data: $data");
// try {
// var result = await _authRepo.forgetPassword(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Send Otp successful!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// Future<bool> verifyForgetPassword(BuildContext context, String value) async {
// context.showLoader(show: true);
// var data = {
// "phone": countryCodes.text + phoneController.text,
// "otp": value
// };
// print("Check request data: $data");
// try {
// var result = await _authRepo.verifyForgetPassword(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Otp verify successful!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
// Future<bool> reset_password(BuildContext context) async {
// context.showLoader(show: true);
// var data = {
// "resetToken": await SharedPrefUtils.getResetToken(),
// "newPassword": newPassword.text
// };
// print("Check request data: $data");
// try {
// var result = await _authRepo.reset_password(data);
// context.showLoader(show: false);
// return result.fold(
// (error) {
// // Show error Snackbar
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(error.message),
// backgroundColor: Colors.red,
// ),
// );
// return false; // Login failed
// },
// (response) {
// // Login success
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Password successfully created!"),
// backgroundColor: Colors.green,
// ),
// );
// return true;
// },
// );
// } catch (e) {
// context.showLoader(show: false);
// print("Unexpected error: $e");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text("Something went wrong. Please try again."),
// backgroundColor: Colors.red,
// ),
// );
// return false;
// }
// }
}

View File

@@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
// class TermsNotifier extends ChangeNotifier {
// bool _isChecked = false;
// bool get isChecked => _isChecked;
// void toggleCheckbox(bool value) {
// _isChecked = value;
// notifyListeners();
// }
// }

View File

@@ -0,0 +1,149 @@
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:fpdart/fpdart.dart';
import 'package:grocery_app/src/core/utils/custom_dio_exception.dart';
import 'package:grocery_app/src/core/utils/response_type_def.dart';
import 'package:grocery_app/src/data/OTPResponseModel.dart';
import 'package:grocery_app/src/data/vendor_otpModel.dart';
import 'package:grocery_app/src/logic/services/auth_service_locator.dart';
import 'package:grocery_app/utils/constants/shared_pref_utils.dart';
class AuthRepo {
final AuthServices _authServices;
AuthRepo(this._authServices);
FutureResult<String> sendOtp(data) async {
try {
var response = await _authServices.sendOtp(data);
final String model = response.toString();
// OtpResponseModel otpResponseModel =
// otpResponseModelFromJson(response.toString());
return right(model);
} on DioException catch (e) {
print("dhfgfdgjdhfgfgh ${e}");
var error = CustomDioExceptions.handleError(e);
return left(error);
}
}
FutureResult<VendorOtpModel> verifyOtp(data) async {
try {
var response = await _authServices.verifyOtp(data);
final VendorOtpModel vendorOtpModel =
vendorOtpModelFromJson(response.toString());
if (vendorOtpModel.data != null)
{
await SharedPrefUtils.setToken(
authToken: vendorOtpModel.data!.accessToken ?? "");
}
// final String model = response.toString();
return right(vendorOtpModel);
} on DioException catch (e) {
var error = CustomDioExceptions.handleError(e);
return left(error);
}
}
// FutureResult<LoginResponse> login(data) async {
// try {
// var response = await _authServices.login(data);
// LoginResponse loginResponse = loginResponseFromJson(response.toString());
// if (loginResponse.accessToken != null) {
// await SharedPrefUtils.setToken(
// authToken: loginResponse.accessToken ?? "");
// await SharedPrefUtils.setRefreshToken(
// refresh_token: loginResponse.refreshToken ?? "");
// }
// print("Response status code: ${response.statusCode}");
// return right(loginResponse);
// } on DioException catch (e) {
// print("DioException occurred: $e");
// if (e.response != null) {
// int statusCode = e.response!.statusCode ?? 0;
// var errorData = e.response!.data; // Error body from the server
// String errorMessage =
// errorData['message']['message'] ?? 'Unknown error';
// print("Error: $errorMessage (Status Code: $statusCode)");
// // Custom error handling
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// } else {
// // Handle other DioExceptions without a response (e.g., network issues)
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// }
FutureResult<String> customerRegister(data) async {
try {
var response = await _authServices.userRegister(data);
final String model = response.toString();
return right(model);
} on DioException catch (e) {
var error = CustomDioExceptions.handleError(e);
return left(error);
}
}
// FutureResult<String> forgetPassword(data) async {
// try {
// var response = await _authServices.forgetPassword(data);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> verifyForgetPassword(data) async {
// try {
// var response = await _authServices.verifyForgetPassword(data);
// PasswordModel passwordModel = passwordModelFromJson(response.toString());
// if (passwordModel.data != null) {
// print("JHGhjhg ${passwordModel.data!.resetToken}");
// await SharedPrefUtils.setResetToken(
// resetToken: passwordModel.data!.resetToken ?? "");
// }
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> reset_password(data) async {
// try {
// var response = await _authServices.reset_password(data);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
}

View File

@@ -0,0 +1,68 @@
// import 'package:dio/dio.dart';
// import 'package:flutter/material.dart';
// import 'package:fpdart/fpdart.dart';
// import 'package:vendor_app/src/core/routes/routes.dart';
// import 'package:vendor_app/src/core/utiils_lib/custom_dio_exception.dart';
// import 'package:vendor_app/src/core/utiils_lib/extensions.dart';
// import 'package:vendor_app/src/core/utiils_lib/response_type_def.dart';
// import 'package:vendor_app/src/core/utiils_lib/shared_pref_utils.dart';
// import 'package:vendor_app/src/data/login_response.dart';
// import 'package:vendor_app/src/data/vendor_model.dart';
// import 'package:vendor_app/src/logic/services/home_locator.dart';
// class HomeRepo {
// final HomeService _homeService;
// HomeRepo(this._homeService);
// FutureResult<String> refreshToken(data, BuildContext context) async {
// try {
// var response = await _homeService.refresh_token(data);
// LoginResponse loginResponse = loginResponseFromJson(response.toString());
// if (loginResponse.accessToken != null) {
// print("chwckData ${loginResponse.accessToken}");
// await SharedPrefUtils.setToken(
// authToken: loginResponse.accessToken ?? "");
// await SharedPrefUtils.setRefreshToken(
// refresh_token: loginResponse.refreshToken ?? "");
// }
// final String model = response.toString();
// return right(model);
// } on DioException catch (e)
// {
// context.clearAndPush(routePath: MyRoutes.SELECTACCOUNT);
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<VendorModel> getMe(data) async {
// try {
// var response = await _homeService.getMe(data);
// final VendorModel vendorModel = vendorModelFromJson(response.toString());
// if (vendorModel != null)
// {
// SharedPrefUtils.USER_NAME =
// vendorModel.firstName + " " + vendorModel.lastName;
// SharedPrefUtils.PHONE = vendorModel.phone;
// print("dkfjhdkfhkfk ${SharedPrefUtils.USER_NAME}");
// await SharedPrefUtils.setStoreId(storeId: vendorModel.storeId ?? "");
// }
// final String model = response.toString();
// return right(vendorModel);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// }

View File

@@ -0,0 +1,126 @@
// import 'dart:io';
// import 'package:dio/dio.dart';
// import 'package:fpdart/fpdart.dart';
// import 'package:vendor_app/src/core/utiils_lib/custom_dio_exception.dart';
// import 'package:vendor_app/src/core/utiils_lib/response_type_def.dart';
// import 'package:vendor_app/src/core/utiils_lib/shared_pref_utils.dart';
// import 'package:vendor_app/src/data/ProductCategoryModel.dart';
// import 'package:vendor_app/src/data/prdouct_model.dart';
// import 'package:vendor_app/src/data/upload_image.dart';
// import 'package:vendor_app/src/data/vendor_otpModel.dart';
// import 'package:vendor_app/src/logic/services/product_locator.dart';
// import 'package:vendor_app/src/logic/services/service_locator.dart';
// class ProductRepo {
// final ProductService _productServices;
// ProductRepo(this._productServices);
// FutureResult<PrdouctModel> getProduct(data) async {
// try {
// var response = await _productServices.getProduct(data);
// final PrdouctModel prdouctModel =
// prdouctModelFromJson(response.toString());
// if (prdouctModel.data!.isNotEmpty)
// {
// print("check data are fetch are note");
// }
// // final String model = response.toString();
// return right(prdouctModel);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<List<ProductCategoryModel>> getCategoryByLevel(data) async
// {
// try {
// var response = await _productServices.getCategoryByLevel(data);
// final List<ProductCategoryModel> productModels = (response.data as List)
// .map((item) => ProductCategoryModel.fromJson(item))
// .toList();
// if (response != null && response.data != null)
// {
// // Parse the response data into a list of ProductCategoryModel
// final List<ProductCategoryModel> productModels = (response.data as List)
// .map((item) => ProductCategoryModel.fromJson(item))
// .toList();
// // Print or handle the fetched data
// if (productModels.isNotEmpty)
// {
// print(
// "Data successfully fetched and parsed: ${productModels.length} categories.");
// }
// }
// return right(productModels);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> createProduct(data) async {
// try {
// var response = await _productServices.createProduct(data);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> deleteProduct(data,id) async
// {
// try {
// var response = await _productServices.deleteProduct(data,id);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> updateProduct(data,id) async
// {
// try {
// var response = await _productServices.updateProduct(data,id);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<UploadImage> uploadImage(File imageFile)
// async {
// try {
// final response = await _productServices.uploadImage(imageFile);
// UploadImage upload=uploadImageFromJson(response.toString());
// return right(upload);
// } on DioException catch (e) {
// final error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// }

View File

@@ -0,0 +1,72 @@
// import 'package:dio/dio.dart';
// import 'package:fpdart/fpdart.dart';
// import 'package:vendor_app/src/core/utiils_lib/custom_dio_exception.dart';
// import 'package:vendor_app/src/core/utiils_lib/response_type_def.dart';
// import 'package:vendor_app/src/data/store_model.dart';
// import 'package:vendor_app/src/logic/services/store_locator.dart';
// class StoreRepo {
// final StoreService _storeService;
// StoreRepo(this._storeService);
// FutureResult<String> createStore(data) async {
// try {
// var response = await _storeService.createStore(data);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> updateStore(data) async {
// try {
// var response = await _storeService.updateStore(data);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<StoreModel> getStore(data) async
// {
// try {
// var response = await _storeService.getStore(data);
// print("objectdjsfngjkdfjjfjb");
// StoreModel storeModel = storeModelFromJson(response.toString());
// if (storeModel != null)
// {
// print("objectdjsfngjkdfjjfjbetyrtytryut");
// }
// final String model = response.toString();
// return right(storeModel);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// FutureResult<String> vendorLogOut(data) async {
// try {
// var response = await _storeService.logoutVendor(data);
// final String model = response.toString();
// return right(model);
// } on DioException catch (e) {
// var error = CustomDioExceptions.handleError(e);
// return left(error);
// }
// }
// }

View File

@@ -0,0 +1,129 @@
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:grocery_app/src/core/constant/api.dart';
import 'package:grocery_app/src/core/network_services/api_services.dart';
class AuthServices extends ApiService {
/// Login
Future sendOtp(data) async
{
var response = await api.post(APIURL.sendOtp, data: jsonEncode(data));
return response;
}
Future verifyOtp(data) async {
var response = await api.post(APIURL.verifyOtp, data: jsonEncode(data));
return response;
}
Future login(data) async
{
var response = await api.post(APIURL.login, data: jsonEncode(data));
//response.statusCode
return response;
}
Future userRegister(data) async
{
var response = await api.post(APIURL.customerRegister, data: jsonEncode(data));
return response;
}
Future forgetPassword(data) async
{
var response = await api.post(APIURL.forgetPassword, data: jsonEncode(data));
return response;
}
Future verifyForgetPassword(data) async
{
var response = await api.post(APIURL.verifyForgetPassword, data: jsonEncode(data));
return response;
}
Future reset_password(data) async
{
var response = await api.post(APIURL.reset_password, data: jsonEncode(data));
return response;
}
/// Login
// Future profileUpdate(data) async {
// var response = await api.put(Endpoints.update, data: data);
// return response;
// }
// /// Update badges
// Future updateBadge(data) async {
// var response = await api.put(Endpoints.updateBadge, data: data);
// return response;
// }
// /// Login
// Future getProfile() async {
// var response = await api.get(
// Endpoints.myProfile,
// );
// return response;
// }
// Future getAvatar() async {
// var response = await api.get(
// Endpoints.getAvatar,
// );
// return response;
// }
// Future getAllBadge() async {
// var response = await api.get(
// Endpoints.getAllBadge,
// );
// return response;
// }
// Future getOtherProfile(data) async {
// var response =
// await api.get(Endpoints.getOtherUserProfile, queryParameters: data);
// return response;
// }
// setNotificatinStatus(data) async {
// var response = await api.put(Endpoints.notificationSettings, data: data);
// return response;
// }
// Future reportUser(data) async {
// var response = await api.post(Endpoints.report, data: data);
// return response;
// }
// Future logOut(data) async {
// var response = await api.post(Endpoints.signOut, data: data);
// return response;
// }
}

View File

@@ -0,0 +1,27 @@
// import 'dart:convert';
// import 'package:vendor_app/src/core/constant/api.dart';
// import 'package:vendor_app/src/core/network_services/api_services.dart';
// class HomeService extends ApiService {
// Future getMe(data) async {
// var response = await api.get(APIURL.getMe, data: jsonEncode(data));
// //response.statusCode
// return response;
// }
// Future refresh_token(data) async
// {
// var response = await api.post(APIURL.refresh_token, data: jsonEncode(data));
// //response.statusCode
// return response;
// }
// }

View File

@@ -0,0 +1,58 @@
// import 'dart:convert';
// import 'dart:io';
// import 'package:dio/dio.dart';
// import 'package:vendor_app/src/core/constant/api.dart';
// import 'package:vendor_app/src/core/network_services/api_services.dart';
// class ProductService extends ApiService {
// // Future createStore(data) async
// // {
// // var response = await api.get(APIURL.createStore, data: jsonEncode(data));
// // return response;
// // }
// Future getProduct(data) async {
// var response = await api.get(APIURL.getProduct, data: jsonEncode(data));
// return response;
// }
// Future createProduct(data) async {
// var response = await api.post(APIURL.getProduct, data: jsonEncode(data));
// return response;
// }
// Future deleteProduct(data, id) async {
// var response =
// await api.delete(APIURL.deleteProduct + id, data: jsonEncode(data));
// return response;
// }
// Future updateProduct(data, id) async {
// var response =
// await api.patch(APIURL.updateProduct + id, data: jsonEncode(data));
// return response;
// }
// Future getCategoryByLevel(data) async {
// var response =
// await api.get(APIURL.getCategoryByLevel, data: jsonEncode(data));
// return response;
// }
// // Future uploadImage(data) async
// // {
// // var response = await api.post(APIURL.uploadImage, data: jsonEncode(data));
// // return response;
// // }
// Future<Response> uploadImage(File imageFile,
// {Map<String, dynamic>? additionalFields}) async {
// const String url = APIURL.uploadImage;
// return await api.uploadImage(
// url,
// imageFile,
// additionalFields: additionalFields,
// );
// }
// }

View File

@@ -0,0 +1,33 @@
// import 'dart:convert';
// import 'package:vendor_app/src/core/constant/api.dart';
// import 'package:vendor_app/src/core/network_services/api_services.dart';
// import 'package:vendor_app/src/core/utiils_lib/shared_pref_utils.dart';
// class StoreService extends ApiService {
// Future createStore(data) async {
// var response = await api.post(APIURL.createStore, data: jsonEncode(data));
// return response;
// }
// Future getStore(data) async {
// String storeId = "${await SharedPrefUtils.getStoreId()}";
// print("lkdsjhgjhdfgh ${APIURL.getStore + storeId}");
// var response =
// await api.get(APIURL.getStore + storeId, data: jsonEncode(data));
// return response;
// }
// Future logoutVendor(data) async {
// var response = await api.post(APIURL.vendorLogOut, data: jsonEncode(data));
// return response;
// }
// Future updateStore(data) async {
// var response = await api.patch(APIURL.updateStore, data: jsonEncode(data));
// return response;
// }
// }