Merge branch 'feat/fd-1023' into feat/fd-1035

This commit is contained in:
J. A. Messias 2024-12-11 10:26:22 -03:00
commit 463136c01e
28 changed files with 41 additions and 622 deletions

View File

@ -59,7 +59,7 @@ class PhpGroup {
static GetResidentsByProperty getResidentsByProperty = GetResidentsByProperty();
static GetOpenedVisits getOpenedVisits = GetOpenedVisits();
static GetLicense getLicense = GetLicense();
static FakeOpenedVisits getProvSchedules = FakeOpenedVisits();
static GetProvSchedules getProvSchedules = GetProvSchedules();
}
class GetProvSchedules {
@ -70,6 +70,7 @@ class GetProvSchedules {
final String cliID = (await StorageHelper().get(KeychainStorageKey.clientUUID.value)) ?? '';
const String atividade = 'getAgendamentoProv';
const String pageSize = '10';
final bool isFiltered = status != '' && status != '.*';
// const String baseUrl = 'http://localhost:3000';
return await ApiManager.instance.makeApiCall(
callName: 'getProvSchedules',
@ -77,7 +78,7 @@ class GetProvSchedules {
callType: ApiCallType.POST,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
params: {
if (status != '') 'status': status,
if (isFiltered) 'status': status,
'devUUID': devUUID,
'userUUID': userUUID,
'cliID': cliID,
@ -128,40 +129,6 @@ class GetOpenedVisits {
}
}
class FakeOpenedVisits {
Future<ApiCallResponse> call(final String page, final String status) async {
final Map<String, dynamic> jsonBody = {
"error": false,
"agendamento": {
"total": 66,
"value": [
{"AGP_ID": 32, "AGP_NOME": "assa", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-12-08T12:09:00.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "CO", "IS_DELETED": false},
{"AGP_ID": 31, "AGP_NOME": "laksjsal", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-12-08T12:09:00.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "CO", "IS_DELETED": false},
{"AGP_ID": 29, "AGP_NOME": "teste", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-12-08T12:01:00.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "CO", "IS_DELETED": false},
{"AGP_ID": 30, "AGP_NOME": "jrjdj", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-12-08T12:01:00.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "CO", "IS_DELETED": false},
{"AGP_ID": 28, "AGP_NOME": "Lucas test", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-12-08T11:57:00.000Z", "AGP_OBSERVACAO": "dds", "AGP_STATUS": "CO", "IS_DELETED": false},
{
"AGP_ID": 27,
"AGP_NOME": "Lucas Teste",
"AGP_PRO_ID": 1,
"AGP_DT_VISITA": "2024-12-08T11:54:00.000Z",
"AGP_OBSERVACAO": "Testando ",
"AGP_STATUS": "CO",
"IS_DELETED": false
},
{"AGP_ID": 84, "AGP_NOME": "dsfsaf", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-11-14T17:28:00.000Z", "AGP_OBSERVACAO": "sdfgds", "AGP_STATUS": "CO", "IS_DELETED": false},
{"AGP_ID": 107, "AGP_NOME": "twsre", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-11-12T19:20:00.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "AT", "IS_DELETED": false},
{"AGP_ID": 86, "AGP_NOME": "AOBA", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-11-09T16:18:36.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "CO", "IS_DELETED": false},
{"AGP_ID": 85, "AGP_NOME": "alibaba", "AGP_PRO_ID": 1, "AGP_DT_VISITA": "2024-11-09T16:14:59.000Z", "AGP_OBSERVACAO": "", "AGP_STATUS": "CO", "IS_DELETED": false}
]
}
};
final Map<String, String> headers = {'Content-Type': 'application/json'};
final int statusCode = 200;
return ApiCallResponse(jsonBody, headers, statusCode);
}
}
class GetResidentsByProperty {
Future<ApiCallResponse> call(final String page) async {
final String baseUrl = PhpGroup.getBaseUrl();

View File

@ -0,0 +1,2 @@
export 'local_data_sources/index.dart';
export 'remote_data_sources/index.dart';

View File

@ -0,0 +1,2 @@
export 'access_history_local_data_source.dart';
export 'provisional_history_local_data_source.dart';

View File

@ -0,0 +1,2 @@
export 'access_history_remote_data_source.dart';
export 'provisional_history_remote_data_source.dart';

View File

@ -0,0 +1,2 @@
export 'access_history_repository_impl.dart';
export 'provisional_history_repository_impl.dart';

View File

@ -0,0 +1 @@
export 'history_repository.dart';

View File

@ -1,106 +0,0 @@
// import 'package:flutter/material.dart';
// import 'package:flutter_bloc/flutter_bloc.dart';
// import 'package:hub/backend/api_requests/api_calls.dart';
// import 'package:hub/components/molecular_components/message_opt_modal/opt_modal_widget.dart';
// import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
// import 'package:hub/features/history/index.dart';
// import 'package:hub/flutter_flow/flutter_flow_theme.dart';
// import 'package:hub/flutter_flow/internationalization.dart';
// import 'package:hub/shared/helpers/storage/base_storage.dart';
// import 'package:hub/shared/helpers/storage/storage_helper.dart';
// class AcessCubit extends Cubit<String?> {
// AcessCubit() : super('Provisional');
// Future<void> fetchCliUUID() async {
// final cliUUID = await StorageHelper().get(KeychainStorageKey.clientUUID.value);
// emit(cliUUID);
// }
// Future<ApiCallResponse> fetchHistoryService(int pageSize, int pageNumber, Map<String, String> opt) async {
// return await PhpGroup.getAccessCall.call(
// pageSize: pageSize.toString(),
// pageNumber: pageNumber.toString(),
// pesTipo: opt['personType'] != 'E' && opt['personType'] != 'O' ? 'T' : opt['personType'],
// );
// }
// bool filterLogic(dynamic item, Map<String, String> opt) {
// final personTypeMatches = opt['personType'] == '.*' || item["PES_TIPO"].toString() == opt['personType'];
// return personTypeMatches;
// }
// }
// class AccessHistoryPage extends StatelessWidget {
// final Map<String, String> opt = {
// 'personType': '.*',
// 'accessType': '.*',
// 'search': '.*',
// };
// final String appBarTitle = 'Histórico Provisório';
// final String noHistoryMessage = 'Nenhum histórico encontrado!';
// final String errorMessage = 'Falha ao realizar operação!';
// @override
// Widget build(BuildContext context) {
// return BlocProvider(
// create: (context) => AcessCubit()..fetchCliUUID(),
// child: HistoryPageTemplate(
// opt: opt,
// fetchHistoryService: (pageSize, pageNumber, opt) => context.read<AcessCubit>().fetchHistoryService(pageSize, pageNumber, opt),
// cardBuilder: cardBuilder,
// appBarTitle: appBarTitle,
// noHistoryMessage: noHistoryMessage,
// errorMessage: errorMessage,
// isLeading: true,
// isFilter: true,
// filterLogic: (item, opt) => context.read<AcessCubit>().filterLogic(item, opt),
// ),
// );
// }
// Widget cardBuilder(BuildContext context, dynamic historyItem) {
// final cliUUID = context.watch<AcessCubit>().state;
// final String imagePath = 'https://freaccess.com.br/freaccess/getImage.php?cliID=${cliUUID}&atividade=getFoto&Documento=${historyItem['PES_ID'] ?? ''}&tipo=${historyItem['PES_TIPO'] ?? ''}';
// final Map<String, String> labelsHashMap = {
// FFLocalizations.of(context).getVariableText(ptText: 'Nome:', enText: 'Name:'): historyItem['PES_NOME'] ?? '',
// FFLocalizations.of(context).getVariableText(ptText: 'Acesso:', enText: 'Access:'): historyItem['ACE_DATAHORA'] ?? '',
// FFLocalizations.of(context).getVariableText(ptText: 'Setor', enText: 'Sector'): historyItem['SET_DESCRICAO'] ?? '',
// };
// final statusHashMap = [
// _getPersonTypeStatus(context, historyItem['PES_TIPO']),
// _getAccessTypeStatus(context, historyItem['ACE_TIPO']),
// ];
// return CardItemTemplateComponentWidget(
// imagePath: imagePath,
// labelsHashMap: labelsHashMap,
// statusHashMap: statusHashMap,
// onTapCardItemAction: () async {},
// );
// }
// Map<String, Color> _getPersonTypeStatus(BuildContext context, String? personType) {
// switch (personType) {
// case 'O':
// return {FFLocalizations.of(context).getVariableText(ptText: 'Morador', enText: 'Resident'): FlutterFlowTheme.of(context).alternate2};
// case 'E':
// return {FFLocalizations.of(context).getVariableText(ptText: 'Visitante', enText: 'Visitor'): FlutterFlowTheme.of(context).alternate2};
// default:
// return {FFLocalizations.of(context).getVariableText(ptText: 'Desconhecido', enText: 'Unknown'): FlutterFlowTheme.of(context).alternate2};
// }
// }
// Map<String, Color> _getAccessTypeStatus(BuildContext context, String? accessType) {
// switch (accessType) {
// case '0':
// return {FFLocalizations.of(context).getVariableText(ptText: 'Entrada', enText: 'Entrance'): FlutterFlowTheme.of(context).success};
// case '1':
// return {FFLocalizations.of(context).getVariableText(ptText: 'Saída', enText: 'Exit'): FlutterFlowTheme.of(context).error};
// default:
// return {FFLocalizations.of(context).getVariableText(ptText: 'Desconhecido', enText: 'Unknown'): FlutterFlowTheme.of(context).warning};
// }
// }
// }

View File

@ -1,117 +0,0 @@
// import 'package:flutter/material.dart';
// import 'package:flutter_bloc/flutter_bloc.dart';
// import 'package:hub/backend/api_requests/api_manager.dart';
// import 'package:hub/flutter_flow/nav/nav.dart';
// import 'package:hub/shared/utils/dialog_util.dart';
// import 'package:hub/shared/utils/log_util.dart';
// class HistoryBloc extends Bloc<HistoryEvent, HistoryState> {
// final ScrollController scrollController = ScrollController();
// final Future<ApiCallResponse> Function(int pageSize, int pageNumber, Map<String, String> opt) fetchHistoryService;
// final bool Function(dynamic item, Map<String, String> opt)? filterLogic;
// HistoryBloc(Map<String, String> opt, this.fetchHistoryService, {this.filterLogic}) : super(HistoryState(opt: opt)) {
// scrollController.addListener(_onScroll);
// on<UpdateHistoryEvent>(_onUpdateHistory);
// on<FetchHistoryEvent>(_onFetchHistory);
// add(FetchHistoryEvent());
// }
// void _onScroll() {
// if (scrollController.position.atEdge && scrollController.position.pixels != 0) {
// add(FetchHistoryEvent());
// }
// }
// Future<void> _onUpdateHistory(UpdateHistoryEvent event, Emitter<HistoryState> emit) async {
// emit(state.copyWith(opt: event.newOpt, historyWrap: [], pageNumber: 1));
// add(FetchHistoryEvent());
// }
// Future<void> _onFetchHistory(FetchHistoryEvent event, Emitter<HistoryState> emit) async {
// if (state.loading) return;
// emit(state.copyWith(loading: true));
// try {
// var response = await fetchHistoryService(state.pageSize, state.pageNumber, state.opt);
// final List<dynamic> history = response.jsonBody['acessos'] ?? [];
// List<dynamic> filteredHistory = history.where((item) {
// if (filterLogic != null) {
// return filterLogic!(item, state.opt);
// } else {
// return true;
// }
// }).toList();
// if (filteredHistory.isNotEmpty) {
// emit(state.copyWith(
// historyWrap: [...state.historyWrap, ...filteredHistory],
// hasData: true,
// loading: false,
// pageNumber: state.pageNumber + 1,
// ));
// } else {
// emit(state.copyWith(hasData: false, loading: false));
// }
// } catch (e, s) {
// await DialogUtil.errorDefault(navigatorKey.currentContext!);
// LogUtil.requestAPIFailed('processRequest', "", "Fetch History", e, s);
// emit(state.copyWith(hasData: false, loading: false, error: e.toString()));
// }
// }
// @override
// Future<void> close() {
// scrollController.dispose();
// return super.close();
// }
// }
// class HistoryState {
// final Map<String, String> opt;
// final List<dynamic> historyWrap;
// final bool hasData;
// final bool loading;
// final int pageNumber;
// final int pageSize;
// final String? error;
// HistoryState({
// required this.opt,
// this.historyWrap = const [],
// this.hasData = false,
// this.loading = false,
// this.pageNumber = 1,
// this.pageSize = 10,
// this.error,
// });
// HistoryState copyWith({
// Map<String, String>? opt,
// List<dynamic>? historyWrap,
// bool? hasData,
// bool? loading,
// int? pageNumber,
// int? pageSize,
// String? error,
// }) {
// return HistoryState(
// opt: opt ?? this.opt,
// historyWrap: historyWrap ?? this.historyWrap,
// hasData: hasData ?? this.hasData,
// loading: loading ?? this.loading,
// pageNumber: pageNumber ?? this.pageNumber,
// pageSize: pageSize ?? this.pageSize,
// error: error ?? this.error,
// );
// }
// }
// abstract class HistoryEvent {}
// class UpdateHistoryEvent extends HistoryEvent {
// final Map<String, String> newOpt;
// UpdateHistoryEvent(this.newOpt);
// }
// class FetchHistoryEvent extends HistoryEvent {}

View File

@ -1,218 +0,0 @@
// import 'dart:developer';
// import 'package:flutter/material.dart';
// import 'package:flutter_bloc/flutter_bloc.dart';
// import 'package:google_fonts/google_fonts.dart';
// import 'package:hub/features/history/index.dart';
// import 'package:hub/flutter_flow/internationalization.dart';
// import 'package:hub/flutter_flow/nav/nav.dart';
// import 'package:hub/backend/api_requests/api_manager.dart';
// import 'package:hub/flutter_flow/flutter_flow_theme.dart';
// import 'package:hub/shared/utils/dialog_util.dart';
// import 'package:hub/shared/utils/log_util.dart';
// import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
// class HistoryPageTemplate extends StatelessWidget {
// final Map<String, String> opt;
// final Future<ApiCallResponse> Function(int pageSize, int pageNumber, Map<String, String> opt) fetchHistoryService;
// final Widget Function(BuildContext context, dynamic historyItem) cardBuilder;
// final String appBarTitle;
// final String noHistoryMessage;
// final String errorMessage;
// final bool isLeading;
// final bool isFilter;
// final bool Function(dynamic item, Map<String, String> opt)? filterLogic;
// const HistoryPageTemplate({
// Key? key,
// required this.opt,
// required this.fetchHistoryService,
// required this.cardBuilder,
// this.appBarTitle = 'History',
// this.noHistoryMessage = 'No history found!',
// this.errorMessage = 'Failed to perform operation!',
// this.isLeading = true,
// this.isFilter = false,
// this.filterLogic,
// }) : super(key: key);
// @override
// Widget build(BuildContext context) {
// return BlocProvider(
// create: (context) => HistoryBloc(opt, fetchHistoryService, filterLogic: filterLogic),
// child: HistoryPageView(
// cardBuilder: cardBuilder,
// appBarTitle: appBarTitle,
// noHistoryMessage: noHistoryMessage,
// errorMessage: errorMessage,
// isLeading: isLeading,
// isFilter: isFilter,
// ),
// );
// }
// }
// class HistoryPageView extends StatelessWidget {
// final Widget Function(BuildContext context, dynamic historyItem) cardBuilder;
// final String appBarTitle;
// final String noHistoryMessage;
// final String errorMessage;
// final bool isLeading;
// final bool isFilter;
// const HistoryPageView({
// Key? key,
// required this.cardBuilder,
// required this.appBarTitle,
// required this.noHistoryMessage,
// required this.errorMessage,
// this.isLeading = false,
// this.isFilter = false,
// }) : super(key: key);
// @override
// Widget build(BuildContext context) {
// final theme = FlutterFlowTheme.of(context);
// return Scaffold(
// key: GlobalKey<ScaffoldState>(),
// backgroundColor: theme.primaryBackground,
// appBar: _buildAppBar(context, theme),
// body: _buildBody(context),
// );
// }
// PreferredSizeWidget _buildAppBar(BuildContext context, FlutterFlowTheme theme) {
// return AppBar(
// backgroundColor: theme.primaryBackground,
// automaticallyImplyLeading: false,
// leading: isLeading ? _buildBackButton(context, theme) : null,
// title: _buildTitle(context, theme),
// centerTitle: true,
// elevation: 0.0,
// actions: [
// if (isFilter) _buildFilterButton(context),
// ],
// );
// }
// Widget _buildBackButton(BuildContext context, FlutterFlowTheme theme) {
// return FlutterFlowIconButton(
// borderColor: Colors.transparent,
// borderRadius: 30.0,
// borderWidth: 1.0,
// buttonSize: 60.0,
// icon: Icon(
// Icons.keyboard_arrow_left,
// color: theme.primaryText,
// size: 30.0,
// ),
// onPressed: () => Navigator.of(context).pop(),
// );
// }
// Widget _buildTitle(BuildContext context, FlutterFlowTheme theme) {
// return Text(
// appBarTitle,
// style: theme.headlineMedium.override(
// fontFamily: theme.headlineMediumFamily,
// color: theme.primaryText,
// fontSize: 16.0,
// letterSpacing: 0.0,
// useGoogleFonts: GoogleFonts.asMap().containsKey(theme.headlineMediumFamily),
// ),
// );
// }
// Widget _buildFilterButton(BuildContext context) {
// return Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// Padding(
// padding: const EdgeInsets.fromLTRB(0, 0, 10, 0),
// child: IconButton(
// icon: const Icon(Icons.filter_list),
// onPressed: () async {
// final Map<String, String>? selectedFilter = await showModalBottomSheet<Map<String, String>>(
// isScrollControlled: true,
// backgroundColor: Colors.transparent,
// context: context,
// builder: (BuildContext bottomSheetContext) {
// return GestureDetector(
// onTap: () => Navigator.of(bottomSheetContext).pop(),
// child: Container(
// color: Colors.transparent,
// child: GestureDetector(
// onTap: () {},
// child: FilterModalWidget(
// defaultSelections: {
// 'personType': context.read<HistoryBloc>().state.opt['personType'] == '.*' ? ['E', 'O'] : [context.read<HistoryBloc>().state.opt['personType']],
// 'search': '.*',
// },
// filterOptions: {
// 'personType': [
// {
// 'title': FFLocalizations.of(context).getVariableText(ptText: 'Visitante', enText: 'Visitor'),
// 'value': 'E',
// },
// {
// 'title': FFLocalizations.of(context).getVariableText(ptText: 'Morador', enText: 'Resident'),
// 'value': 'O',
// },
// ],
// },
// filterTitles: {
// 'personType': 'Person Type',
// },
// ),
// ),
// ),
// );
// },
// );
// if (selectedFilter != null) {
// context.read<HistoryBloc>().add(UpdateHistoryEvent(selectedFilter));
// }
// },
// ),
// ),
// ],
// );
// }
// Widget _buildBody(BuildContext context) {
// return BlocBuilder<HistoryBloc, HistoryState>(
// builder: (context, state) {
// log('state: ${state.historyWrap}');
// if (state.loading && state.historyWrap.isEmpty) {
// return Center(
// child: CircularProgressIndicator(
// valueColor: AlwaysStoppedAnimation<Color>(
// FlutterFlowTheme.of(context).primary,
// ),
// ),
// );
// } else if (state.error != null) {
// return Center(
// child: Text(errorMessage),
// );
// } else if (state.historyWrap.isEmpty) {
// return Center(
// child: Text(noHistoryMessage),
// );
// } else {
// return ListView.builder(
// shrinkWrap: true,
// physics: const BouncingScrollPhysics(),
// controller: context.read<HistoryBloc>().scrollController,
// itemCount: state.historyWrap.length,
// itemBuilder: (context, index) {
// final historyItem = state.historyWrap[index];
// return cardBuilder(context, historyItem);
// },
// );
// }
// },
// );
// }
// }

View File

@ -1,3 +0,0 @@
export 'access_history_page.dart';
export 'history_page_template.dart';
export 'provisional_history_page copy.dart';

View File

@ -1,100 +0,0 @@
// import 'dart:developer';
// import 'package:flutter/material.dart';
// import 'package:flutter_bloc/flutter_bloc.dart';
// import 'package:hub/backend/api_requests/api_calls.dart';
// import 'package:hub/components/molecular_components/message_opt_modal/opt_modal_widget.dart';
// import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
// import 'package:hub/features/history/index.dart';
// import 'package:hub/flutter_flow/flutter_flow_theme.dart';
// import 'package:hub/flutter_flow/internationalization.dart';
// import 'package:hub/shared/helpers/storage/base_storage.dart';
// import 'package:hub/shared/helpers/storage/storage_helper.dart';
// class ProvisionalCubit extends Cubit<String?> {
// ProvisionalCubit() : super('Provisional');
// Future<void> fetchCliUUID() async {
// final cliUUID = await StorageHelper().get(KeychainStorageKey.clientUUID.value);
// emit(cliUUID);
// }
// Future<ApiCallResponse> fetchHistoryService(int pageSize, int pageNumber, Map<String, String> status) async {
// log('fetchHistoryService: $pageSize, $pageNumber, $status');
// return await PhpGroup.getProvSchedules(pageNumber.toString(), '');
// }
// bool filterLogic(dynamic item, Map<String, String> opt) {
// final personTypeMatches = opt['personType'] == '.*' || item["PES_TIPO"].toString() == opt['personType'];
// return personTypeMatches;
// }
// }
// class ProvisionalHistoryPage extends StatelessWidget {
// ProvisionalHistoryPage({super.key});
// final Map<String, String> opt = {
// 'personType': '.*',
// 'accessType': '.*',
// 'search': '.*',
// };
// final String appBarTitle = 'Histórico Provisório';
// final String noHistoryMessage = 'Nenhum histórico encontrado!';
// final String errorMessage = 'Falha ao realizar operação!';
// @override
// Widget build(BuildContext context) {
// return BlocProvider(
// create: (context) => HistoryBloc(
// opt,
// (pageSize, pageNumber, opt) => context.read<ProvisionalCubit>().fetchHistoryService(pageSize, pageNumber, opt),
// filterLogic: (item, opt) => context.read<ProvisionalCubit>().filterLogic(item, opt),
// ),
// child: HistoryPageTemplate(
// opt: opt,
// fetchHistoryService: (pageSize, pageNumber, opt) => context.read<ProvisionalCubit>().fetchHistoryService(pageSize, pageNumber, opt),
// cardBuilder: cardBuilder,
// appBarTitle: appBarTitle,
// noHistoryMessage: noHistoryMessage,
// errorMessage: errorMessage,
// isLeading: true,
// isFilter: false,
// filterLogic: (item, opt) => context.read<ProvisionalCubit>().filterLogic(item, opt),
// ),
// );
// }
// Widget cardBuilder(BuildContext context, dynamic historyItem) {
// log('historyItem: $historyItem');
// final cliUUID = context.watch<ProvisionalCubit>().state;
// final String imagePath =
// 'https://freaccess.com.br/freaccess/getImage.php?cliID=${cliUUID}&atividade=getFoto&Documento=${historyItem['PES_ID'] ?? ''}&tipo=${historyItem['PES_TIPO'] ?? ''}';
// final Map<String, String> labelsHashMap = {
// FFLocalizations.of(context).getVariableText(ptText: 'Nome:', enText: 'Name:'): historyItem['AGP_NOME'] ?? '',
// FFLocalizations.of(context).getVariableText(ptText: 'Acesso:', enText: 'Access:'): historyItem['AGP_DT_VISITA'] ?? '',
// };
// final statusHashMap = [
// _getTypeStatus(context, historyItem['AGP_STATUS']),
// ];
// return CardItemTemplateComponentWidget(
// imagePath: imagePath,
// labelsHashMap: labelsHashMap,
// statusHashMap: statusHashMap,
// onTapCardItemAction: () async {},
// );
// }
// Map<String, Color> _getTypeStatus(BuildContext context, String? accessType) {
// switch (accessType) {
// case '0':
// return {FFLocalizations.of(context).getVariableText(ptText: 'Entrada', enText: 'Entrance'): FlutterFlowTheme.of(context).success};
// case '1':
// return {FFLocalizations.of(context).getVariableText(ptText: 'Saída', enText: 'Exit'): FlutterFlowTheme.of(context).error};
// default:
// return {FFLocalizations.of(context).getVariableText(ptText: 'Desconhecido', enText: 'Unknown'): FlutterFlowTheme.of(context).warning};
// }
// }
// }

View File

@ -13,6 +13,7 @@ import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/shared/utils/dialog_util.dart';
import 'package:hub/shared/utils/limited_text_size.dart';
import 'package:hub/shared/utils/log_util.dart';
import 'package:hub/shared/utils/snackbar_util.dart';
import 'package:rxdart/rxdart.dart';
@immutable
@ -213,23 +214,15 @@ class ProvisionalHistoryState extends State<ProvisionalHistoryPage> {
final List<dynamic> history = response.jsonBody['agendamento']['value'] ?? [];
List<dynamic> filtered = history.where((item) {
bool statusMatches = status == '.*';
if (statusMatches) return statusMatches;
statusMatches = item["AGP_STATUS"].toString() == status;
return statusMatches;
}).toList();
// List<dynamic> filtered = history;
if (filtered.isNotEmpty) {
if (history.isNotEmpty) {
setState(() {
wrap.addAll(filtered);
wrap.addAll(history);
hasData = true;
_loading = false;
});
return response;
}
_showNoMoreDataSnackbar(context);
SnackBarUtil.showNoMoreDataSnackbar(context);
setState(() {
hasData = false;
_loading = false;
@ -246,22 +239,6 @@ class ProvisionalHistoryState extends State<ProvisionalHistoryPage> {
return null;
}
void _showNoMoreDataSnackbar(BuildContext context) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."),
style: TextStyle(
color: Colors.white,
fontSize: LimitedFontSizeUtil.getBodyFontSize(context),
),
),
duration: const Duration(seconds: 3),
backgroundColor: FlutterFlowTheme.of(context).primary,
),
);
}
Widget _body(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
@ -387,7 +364,6 @@ class ProvisionalHistoryState extends State<ProvisionalHistoryPage> {
}
Map<String, Color> _getStatusMap(BuildContext context, String status) {
log('status: $status');
switch (status) {
case 'AT':
return {
@ -400,8 +376,8 @@ class ProvisionalHistoryState extends State<ProvisionalHistoryPage> {
return {
FFLocalizations.of(context).getVariableText(
ptText: 'Convidado',
enText: 'Guest',
): FlutterFlowTheme.of(context).tertiary,
enText: 'Called',
): FlutterFlowTheme.of(context).alternate2,
};
case 'IN':
return {

View File

@ -73,11 +73,8 @@ class _FilterWidgetState extends State<FilterWidget> {
};
widget.filterOptions.forEach((key, options) {
log('key: $key' + ' selected: ${selected[key]}');
log('options: $options');
filterResult[key] = selected[key]!.isEmpty || selected[key]!.length < 1 ? '.*' : selected[key]!;
});
log('filterResult: $filterResult');
setState(() {
// Update the state with the new filter result
selected = filterResult;
@ -130,10 +127,8 @@ class _FilterWidgetState extends State<FilterWidget> {
value: selected[key]!.contains(option['value']),
onChanged: (bool? value) {
setState(() {
log('value: $value');
if (value == true) {
if (!selected[key]!.contains(option['value'])) {
log('selected[key]: ${selected[key]}');
selected[key] = option['value'];
}
} else {
@ -166,7 +161,7 @@ class _FilterWidgetState extends State<FilterWidget> {
return Center(
child: Container(
width: screenWidth - (screenWidth * 0.35),
height: 250,
height: screenWidth - (screenWidth * 0.25),
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).primaryBackground,
borderRadius: BorderRadius.circular(24.0),

View File

@ -1,11 +1,11 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:hub/features/home/presentation/widgets/drawer_widget.dart';
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/shared/components/molecules/drawer/index.dart';
import 'package:hub/shared/components/molecules/locals/index.dart';
import 'package:hub/shared/components/molecules/menu/index.dart';
@ -52,7 +52,7 @@ class _HomePageWidgetState extends State<HomePageWidget> with WidgetsBindingObse
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
drawerEnableOpenDragGesture: true,
drawerDragStartBehavior: DragStartBehavior.start,
drawer: CustomDrawer(),
drawer: DrawerWidget(),
appBar: buildAppBar(context),
body: buildPage(context),
);

View File

@ -9,8 +9,8 @@ import 'package:hub/shared/components/molecules/locals/index.dart';
import 'package:hub/shared/components/molecules/menu/index.dart';
import 'package:hub/shared/components/molecules/modules/index.dart';
class CustomDrawer extends StatelessWidget {
const CustomDrawer({super.key});
class DrawerWidget extends StatelessWidget {
const DrawerWidget({super.key});
@override
Widget build(BuildContext context) {

View File

@ -1 +0,0 @@
export 'drawer_widget.dart';

View File

@ -65,7 +65,7 @@ class MenuEntry implements BaseModule {
key: 'FRE-HUB-PROVISIONAL-HISTORY',
icon: Icons.person_search_outlined,
name: FFLocalizations.of(navigatorKey.currentContext!).getVariableText(
ptText: 'Histórico Provisório',
ptText: 'Consultar Agendas',
enText: 'Provisional History',
),
route: '/provisionalHistoryPage',

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:hub/flutter_flow/internationalization.dart';
import 'package:hub/shared/utils/limited_text_size.dart';
import '../../flutter_flow/flutter_flow_theme.dart';
@ -22,4 +23,20 @@ class SnackBarUtil {
),
);
}
static void showNoMoreDataSnackbar(BuildContext context) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."),
style: TextStyle(
color: Colors.white,
fontSize: LimitedFontSizeUtil.getBodyFontSize(context),
),
),
duration: const Duration(seconds: 3),
backgroundColor: FlutterFlowTheme.of(context).primary,
),
);
}
}