Untitled

 avatar
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...