Untitled
unknown
plain_text
a year ago
7.5 kB
4
Indexable
import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:paywell_apps/data/dataSource/repository/api_response.dart'; import 'package:paywell_apps/models/licence/ess_licence_model.dart'; import 'package:paywell_apps/models/login/get_login/get_login_data_model.dart'; import 'package:paywell_apps/models/login/get_login/get_login_model.dart'; import 'package:paywell_apps/models/login/get_login/login_data_model.dart'; import 'package:paywell_apps/models/login/get_login/validate_login_model.dart'; import 'package:paywell_apps/models/response/base/response_model.dart'; import 'package:paywell_apps/utils/app_prefrence.dart'; import 'package:paywell_apps/utils/app_routes.dart'; import 'package:paywell_apps/widgets/common_widgets/toast.dart'; import '../data/repository/auth_repo.dart'; class AuthProvider with ChangeNotifier { final AuthRepo authRepo; AuthProvider({required this.authRepo}); bool _isLoading = false; bool get isLoading => _isLoading; // Variables bool _passwordVisible = false; bool get passwordVisible => _passwordVisible; bool _isClickable = true; final _formKey = GlobalKey<FormState>(); GlobalKey<FormState> get formKey => _formKey; ///Input controller TextEditingController clientCodeController = TextEditingController(); TextEditingController usernameController = TextEditingController(); TextEditingController passwordController = TextEditingController(); GetLoginModel? _loginModel; //Functions Future<void> onTapLogin(context) async { if (_isClickable) { if (_formKey.currentState?.validate() ?? false) { _isClickable = false; await login(clientCodeController.text, context); } } } void onTextObscure() { _passwordVisible = !_passwordVisible; notifyListeners(); } Future<ResponseModel> login(clientCode, context) async { ResponseModel responseModel; _isLoading = true; notifyListeners(); try { ApiResponse apiRegisterResponse = await authRepo.login(clientCode); if (apiRegisterResponse.response != null && apiRegisterResponse.response!.statusCode == 200) { if (apiRegisterResponse.response?.data["status"] .toString() .contains("Success") ?? false) { // Parse json data in Model class _loginModel = GetLoginModel.fromJson(apiRegisterResponse.response?.data); await authRepo.setUserToken(_loginModel?.token ?? ""); var d = json.decode(_loginModel?.result ?? ""); var connectionString = ConnectionString.fromJson(d["ConnectionString"][0]); await authRepo.setValue( AppLocal.customerId, connectionString.customerid ?? ""); await authRepo.setValue( AppLocal.clientCode, clientCodeController.text); // Validate Login var validateLoginModel = (await validateLogin()); var licenseResp = await essLicenseFun(context); if (!licenseResp.isSuccess) { throw Error.safeToString(licenseResp.message); } if (validateLoginModel.isSuccess) { var res = jsonDecode(validateLoginModel.data.data ?? ""); Login? login; if (res["Login"] == null) { throw Error.safeToString(validateLoginModel.data.message ?? ""); } login = Login.fromJson(res["Login"][0]); await authRepo.setValue(AppLocal.companyCode, login.companyCode); await authRepo.setValue(AppLocal.empCode, login.empCode); await authRepo.setValue(AppLocal.userId, login.userId); await authRepo.setValue(AppLocal.applicableForEPunch, login.applicableForEPunch); if (login.mobileAppAllowed == 1) { FToast().toast(context, validateLoginModel.data.message); Navigator.pushNamedAndRemoveUntil( context, AppRoute.leaveApplication, (route) => false); responseModel = ResponseModel(true, 'Login Successful', _loginModel); } else { throw Error.safeToString("you are not eligible for mobile app"); } } else { throw Error.safeToString(validateLoginModel.message); } } else { responseModel = ResponseModel(false, 'Login failed', null); } } else { responseModel = ResponseModel(false, apiRegisterResponse.error ?? "", null); } } catch (e) { FToast().toast( context, e.toString().replaceAll('\\""', "").replaceAll('"\\"', "")); responseModel = ResponseModel(false, 'Login Failed', null); } _isLoading = false; _isClickable = true; notifyListeners(); return responseModel; } Future<ResponseModel> validateLogin() async { ResponseModel responseModel; notifyListeners(); try { ApiResponse apiRegisterResponse = await authRepo.validateLogin({ "username": usernameController.text, "password": passwordController.text, }); if (apiRegisterResponse.response!.statusCode == 200) { if (apiRegisterResponse.response?.data["status"] == "Success") { responseModel = ResponseModel( true, 'Validate Successful', ValidateLoginModel.fromJson( apiRegisterResponse.response?.data ?? {})); } else { throw Error.safeToString("Validation Failed"); } } else { throw Error.safeToString("Validation Failed"); } } catch (e) { responseModel = ResponseModel(false, 'Validation Failed', null); } notifyListeners(); return responseModel; } Future<ResponseModel> essLicenseFun(context) async { ResponseModel responseModel; notifyListeners(); try { ApiResponse apiRegisterResponse = await authRepo.essLicenseFun({ "username": usernameController.text, "password": passwordController.text, }); if (apiRegisterResponse.response!.statusCode == 200) { if (apiRegisterResponse.response?.data["statusCode"] == "1") { responseModel = ResponseModel(true, '', EssLicenseModel.fromJson(apiRegisterResponse.response?.data)); } else { throw Error.safeToString( apiRegisterResponse.response?.data['message']); } } else { throw Error.safeToString("License Failed"); } } catch (e) { print("Error -> $e"); responseModel = ResponseModel(false, e.toString().trim(), null); } notifyListeners(); return responseModel; } Future<ResponseModel> logout() async { ResponseModel responseModel; _isLoading = true; try { responseModel = ResponseModel(true, "Logout", null); await clearSharedData(); } on Exception { responseModel = ResponseModel(false, "Logout", null); } _isLoading = false; notifyListeners(); return responseModel; } bool isLoggedIn() { return authRepo.isLoggedIn(); } Future<bool> clearSharedData() async { return await authRepo.clearSharedData(); } String getUserToken() { return authRepo.getUserToken(); } void clear() { // Clear Provider notifyListeners(); } }
Editor is loading...
Leave a Comment