diff --git a/core/lib/core.dart b/core/lib/core.dart index f86d52b58..1de8bb826 100644 --- a/core/lib/core.dart +++ b/core/lib/core.dart @@ -33,6 +33,7 @@ export 'utils/benchmark.dart'; export 'utils/fps_manager.dart'; export 'utils/build_utils.dart'; export 'utils/wrapper.dart'; +export 'utils/string_convert.dart'; // Views export 'presentation/views/text/slogan_builder.dart'; diff --git a/core/lib/utils/string_convert.dart b/core/lib/utils/string_convert.dart new file mode 100644 index 000000000..3042a1c9b --- /dev/null +++ b/core/lib/utils/string_convert.dart @@ -0,0 +1,10 @@ +class StringConvert { + static String? writeEmptyToNull(String text) { + if (text.isEmpty) return null; + return text; + } + + static String writeNullToEmpty(String? text) { + return text ?? ''; + } +} diff --git a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart new file mode 100644 index 000000000..4c05750d5 --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart @@ -0,0 +1,82 @@ +import 'package:collection/collection.dart'; +import 'package:core/core.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:model/mailbox/presentation_mailbox.dart'; +import 'package:tmail_ui_user/features/base/base_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart'; + +class AdvancedFilterController extends BaseController { + + final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs; + final mailboxFilterSelectedFormAdvancedSearch = Rxn(); + final hasAttachment = false.obs; + + TextEditingController fromFilterInputController = TextEditingController(); + TextEditingController toFilterInputController = TextEditingController(); + TextEditingController subjectFilterInputController = TextEditingController(); + TextEditingController hasKeyWordFilterInputController = TextEditingController(); + TextEditingController notKeyWordFilterInputController = TextEditingController(); + TextEditingController dateFilterInputController = TextEditingController(); + TextEditingController mailBoxFilterInputController = TextEditingController(); + + final SearchController _searchController = Get.find(); + final MailboxDashBoardController _mailboxDashBoardController = Get.find(); + + SearchEmailFilter get _searchEmailFilter => _searchController.searchEmailFilter.value; + + selectOpenAdvanceSearch() { + _searchController.isAdvancedSearchViewOpen.toggle(); + } + + cleanSearchFilter() { + _searchController.cleanSearchFilter(); + } + + applyAdvancedSearchFilter(BuildContext context){ + _mailboxDashBoardController.searchEmail(context, StringConvert.writeNullToEmpty(_searchEmailFilter.text?.value)); + } + + initSearchFilterField(BuildContext context) { + fromFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.from.firstOrNull); + toFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.to.firstOrNull); + subjectFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.subject); + hasKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.hasKeyword); + notKeyWordFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.notKeyword); + dateFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.emailReceiveTimeType.getTitle(context)); + mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(_searchEmailFilter.mailbox?.name?.name); + dateFilterSelectedFormAdvancedSearch.value = _searchEmailFilter.emailReceiveTimeType; + mailboxFilterSelectedFormAdvancedSearch.value = _searchEmailFilter.mailbox; + hasAttachment.value = _searchEmailFilter.hasAttachment; + } + + @override + void onInit() { + super.onInit(); + // TODO: implement onDone + } + @override + void onDone() { + // TODO: implement onDone + } + + @override + void onError(error) { + // TODO: implement onError + } + + @override + void onClose() { + fromFilterInputController.dispose(); + subjectFilterInputController.dispose(); + toFilterInputController.dispose(); + hasKeyWordFilterInputController.dispose(); + notKeyWordFilterInputController.dispose(); + mailBoxFilterInputController.dispose(); + dateFilterInputController.dispose(); + super.onClose(); + } +}