Untitled
unknown
plain_text
2 years ago
29 kB
8
Indexable
import 'package:ceramic_quotation/app/model/account_model/account_model.dart'; import 'package:ceramic_quotation/app/model/account_model/account_request_update_model.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../database/database_service.dart'; import '../../../utils/utils.dart'; import '../account_service/account_service.dart'; class AccountController extends GetxController { bool sortAscending = true; int? sortColumnIndex; AccountModel? accountModel = AccountModel(); List<AccountData> accountData = []; List<AccountUpdateRequestModel> accountUpdateData = []; TextEditingController idController = TextEditingController(); TextEditingController nameController = TextEditingController(); TextEditingController aliasController = TextEditingController(); TextEditingController districtController = TextEditingController(); TextEditingController addressController = TextEditingController(); TextEditingController cityController = TextEditingController(); TextEditingController stateController = TextEditingController(); TextEditingController accountTypeController = TextEditingController(); TextEditingController pinCodeController = TextEditingController(); TextEditingController numberController = TextEditingController(); TextEditingController emailController = TextEditingController(); final DatabaseService databaseService = getIt.get<DatabaseService>(); void sorting<T>( Comparable<T> Function(AccountData d) getField, int columnIndex, bool ascending, ) { sort<T>(getField, ascending); sortColumnIndex = columnIndex; sortAscending = ascending; update(); } unFoucs(index) { accountData[index].f2.unfocus(); accountData[index].f3.unfocus(); accountData[index].f4.unfocus(); accountData[index].f5.unfocus(); accountData[index].f6.unfocus(); accountData[index].f7.unfocus(); accountData[index].f8.unfocus(); accountData[index].f9.unfocus(); accountData[index].f10.unfocus(); accountData[index].f11.unfocus(); } void sort<T>(Comparable<T> Function(AccountData d) getField, bool ascending) { accountData.sort((a, b) { final aValue = getField(a); final bValue = getField(b); return ascending ? Comparable.compare(aValue, bValue) : Comparable.compare(bValue, aValue); }); update(); } @override onInit() async { //geAccountData(); await getAccountDataFromDatabase(); super.onInit(); } geAccountData() async { final getaccountData = await AccountService().getRequest(); accountData = getaccountData!.data ?? []; if (getaccountData.data != null && getaccountData.data!.isNotEmpty) { databaseService.saveAccount(getaccountData.data ?? []); } update(); return accountModel; } getAccountDataFromDatabase() async { final data = await databaseService.getAccountData(); accountData = data; accountModel!.data = accountData; update(); } accountDelete(index) { databaseService.clearAccountData(accountData[index]); getAccountDataFromDatabase(); update(); } accountUpdate( AccountUpdateRequestModel? accountUpdateRequestModel, ) async { accountData = accountUpdateData.cast<AccountData>(); print(accountUpdateData.first.email); try { var response = await AccountService().accountUpdate(accountUpdateRequestModel); print("Data update Successfully by user"); geAccountData(); return response; } catch (e) { print("Data not Update ${e}"); } update(); } runFilter(String enteredKeyword) { accountData = (enteredKeyword.isEmpty ? accountModel!.data : accountModel!.data! .where((element) => element.name! .toLowerCase() .contains(enteredKeyword.toLowerCase())) .toList())!; accountData = (enteredKeyword.isEmpty ? accountModel!.data : accountModel!.data! .where((element) => element.name! .toLowerCase() .contains(enteredKeyword.toLowerCase())) .toList())!; update(); return accountData; } } import 'package:ceramic_quotation/app/model/account_model/account_model.dart'; import 'package:ceramic_quotation/app/model/account_model/account_request_update_model.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../database/database_service.dart'; import '../../../utils/utils.dart'; import '../account_service/account_service.dart'; class AccountController extends GetxController { bool sortAscending = true; int? sortColumnIndex; AccountModel? accountModel = AccountModel(); List<AccountData> accountData = []; List<AccountUpdateRequestModel> accountUpdateData = []; TextEditingController idController = TextEditingController(); TextEditingController nameController = TextEditingController(); TextEditingController aliasController = TextEditingController(); TextEditingController districtController = TextEditingController(); TextEditingController addressController = TextEditingController(); TextEditingController cityController = TextEditingController(); TextEditingController stateController = TextEditingController(); TextEditingController accountTypeController = TextEditingController(); TextEditingController pinCodeController = TextEditingController(); TextEditingController numberController = TextEditingController(); TextEditingController emailController = TextEditingController(); final DatabaseService databaseService = getIt.get<DatabaseService>(); void sorting<T>( Comparable<T> Function(AccountData d) getField, int columnIndex, bool ascending, ) { sort<T>(getField, ascending); sortColumnIndex = columnIndex; sortAscending = ascending; update(); } unFoucs(index) { accountData[index].f2.unfocus(); accountData[index].f3.unfocus(); accountData[index].f4.unfocus(); accountData[index].f5.unfocus(); accountData[index].f6.unfocus(); accountData[index].f7.unfocus(); accountData[index].f8.unfocus(); accountData[index].f9.unfocus(); accountData[index].f10.unfocus(); accountData[index].f11.unfocus(); } void sort<T>(Comparable<T> Function(AccountData d) getField, bool ascending) { accountData.sort((a, b) { final aValue = getField(a); final bValue = getField(b); return ascending ? Comparable.compare(aValue, bValue) : Comparable.compare(bValue, aValue); }); update(); } @override onInit() async { //geAccountData(); await getAccountDataFromDatabase(); super.onInit(); } geAccountData() async { final getaccountData = await AccountService().getRequest(); accountData = getaccountData!.data ?? []; if (getaccountData.data != null && getaccountData.data!.isNotEmpty) { databaseService.saveAccount(getaccountData.data ?? []); } update(); return accountModel; } getAccountDataFromDatabase() async { final data = await databaseService.getAccountData(); accountData = data; accountModel!.data = accountData; update(); } accountDelete(index) { databaseService.clearAccountData(accountData[index]); getAccountDataFromDatabase(); update(); } accountUpdate( AccountUpdateRequestModel? accountUpdateRequestModel, ) async { accountData = accountUpdateData.cast<AccountData>(); print(accountUpdateData.first.email); try { var response = await AccountService().accountUpdate(accountUpdateRequestModel); print("Data update Successfully by user"); geAccountData(); return response; } catch (e) { print("Data not Update ${e}"); } update(); } runFilter(String enteredKeyword) { accountData = (enteredKeyword.isEmpty ? accountModel!.data : accountModel!.data! .where((element) => element.name! .toLowerCase() .contains(enteredKeyword.toLowerCase())) .toList())!; accountData = (enteredKeyword.isEmpty ? accountModel!.data : accountModel!.data! .where((element) => element.name! .toLowerCase() .contains(enteredKeyword.toLowerCase())) .toList())!; update(); return accountData; } } /////////////////////////////////////// import 'package:ceramic_quotation/app/common/tabal_screen.dart'; import 'package:ceramic_quotation/app/common/text_filed.dart'; import 'package:ceramic_quotation/app/constant/app_color.dart'; import 'package:ceramic_quotation/app/constant/app_string.dart'; import 'package:ceramic_quotation/app/model/account_model/account_model.dart'; import 'package:ceramic_quotation/app/modules/member_add/controller/member_add_controller.dart'; import 'package:ceramic_quotation/app/utils/app_prefrence.dart'; import 'package:data_table_2/data_table_2.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../common/custom_button.dart'; import '../../../database/database_service.dart'; import '../../../routes/app_pages.dart'; import '../../../utils/utils.dart'; import '../controller/account_controller.dart'; class AccountView extends GetView<AccountController> { AccountView({super.key}); final DatabaseService databaseService = getIt.get<DatabaseService>(); TextEditingController showMenu = TextEditingController(); // AccountController abc = Get.put(AccountController()); @override Widget build(BuildContext context) { MemberController memberController = Get.put(MemberController()); return GetBuilder<AccountController>( init: AccountController(), builder: (accountController) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only( top: 20, left: 20, bottom: 20, right: 10, ), child: Row( children: [ LoginTextField( onChanged: (val) { accountController.runFilter(val); }, isdense: true, height: 15, prefixIcon: const Icon( Icons.search_rounded, color: Colors.grey, size: 18, ), hintText: AppString.findName, hintStyle: Get.theme.primaryTextTheme.titleLarge, fieldStyle: Get.theme.primaryTextTheme.headlineMedium, ), Padding( padding: const EdgeInsets.all(20), child: CustomButton( title: AppString.add, onTap: () { memberController.getUpdateMember(); Get.toNamed(Routes.member); }, ), ), /* Padding( padding: const EdgeInsets.all(20), child: CustomButton( title: AppString.upDate, onTap: () { AppPreference.clear(); AppPreference.remove("admin"); Get.toNamed(Routes.login); print("String Is${AppPreference.getString('admin')}"); accountController.update(); }, ), ),*/ ], ), ), if (accountController.accountData.isEmpty) Center( child: CircularProgressIndicator( color: AppColors.blue, ), ) else Expanded( child: Padding( padding: const EdgeInsets.only(left: 20, right: 10), child: TableScreen( sortAscending: accountController.sortAscending, sortColumnIndex: accountController.sortColumnIndex, sortingName: (index, ascending) { accountController.sorting( (d) => d.name!, index, ascending, ); }, dropDownValueAlias: true, dropDownValueGroup: true, dropDownValueParty: true, dropDownValueAliasText: false, dropDownValuePartyText: false, dataColumnOne: AppString.no, dataColumnTwo: AppString.name, dataColumnThree: AppString.alias, dataColumnFour: AppString.party, dataColumnFive: AppString.address, dataColumnSix: AppString.city, dataColumnSeven: AppString.pinCode, dataColumnEight: AppString.state, dataColumnNine: AppString.mobileNo, dataColumnTen: AppString.email, dataColumnEleOne: AppString.active, dataCondiCation: true, dataColumnSizeTwo: ColumnSize.M, dataColumnSizeSix: ColumnSize.S, dataColumnSizeOne: ColumnSize.S, dataColumnSizeSeven: ColumnSize.S, dataColumnSizeEight: ColumnSize.S, dataColumnSizeThree: ColumnSize.M, dataColumnSizeFour: ColumnSize.M, dataColumnSizeEleOne: ColumnSize.S, rows: List.generate( accountController.accountData.length, (index) { accountController.accountData[index].idController.text = accountController.accountData[index].id!; accountController.accountData[index].nameController .text = accountController.accountData[index].name!; accountController.accountData[index].aliasController .text = accountController.accountData[index].alias!; accountController .accountData[index].addressController.text = accountController.accountData[index].address!; accountController.accountData[index].emailController .text = accountController.accountData[index].email!; accountController.accountData[index].stateController .text = accountController.accountData[index].state!; accountController .accountData[index].pincodeController.text = accountController.accountData[index].pin! .toString(); accountController.accountData[index].cityController .text = accountController.accountData[index].city!; accountController .accountData[index].districtController.text = accountController.accountData[index].district!; accountController .accountData[index].accountTypeController.text = accountController.accountData[index].accounttype!; accountController .accountData[index].numberController.text = accountController.accountData[index].mobile!; cursoPosition( accountController.accountData[index], ); return DataRow( cells: [ DataCell(TextField( readOnly: true, focusNode: accountController.accountData[index].f1, controller: accountController .accountData[index].idController, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].nameController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].name = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].aliasController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].alias = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].addressController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].address = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].cityController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].city = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].pincodeController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].pin = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].stateController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].state = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].numberController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].mobile = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].emailController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController.accountData[index].email = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(TextField( controller: accountController .accountData[index].accountTypeController, /* onTap: () { FocusScope.of(context).requestFocus(onclick( context, accountController.accountData[index], )); },*/ onChanged: (value) { accountController .accountData[index].accounttype = value; databaseService.accountUpdate( accountController.accountData[index],); }, style: Get.theme.textTheme.displayLarge, )), DataCell(IconButton( splashColor: Colors.transparent, highlightColor: Colors.transparent, focusColor: Colors.transparent, onPressed: () { // accountController.accoundelete(index); showMyDialog(context, index); }, icon: Icon(Icons.more_horiz),)), ], ); }, ), ), ), ), ], ); }, ); } Future<void> showMyDialog(context, index) async { AccountController accountController = Get.put(AccountController()); return showDialog<void>( context: context, barrierDismissible: false, // user must tap button! builder: (BuildContext context) { return AlertDialog( title: Text('are you sure you want to delete'), content: SingleChildScrollView( child: Column( children: <Widget>[ Text('Would you like to delete this data?'), ], ), ), actions: <Widget>[ TextButton( child: Text('delete'), onPressed: () { accountController.accountDelete(index); Navigator.of(context).pop(); }, ), TextButton( child: Text('Cancel'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); } /*onclick(context, AccountData accountData) { AccountController accountController = Get.put(AccountController()); AccountUpdateRequestModel accountUpdateRequestModel = AccountUpdateRequestModel( id: accountData.idController.text, name: accountData.nameController.text, alias: accountData.aliasController.text, accounttype: accountData.accountTypeController.text, address: accountData.addressController.text, city: accountData.cityController.text, district: accountData.districtController.text, mobile: accountData.numberController.text, email: accountData.emailController.text, pin: accountData.pincodeController.text, state: accountData.stateController.text, ); accountController.accountUpdate( accountUpdateRequestModel, context, ); }*/ cursoPosition(AccountData accountData) { accountData.nameController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.nameController.text.length), ); accountData.aliasController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.aliasController.text.length), ); accountData.accountTypeController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.accountTypeController.text.length), ); accountData.addressController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.addressController.text.length), ); accountData.cityController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.cityController.text.length), ); accountData.stateController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.stateController.text.length), ); accountData.numberController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.numberController.text.length), ); accountData.pincodeController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.pincodeController.text.length), ); accountData.districtController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.districtController.text.length), ); accountData.emailController.selection = TextSelection.fromPosition( TextPosition(offset: accountData.emailController.text.length), ); } }
Editor is loading...