From 5b1a122f62e4e03020359144d3e6a779ec236dcb Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 30 Oct 2024 15:09:51 -0300 Subject: [PATCH] FIX: adicionei o modal de detalhes para visita em aberto --- lib/pages/visits_on_the_property/model.dart | 50 +++++++++++++++++++ .../visits_on_the_property_screen.dart | 38 ++++++++++++-- 2 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 lib/pages/visits_on_the_property/model.dart diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart new file mode 100644 index 00000000..f6a65856 --- /dev/null +++ b/lib/pages/visits_on_the_property/model.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import 'package:hub/backend/api_requests/api_manager.dart'; +import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_model.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/internationalization.dart'; +import 'package:hub/pages/vehicles_on_the_property/vehicles_on_the_property.dart'; +import 'package:hub/shared/utils/storage_util.dart'; + +class VisitsModel extends FlutterFlowModel { + static VisitsModel? _instance = VisitsModel._internal(); + VisitsModel._internal(); + factory VisitsModel() => _instance ?? VisitsModel._internal(); + static void resetInstance() => _instance = null; + + dynamic item; + + @override + void initState(BuildContext context) { + resetInstance(); + + initAsync(); + } + + @override + void dispose() {} + + Future initAsync() async {} + + Widget buildVisitDetails({ + required dynamic item, + required BuildContext context, + required VisitsModel model, + }) { + return DetailsComponentWidget( + buttons: [], + labelsHashMap: Map.from({ + if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Validity")}:': item['VTA_VALIDADE'].toString().toUpperCase(), + if (item['VTA_DTFIM'] != null && item['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Fim", enText: "End Date")}:': item['VTA_DTFIM'].toString().toUpperCase(), + if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Início", enText: "Start Date")}:': item['VTA_DTINICIO'].toString().toUpperCase(), + if (item['VTA_NOME'] != null && item['VTA_NOME'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': item['VTA_NOME'].toString().toUpperCase(), + if (item['VTA_UNICA'] != null && item['VTA_UNICA'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Única", enText: "Unique")}:': item['VTA_UNICA'].toString().toUpperCase(), + }), + imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', + statusHashMap: [ + if (item['MOT_DESCRICAO'] != null) Map.from({item['MOT_DESCRICAO'].toString().toUpperCase(): FlutterFlowTheme.of(context).primary}), + ], + ); + } +} diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 9c234488..7cb4b3a9 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -5,7 +5,7 @@ import 'package:hub/components/templates_components/card_item_template_component 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/pages/vehicles_on_the_property/vehicle_model.dart'; +import 'package:hub/pages/visits_on_the_property/model.dart'; import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/log_util.dart'; import 'package:hub/shared/utils/storage_util.dart'; @@ -24,7 +24,7 @@ class _VisitsOnThePropertyState extends State with TickerPr bool _hasData = false; bool _loading = false; int count = 0; - late final VehicleModel model; + late final VisitsModel model; late Future _visitsFuture; List _visitsList = []; @@ -32,7 +32,7 @@ class _VisitsOnThePropertyState extends State with TickerPr @override void initState() { super.initState(); - model = createModel(context, () => VehicleModel()); + model = createModel(context, () => VisitsModel()); _visitsFuture = _fetchVisits(); _scrollController = ScrollController() @@ -209,7 +209,7 @@ class _VisitsOnThePropertyState extends State with TickerPr labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['VTA_NOME'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Valids")}:': uItem['VTA_VALIDADE'] ?? '', - '${FFLocalizations.of(context).getVariableText(ptText: "Entrada", enText: "Entrada")}:': uItem['VTA_DTINICIO'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Motivo", enText: "Reason")}:': uItem['MOT_DESCRICAO'][0].toUpperCase() + uItem['MOT_DESCRICAO'].substring(1).toLowerCase(), if (uItem['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', }, statusHashMap: [ @@ -242,7 +242,35 @@ class _VisitsOnThePropertyState extends State with TickerPr ): FlutterFlowTheme.of(context).warning, }, ], - onTapCardItemAction: () async {}, + onTapCardItemAction: () async { + await showDialog( + useSafeArea: true, + context: context, + builder: (context) { + return Dialog( + alignment: Alignment.center, + child: model.buildVisitDetails( + item: uItem, + context: context, + model: model, + ), + ); + }, + ).whenComplete(() { + safeSetState(() { + _pageNumber = 1; + _visitsList = []; + _visitsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + }); + }).catchError((e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + safeSetState(() { + _hasData = false; + _loading = false; + }); + }); + }, ); } }