This commit is contained in:
jantunesmesias 2024-08-28 11:31:44 -03:00
parent d286daca53
commit 6702017e07
17 changed files with 488 additions and 462 deletions

View File

@ -11,6 +11,7 @@ import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/flutter_flow/random_data_util.dart'; import 'package:hub/flutter_flow/random_data_util.dart';
import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/dialog_util.dart';
import 'package:qr_flutter/qr_flutter.dart'; import 'package:qr_flutter/qr_flutter.dart';
import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../shared/utils/log_util.dart'; import '../shared/utils/log_util.dart';
@ -153,7 +154,6 @@ Future singInLoginAction(
AppState().haveLocal = AppState().haveLocal =
await checkLocals(context: context, model: model); await checkLocals(context: context, model: model);
log('haveLocal in login: ${AppState().haveLocal}');
toggleApp(context, AppState().haveLocal!); toggleApp(context, AppState().haveLocal!);
} else { } else {
if (PhpGroup.loginCall.msg((loginCall?.jsonBody ?? '')) == null) { if (PhpGroup.loginCall.msg((loginCall?.jsonBody ?? '')) == null) {
@ -299,7 +299,6 @@ Future toggleSignUpPage(BuildContext context) async {
} }
Future toggleApp(BuildContext context, bool haveLocal) async { Future toggleApp(BuildContext context, bool haveLocal) async {
log('haveLocal in toggleApp: $haveLocal');
if (haveLocal == true) if (haveLocal == true)
context.goNamed( context.goNamed(
'homePage', 'homePage',
@ -384,7 +383,6 @@ Future<bool> checkLocals({
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
); );
log(response.jsonBody.toString());
// Verificação rápida de erro para evitar processamento desnecessário. // Verificação rápida de erro para evitar processamento desnecessário.
if (response.jsonBody['error']) { if (response.jsonBody['error']) {
@ -400,6 +398,21 @@ Future<bool> checkLocals({
} }
} }
Future<void> showShare(payload) async {
for (var i = 0; i < payload['convites'].length; i++) {
log('ADD');
await Share.share('''
Olá, \*${payload['convites'][i]['VTE_NOME']}\*! Você foi convidado para \*${AppState().local}\*.
\*Validade do Convite\*:
- Início: ${payload['convites'][i]['VAW_DTINICIO']}
- Fim: ${payload['convites'][i]['VAW_DTFIM']}
URL do Convite: https://visita.freaccess.com.br/${payload['convites'][i]['VAW_ID']}/${AppState().cliUUID}/${payload['convites'][i]['VAW_CHAVE']}
''');
}
}
Future answersRequest(BuildContext context, String? ref, String? task, Future answersRequest(BuildContext context, String? ref, String? task,
String? response, String? id) async { String? response, String? id) async {
ApiCallResponse? respondeSolicitacaoCall; ApiCallResponse? respondeSolicitacaoCall;

View File

@ -1,9 +1,4 @@
import 'dart:developer';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_model.dart'; import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_model.dart';
import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart';
@ -12,27 +7,26 @@ import 'package:hub/shared/utils/log_util.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '/backend/api_requests/api_calls.dart'; import '/backend/api_requests/api_calls.dart';
import '/flutter_flow/flutter_flow_icon_button.dart';
import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_theme.dart';
class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget { class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget {
const BottomArrowLinkedLocalsComponentWidget({super.key}); const BottomArrowLinkedLocalsComponentWidget({super.key});
@override @override
State<BottomArrowLinkedLocalsComponentWidget> createState() => _BottomArrowLinkedLocalsComponentWidgetState(); State<BottomArrowLinkedLocalsComponentWidget> createState() =>
_BottomArrowLinkedLocalsComponentWidgetState();
} }
class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLinkedLocalsComponentWidget> { class _BottomArrowLinkedLocalsComponentWidgetState
extends State<BottomArrowLinkedLocalsComponentWidget> {
late BottomArrowLinkedLocalsComponentModel _model; late BottomArrowLinkedLocalsComponentModel _model;
bool _loading = false; bool _loading = false;
bool _hasData = false; bool _hasData = false;
late Future<void> _localsFuture; late Future<void> _localsFuture;
List<dynamic> _localsWrap = []; List<dynamic> _localsWrap = [];
@override @override
void setState(VoidCallback callback) { void setState(VoidCallback callback) {
super.setState(callback); super.setState(callback);
@ -42,7 +36,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_model = createModel(context, () => BottomArrowLinkedLocalsComponentModel()); _model =
createModel(context, () => BottomArrowLinkedLocalsComponentModel());
_localsFuture = _fetchLocals(); _localsFuture = _fetchLocals();
} }
@ -69,7 +64,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
Future<ApiCallResponse?> _fetchLocals() async { Future<ApiCallResponse?> _fetchLocals() async {
try { try {
setState(() => _loading = true); setState(() => _loading = true);
var response = await PhpGroup.getLocalsCall.call( var response = await PhpGroup.getLocalsCall.call(
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
); );
@ -100,31 +95,36 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
_loading = false; _loading = false;
}); });
} }
} }
Future<dynamic> _fetchResponseLink(String status, String cliID) async { Future<dynamic> _fetchResponseLink(String status, String cliID) async {
try { try {
var response = await PhpGroup.resopndeVinculo.call( var response = await PhpGroup.resopndeVinculo.call(
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
cliID: cliID, cliID: cliID,
tarefa: status tarefa: status);
);
if (response.jsonBody['error'] == false) { if (response.jsonBody['error'] == false) {
return {'error': false, 'error_msg': FFLocalizations.of(context).getVariableText(ptText: "Vinculo Ativado com Sucesso", enText: "Link Activated Successfully") }; return {
'error': false,
'error_msg': FFLocalizations.of(context).getVariableText(
ptText: "Vinculo Ativado com Sucesso",
enText: "Link Activated Successfully")
};
} else { } else {
return response.jsonBody; return response.jsonBody;
} }
} catch (e, s) { } catch (e, s) {
DialogUtil.errorDefault(context); DialogUtil.errorDefault(context);
LogUtil.requestAPIFailed('responderVinculo.php', '', 'Responder Vinculo', e, s); LogUtil.requestAPIFailed(
return {'error': true, 'error_msg': FFLocalizations.of(context).getVariableText( 'responderVinculo.php', '', 'Responder Vinculo', e, s);
ptText: "Falha ao efetuar operação, Tente Novamente mais tarde.", return {
enText: "Failed to perform operation, please try again later." 'error': true,
)}; 'error_msg': FFLocalizations.of(context).getVariableText(
ptText: "Falha ao efetuar operação, Tente Novamente mais tarde.",
enText: "Failed to perform operation, please try again later.")
};
} }
} }
@ -135,18 +135,25 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
Map<String, String> _labelsHashMap(dynamic local) { Map<String, String> _labelsHashMap(dynamic local) {
return Map<String, String>.from({ return Map<String, String>.from({
'${local['CLI_PREFIXO']}:': local['CLI_NOME'], '${local['CLI_PREFIXO']}:': local['CLI_NOME'],
'${FFLocalizations.of(context).getVariableText(ptText: 'Propriedade', enText: 'Property')}:': local['CLU_OWNER_DSC'] '${FFLocalizations.of(context).getVariableText(ptText: 'Propriedade', enText: 'Property')}:':
local['CLU_OWNER_DSC']
}); });
} }
Map<String, Color> _statusHashMap(dynamic local) { Map<String, Color> _statusHashMap(dynamic local) {
return Map<String, Color>.from({ return Map<String, Color>.from({
if (local['CLU_STATUS'] == 'A') if (local['CLU_STATUS'] == 'A')
FFLocalizations.of(context).getVariableText(ptText: 'Ativo', enText: 'Active'): FlutterFlowTheme.of(context).success FFLocalizations.of(context).getVariableText(
ptText: 'Ativo',
enText: 'Active'): FlutterFlowTheme.of(context).success
else if (local['CLU_STATUS'] == 'B') else if (local['CLU_STATUS'] == 'B')
FFLocalizations.of(context).getVariableText(ptText: 'Bloqueado', enText: 'Blocked'): FlutterFlowTheme.of(context).error FFLocalizations.of(context).getVariableText(
ptText: 'Bloqueado',
enText: 'Blocked'): FlutterFlowTheme.of(context).error
else else
FFLocalizations.of(context).getVariableText(ptText: 'Pendente', enText: 'Pending'): FlutterFlowTheme.of(context).warning FFLocalizations.of(context).getVariableText(
ptText: 'Pendente',
enText: 'Pending'): FlutterFlowTheme.of(context).warning
}); });
} }
@ -156,7 +163,6 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
labelsHashMap: _labelsHashMap(local), labelsHashMap: _labelsHashMap(local),
statusHashMap: [_statusHashMap(local)], statusHashMap: [_statusHashMap(local)],
onTapCardItemAction: () async { onTapCardItemAction: () async {
if (local['CLU_STATUS'] == 'A') { if (local['CLU_STATUS'] == 'A') {
AppState().cliUUID = local['CLI_ID']; AppState().cliUUID = local['CLI_ID'];
AppState().local = local['CLI_NOME']; AppState().local = local['CLI_NOME'];
@ -164,11 +170,12 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
Navigator.pop(context); Navigator.pop(context);
} else if (local['CLU_STATUS'] == 'B') { } else if (local['CLU_STATUS'] == 'B') {
String message = FFLocalizations.of(context).getVariableText( String message = FFLocalizations.of(context).getVariableText(
ptText: 'Local Bloqueado para Acesso, Entre em Contato com Administração', ptText:
enText: 'Location Blocked for Access, Contact Administration' 'Local Bloqueado para Acesso, Entre em Contato com Administração',
); enText: 'Location Blocked for Access, Contact Administration');
if (local['CLU_BLK_MESSAGE'] != null && local['CLU_BLK_MESSAGE'] != '') { if (local['CLU_BLK_MESSAGE'] != null &&
local['CLU_BLK_MESSAGE'] != '') {
message = local['CLU_BLK_MESSAGE']; message = local['CLU_BLK_MESSAGE'];
} }
@ -179,47 +186,47 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
String localName = local['CLI_NOME']; String localName = local['CLI_NOME'];
showAlertDialog( showAlertDialog(
context, context,
FFLocalizations.of(context).getVariableText(ptText: 'Ativar VInculo', enText: 'Activate Link'), FFLocalizations.of(context).getVariableText(
FFLocalizations.of(context).getVariableText(ptText: 'Deseja Aceitar o Vinculo a $localName?', enText: 'Do you wish to accept the link to $localName?'), ptText: 'Ativar VInculo', enText: 'Activate Link'),
FFLocalizations.of(context).getVariableText(
ptText: 'Deseja Aceitar o Vinculo a $localName?',
enText: 'Do you wish to accept the link to $localName?'),
() async { () async {
var response = await _fetchResponseLink('A', local['CLI_ID']); var response = await _fetchResponseLink('A', local['CLI_ID']);
Navigator.pop(context); Navigator.pop(context);
if (response['error'] == true) { if (response['error'] == true) {
DialogUtil.error(context, response['error_msg']); DialogUtil.error(context, response['error_msg']);
} else { } else {
DialogUtil.success(context, response['error_msg']); DialogUtil.success(context, response['error_msg']);
_localsWrap = []; _localsWrap = [];
_localsFuture = _fetchLocals(); _localsFuture = _fetchLocals();
} }
} });
);
} }
}, },
); );
} }
Widget _listItems(BuildContext context) { Widget _listItems(BuildContext context) {
return Container( return Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: const BoxDecoration(), decoration: const BoxDecoration(),
padding: const EdgeInsets.only(top: 15), padding: const EdgeInsets.only(top: 15),
child: FutureBuilder<void>( child: FutureBuilder<void>(
future: _localsFuture, future: _localsFuture,
builder: (context, snapshot) { builder: (context, snapshot) {
return ListView.builder( return ListView.builder(
shrinkWrap: true, shrinkWrap: true,
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
itemCount: _localsWrap.length, itemCount: _localsWrap.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
final item = _localsWrap[index]; final item = _localsWrap[index];
return _item(context, item); return _item(context, item);
}, },
); );
}, },
) ));
);
} }
@override @override
@ -234,12 +241,9 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
width: double.infinity, width: double.infinity,
height: height - (height * 0.5), height: height - (height * 0.5),
decoration: BoxDecoration( decoration: BoxDecoration(
color: FlutterFlowTheme.of(context).primaryBackground, color: FlutterFlowTheme.of(context).primaryBackground,
borderRadius: const BorderRadius.only( borderRadius: const BorderRadius.only(
topLeft: Radius.circular(25), topLeft: Radius.circular(25), topRight: Radius.circular(25))),
topRight: Radius.circular(25)
)
),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -258,7 +262,9 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
], ],
), ),
) )
else if (_hasData == true && _loading == false && _localsWrap.isNotEmpty) else if (_hasData == true &&
_loading == false &&
_localsWrap.isNotEmpty)
Expanded(child: _listItems(context)), Expanded(child: _listItems(context)),
if (_loading == true) if (_loading == true)
Container( Container(
@ -271,7 +277,15 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State<BottomArrowLink
), ),
), ),
) )
], ].addToStart(Padding(
padding: const EdgeInsets.only(top: 10),
child: Center(
child: Text(
FFLocalizations.of(context).getVariableText(
ptText: 'Escolha um local', enText: 'Choose a location'),
overflow: TextOverflow.ellipsis,
style: TextStyle(fontWeight: FontWeight.bold),
)))),
), ),
), ),
); );

View File

@ -4,6 +4,7 @@ import 'package:hub/components/atomic_components/menu_button_item/menu_button_it
import 'package:hub/components/atomic_components/menu_card_item/menu_card_item.dart'; import 'package:hub/components/atomic_components/menu_card_item/menu_card_item.dart';
import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/components/molecular_components/menu_item/menu_item.dart';
import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:material_symbols_icons/symbols.dart';
import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart'; import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart';
import '/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart'; import '/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart';
@ -126,28 +127,6 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
]; ];
else else
return <MenuEntry>[ return <MenuEntry>[
MenuButtonWidget(
icon: Icons.engineering_outlined,
action: () async {
await _model.provisionalSchedule(context);
setState(() {});
},
title: FFLocalizations.of(context).getVariableText(
enText: 'Provisional\nSchedule',
ptText: 'Agendar\nPrestadores',
),
),
MenuButtonWidget(
icon: Icons.sports_motorsports_outlined,
action: () async {
await _model.deliverySchedule(context);
setState(() {});
},
title: FFLocalizations.of(context).getVariableText(
enText: 'Delivery\nSchedule',
ptText: 'Agendar\nEntregas',
),
),
MenuButtonWidget( MenuButtonWidget(
icon: Icons.share_location_outlined, icon: Icons.share_location_outlined,
action: () async { action: () async {
@ -181,6 +160,17 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
enText: 'My\nOrders', enText: 'My\nOrders',
), ),
), ),
MenuButtonWidget(
icon: Icons.engineering_outlined,
action: () async {
await _model.provisionalSchedule(context);
setState(() {});
},
title: FFLocalizations.of(context).getVariableText(
enText: 'Register\nProviders',
ptText: 'Cadastrar\nPrestadores',
),
),
MenuButtonWidget( MenuButtonWidget(
icon: Icons.event_available, icon: Icons.event_available,
action: () async { action: () async {
@ -193,14 +183,25 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
), ),
), ),
MenuButtonWidget( MenuButtonWidget(
icon: FFIcons.khome, icon: Icons.sports_motorsports_outlined,
action: () async {
await _model.deliverySchedule(context);
setState(() {});
},
title: FFLocalizations.of(context).getVariableText(
enText: 'Register\nDeliveries',
ptText: 'Cadastrar\nEntregas',
),
),
MenuButtonWidget(
icon: Icons.person_add_alt_1_outlined,
action: () async { action: () async {
await _model.registerVisitorOptAction(context); await _model.registerVisitorOptAction(context);
setState(() {}); setState(() {});
}, },
title: FFLocalizations.of(context).getVariableText( title: FFLocalizations.of(context).getVariableText(
enText: 'Register\nVisitor', enText: 'Register\nVisitor',
ptText: 'Cadastro\nde Visitante', ptText: 'Cadastrar\nVisitante',
), ),
), ),
MenuButtonWidget( MenuButtonWidget(
@ -237,7 +238,7 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
), ),
), ),
MenuButtonWidget( MenuButtonWidget(
icon: Icons.key_outlined, icon: Icons.transfer_within_a_station_outlined,
action: () async { action: () async {
await _model.accessHistoryAction(context); await _model.accessHistoryAction(context);
setState(() {}); setState(() {});
@ -248,7 +249,7 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
), ),
), ),
MenuButtonWidget( MenuButtonWidget(
icon: Icons.people_outline_sharp, icon: Symbols.location_away,
action: () async { action: () async {
await _model.visitHistoryAction(context); await _model.visitHistoryAction(context);
setState(() {}); setState(() {});
@ -276,7 +277,7 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
setState(() {}); setState(() {});
}, },
title: FFLocalizations.of(context).getVariableText( title: FFLocalizations.of(context).getVariableText(
enText: 'Preferences\nSettings', enText: 'System\n Settings',
ptText: 'Opções\ndo Sistema', ptText: 'Opções\ndo Sistema',
), ),
), ),
@ -526,7 +527,7 @@ class _MenuComponentWidgetState extends State<MenuComponentWidget> {
setState(() {}); setState(() {});
}, },
title: FFLocalizations.of(context).getVariableText( title: FFLocalizations.of(context).getVariableText(
enText: 'Preferences Settings', enText: 'System Settings',
ptText: 'Opções do Sistema', ptText: 'Opções do Sistema',
), ),
), ),

View File

@ -1,24 +1,22 @@
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hub/actions/actions.dart'; import 'package:hub/actions/actions.dart';
import 'package:hub/app_state.dart';
import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; import 'package:hub/components/templates_components/details_component/details_component_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_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/flutter_flow/flutter_flow_widgets.dart'; import 'package:hub/flutter_flow/flutter_flow_widgets.dart';
import 'package:hub/flutter_flow/internationalization.dart';
import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart'; import 'package:hub/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart';
import 'package:hub/shared/utils/validator_util.dart'; import 'package:hub/shared/utils/validator_util.dart';
import 'package:rxdart/rxdart.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
Widget buildDetails(dynamic visitaWrapItem, BuildContext context, Future<dynamic> Function(BuildContext, int, int, String, String)? changeStatusAction) { Widget buildDetails(
dynamic visitaWrapItem,
BuildContext context,
Future<dynamic> Function(BuildContext, int, int, String, String)?
changeStatusAction) {
return DetailsComponentWidget( return DetailsComponentWidget(
buttons: [ buttons: [
if (getStatus(visitaWrapItem['VAW_STATUS']) == status.active) // REJECT ACTION if (getStatus(visitaWrapItem['VAW_STATUS']) ==
status.active) // REJECT ACTION
FFButtonWidget( FFButtonWidget(
text: FFLocalizations.of(context).getVariableText( text: FFLocalizations.of(context).getVariableText(
ptText: 'Cancelar', ptText: 'Cancelar',
@ -141,13 +139,13 @@ Widget buildDetails(dynamic visitaWrapItem, BuildContext context, Future<dynamic
icon: const Icon(Icons.share), icon: const Icon(Icons.share),
onPressed: () async { onPressed: () async {
Share.share(''' Share.share('''
Olá, \*${visitaWrapItem['VTE_NOME']}\*! Você foi convidado para \*${visitaWrapItem['NAC_DESCRICAO']}\*. Olá, \*${visitaWrapItem['VTE_NOME']}\*! Você foi convidado para \*${AppState().local}\*.
\*Validade do Convite\*: \*Validade do Convite\*:
- Início: ${visitaWrapItem['VAW_DTINICIO']} - Início: ${visitaWrapItem['VAW_DTINICIO']}
- Fim: ${visitaWrapItem['VAW_DTFIM']} - Fim: ${visitaWrapItem['VAW_DTFIM']}
URL do Convite: https://visita.freaccess.com.br/${visitaWrapItem['VAW_ID']}/${visitaWrapItem['CLI_ID']}/${visitaWrapItem['VAW_CHAVE']} URL do Convite: https://visita.freaccess.com.br/${visitaWrapItem['VAW_ID']}/${AppState().cliUUID}/${visitaWrapItem['VAW_CHAVE']}
'''); ''');
}, },
options: FFButtonOptions( options: FFButtonOptions(
@ -167,9 +165,20 @@ URL do Convite: https://visita.freaccess.com.br/${visitaWrapItem['VAW_ID']}/${vi
), ),
], ],
labelsHashMap: Map<String, String>.from({ labelsHashMap: Map<String, String>.from({
'${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': visitaWrapItem['VTE_NOME'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:':
'${FFLocalizations.of(context).getVariableText(ptText: "Inicio", enText: "Start")}:': visitaWrapItem['VAW_DTINICIO'] != '' && visitaWrapItem['VAW_DTINICIO'] != null ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTINICIO']) : '', visitaWrapItem['VTE_NOME'] ?? '',
'${FFLocalizations.of(context).getVariableText(ptText: "Fim", enText: "End")}:': visitaWrapItem['VAW_DTFIM'] != '' && visitaWrapItem['VAW_DTFIM'] != null ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTFIM']) : '', '${FFLocalizations.of(context).getVariableText(ptText: "Inicio", enText: "Start")}:':
visitaWrapItem['VAW_DTINICIO'] != '' &&
visitaWrapItem['VAW_DTINICIO'] != null
? ValidatorUtil.toLocalDateTime(
'yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTINICIO'])
: '',
'${FFLocalizations.of(context).getVariableText(ptText: "Fim", enText: "End")}:':
visitaWrapItem['VAW_DTFIM'] != '' &&
visitaWrapItem['VAW_DTFIM'] != null
? ValidatorUtil.toLocalDateTime(
'yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTFIM'])
: '',
}), }),
imagePath: imagePath:
'https://freaccess.com.br/freaccess/getImage.php?cliID=${AppState().cliUUID}&atividade=getFoto&Documento=${visitaWrapItem['VTE_DOCUMENTO'] ?? ''}&tipo=E', 'https://freaccess.com.br/freaccess/getImage.php?cliID=${AppState().cliUUID}&atividade=getFoto&Documento=${visitaWrapItem['VTE_DOCUMENTO'] ?? ''}&tipo=E',

View File

@ -154,8 +154,12 @@ class _SignInTemplateComponentWidgetState
child: Padding( child: Padding(
padding: const EdgeInsets.all(3.0), padding: const EdgeInsets.all(3.0),
child: Text( child: Text(
FFLocalizations.of(context).getText( FFLocalizations.of(context)
'9hbdjxrz' /* VAMOS LA! ENTRE COM A SUA CONT... */, .getVariableText(
ptText:
'VAMOS LÁ! ENTRE COM A SUA CONTA',
enText:
'LET\'S GO! SIGN IN WITH YOUR ACCOUNT',
), ),
textAlign: TextAlign.start, textAlign: TextAlign.start,
style: FlutterFlowTheme.of(context) style: FlutterFlowTheme.of(context)

View File

@ -235,7 +235,7 @@ class _SignUpTemplateComponentWidgetState
Form( Form(
key: _model.formKey, key: _model.formKey,
autovalidateMode: autovalidateMode:
AutovalidateMode.always, AutovalidateMode.onUserInteraction,
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
@ -255,7 +255,7 @@ class _SignUpTemplateComponentWidgetState
EasyDebounce.debounce( EasyDebounce.debounce(
'_model.nameRegisterFormTextController', '_model.nameRegisterFormTextController',
const Duration( const Duration(
milliseconds: 2000), milliseconds: 500),
() => setState(() {}), () => setState(() {}),
), ),
autofocus: false, autofocus: false,
@ -397,7 +397,7 @@ class _SignUpTemplateComponentWidgetState
EasyDebounce.debounce( EasyDebounce.debounce(
'_model.emailRegisterFormTextController', '_model.emailRegisterFormTextController',
const Duration( const Duration(
milliseconds: 2000), milliseconds: 500),
() => setState(() {}), () => setState(() {}),
), ),
autofocus: false, autofocus: false,
@ -541,7 +541,7 @@ class _SignUpTemplateComponentWidgetState
EasyDebounce.debounce( EasyDebounce.debounce(
'_model.passwordRegisterFormTextController', '_model.passwordRegisterFormTextController',
const Duration( const Duration(
milliseconds: 2000), milliseconds: 500),
() => setState(() {}), () => setState(() {}),
), ),
autofocus: false, autofocus: false,

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
const _kLocaleStorageKey = '__locale_key__'; const _kLocaleStorageKey = '__locale_key__';
@ -222,8 +222,8 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
// scheduleCompleteVisitPage // scheduleCompleteVisitPage
{ {
'61lcxdgm': { '61lcxdgm': {
'pt': 'Agendar Visita', 'pt': 'Agenda Completa',
'en': 'Schedule Visit', 'en': 'Complete Schedule',
}, },
'ueth1f4g': { 'ueth1f4g': {
'pt': 'Cadastrar Visita', 'pt': 'Cadastrar Visita',
@ -411,7 +411,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
// acessHistoryPage // acessHistoryPage
{ {
'ch8qymga': { 'ch8qymga': {
'pt': 'Histórico de Acesso', 'pt': 'Consultar Acessos',
'en': 'Access History', 'en': 'Access History',
}, },
'2odgr6hg': { '2odgr6hg': {
@ -442,7 +442,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
'en': 'Reason:', 'en': 'Reason:',
}, },
'784f83pc': { '784f83pc': {
'pt': 'Histórico de Liberação', 'pt': 'Consultar Liberações',
'en': 'Liberation History', 'en': 'Liberation History',
}, },
'1skj43ye': { '1skj43ye': {

View File

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:hub/actions/actions.dart'; import 'package:hub/actions/actions.dart';
@ -229,7 +231,7 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
), ),
icon: const Icon(Icons.done), icon: const Icon(Icons.done),
onPressed: () async { onPressed: () async {
return answersRequest answersRequest
.call( .call(
context, context,
liberationHistoryItem['NOT_ID'].toString(), liberationHistoryItem['NOT_ID'].toString(),
@ -237,8 +239,9 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
'', '',
liberationHistoryItem['VTE_ID'].toString(), liberationHistoryItem['VTE_ID'].toString(),
) )
.then((message) { .then((value) {
if (message.isEmpty) { log('test: $value');
if (value) {
showSnackbar( showSnackbar(
context, context,
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
@ -246,9 +249,14 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
ptText: 'Visita resolvida com sucesso'), ptText: 'Visita resolvida com sucesso'),
false); false);
} else { } else {
showSnackbar(context, message, true); showSnackbar(
context,
FFLocalizations.of(context).getVariableText(
enText: 'Error resolving visit',
ptText: 'Erro ao resolver visita'),
true);
} }
}).whenComplete(() {
safeSetState(() { safeSetState(() {
_requestWrap = []; _requestWrap = [];
_requestFuture = _fetchRequests(); _requestFuture = _fetchRequests();
@ -311,46 +319,7 @@ class _LiberationHistoryWidgetState extends State<LiberationHistoryWidget> {
), ),
); );
}, },
).then((_) { ).then((_) {});
() {}();
// PushNotificationManager _pushNotificationService =
// PushNotificationManager();
// _pushNotificationService.onMessageReceived.listen((received) {
// if (received.data['click_action'] == 'cancel_request') {
// _pushNotificationService.dispose();
// showSnackbar(
// context,
// FFLocalizations.of(context).getVariableText(
// enText: 'Successfully resolved visit',
// ptText: 'Visita resolvida com sucesso'),
// false);
// context.pushReplacementNamed(
// 'liberationHistory',
// extra: <String, dynamic>{
// kTransitionInfoKey: const TransitionInfo(
// hasTransition: true,
// transitionType: PageTransitionType.scale,
// alignment: Alignment.bottomCenter,
// ),
// },
// );
// }
// });
// }).whenComplete(() {
// safeSetState(() {
// _requestWrap = [];
// _requestFuture = _fetchRequests();
// });
// }).catchError((e, s) {
// DialogUtil.errorDefault(context);
// LogUtil.requestAPIFailed(
// "proccessRequest.php", "", "Consulta de Solitiações", e, s);
// safeSetState(() {
// _hasData = false;
// _loading = false;
// });
});
}, },
); );
} }

View File

@ -166,7 +166,7 @@ class _MessageHistoryPageWidgetState extends State<MessageHistoryPageWidget>
title: Text( title: Text(
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
enText: 'Message History', enText: 'Message History',
ptText: 'Histórico de Mensagens', ptText: 'Consultar Mensagens',
), ),
style: FlutterFlowTheme.of(context).headlineMedium.override( style: FlutterFlowTheme.of(context).headlineMedium.override(
fontFamily: 'Nunito', fontFamily: 'Nunito',

View File

@ -1,11 +1,8 @@
import 'dart:async'; import 'dart:async';
import 'dart:developer';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:hub/backend/api_requests/api_calls.dart'; import 'package:hub/backend/api_requests/api_calls.dart';
import 'package:hub/backend/api_requests/api_manager.dart';
import 'package:hub/components/molecular_components/order_filter_modal/order_filter_modal_widget.dart'; import 'package:hub/components/molecular_components/order_filter_modal/order_filter_modal_widget.dart';
import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; import 'package:hub/components/templates_components/details_component/details_component_widget.dart';
@ -25,7 +22,6 @@ class PackageOrderPage extends StatefulWidget {
} }
class _PackageOrderPage extends State<PackageOrderPage> { class _PackageOrderPage extends State<PackageOrderPage> {
late ScrollController _scrollController; late ScrollController _scrollController;
int _pageNumber = 1; int _pageNumber = 1;
final int _pageSize = 10; final int _pageSize = 10;
@ -54,8 +50,10 @@ class _PackageOrderPage extends State<PackageOrderPage> {
_orderFuture = _fetchOrders(); _orderFuture = _fetchOrders();
_scrollController = ScrollController()..addListener(() { _scrollController = ScrollController()
if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { ..addListener(() {
if (_scrollController.position.atEdge &&
_scrollController.position.pixels != 0) {
_loadMoreOrders(); _loadMoreOrders();
} }
}); });
@ -87,15 +85,14 @@ class _PackageOrderPage extends State<PackageOrderPage> {
setState(() => _loading = true); setState(() => _loading = true);
var response = await PhpGroup.buscaEnconcomendas.call( var response = await PhpGroup.buscaEnconcomendas.call(
devUUID: AppState().devUUID, devUUID: AppState().devUUID,
userUUID: AppState().userUUID, userUUID: AppState().userUUID,
cliID: AppState().cliUUID, cliID: AppState().cliUUID,
atividade: 'getEncomendas', atividade: 'getEncomendas',
pageSize: _pageSize.toString(), pageSize: _pageSize.toString(),
page: _pageNumber.toString(), page: _pageNumber.toString(),
adresseeType: _adresseeType == '.*' ? 'TOD' : _adresseeType, adresseeType: _adresseeType == '.*' ? 'TOD' : _adresseeType,
status: _status == '.*' ? 'all' : _status status: _status == '.*' ? 'all' : _status);
);
final List<dynamic> orders = response.jsonBody['value']['list'] ?? []; final List<dynamic> orders = response.jsonBody['value']['list'] ?? [];
@ -159,25 +156,29 @@ class _PackageOrderPage extends State<PackageOrderPage> {
icon: const Icon(Icons.filter_list), icon: const Icon(Icons.filter_list),
onPressed: () async { onPressed: () async {
final Map<String, String>? selectedFilter = final Map<String, String>? selectedFilter =
await showModalBottomSheet<Map<String, String>>( await showModalBottomSheet<Map<String, String>>(
isScrollControlled: true, isScrollControlled: true,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
context: context, context: context,
builder: (context) { builder: (context) {
return GestureDetector( return GestureDetector(
onTap: () => Navigator.of(context).pop(), onTap: () => Navigator.of(context).pop(),
child: Container( child: Container(
color: Colors.transparent, color: Colors.transparent,
child: GestureDetector( child: GestureDetector(
onTap: () {}, onTap: () {},
child: OrderFilterModalWidget( child: OrderFilterModalWidget(
defaultAdresseeType: _selectedTypeSubject.value['adresseeType'] ?? '.*', defaultAdresseeType: _selectedTypeSubject
defaultStatus: _selectedTypeSubject.value['status'] ?? '.*', .value['adresseeType'] ??
'.*',
defaultStatus:
_selectedTypeSubject.value['status'] ??
'.*',
),
),
), ),
), );
), });
);
});
if (selectedFilter != null) { if (selectedFilter != null) {
_updateFilterAction(selectedFilter); _updateFilterAction(selectedFilter);
@ -224,16 +225,16 @@ class _PackageOrderPage extends State<PackageOrderPage> {
backgroundColor: FlutterFlowTheme.of(context).primaryBackground, backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
title: Text( title: Text(
FFLocalizations.of(context).getVariableText(enText: 'Orders', ptText: 'Encomendas'), FFLocalizations.of(context).getVariableText(
enText: 'My Orders', ptText: 'Minhas Encomendas'),
style: FlutterFlowTheme.of(context).headlineMedium.override( style: FlutterFlowTheme.of(context).headlineMedium.override(
fontFamily: 'Nunito', fontFamily: 'Nunito',
color: FlutterFlowTheme.of(context).primaryText, color: FlutterFlowTheme.of(context).primaryText,
fontSize: 15.0, fontSize: 15.0,
letterSpacing: 0.0, letterSpacing: 0.0,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'),
) )),
),
leading: _backButton(context, FlutterFlowTheme.of(context)), leading: _backButton(context, FlutterFlowTheme.of(context)),
centerTitle: true, centerTitle: true,
elevation: 0.0, elevation: 0.0,
@ -256,10 +257,10 @@ class _PackageOrderPage extends State<PackageOrderPage> {
children: [ children: [
Center( Center(
child: Text( child: Text(
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
ptText: "Nenhuma encomenda encontrada!", ptText: "Nenhuma encomenda encontrada!",
enText: "No orders found!"), enText: "No orders found!"),
)), )),
], ],
), ),
) )
@ -295,8 +296,7 @@ class _PackageOrderPage extends State<PackageOrderPage> {
return _item(context, order); return _item(context, order);
}, },
); );
} });
);
} }
String _imagePath(dynamic order) { String _imagePath(dynamic order) {
@ -306,36 +306,47 @@ class _PackageOrderPage extends State<PackageOrderPage> {
Map<String, String> _labelsHashMap(dynamic order) { Map<String, String> _labelsHashMap(dynamic order) {
return Map<String, String>.from({ return Map<String, String>.from({
if (order['isPending'] == true) if (order['isPending'] == true)
'${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Retirada', enText: 'Pickup Code')}:': order['id'].toString(), '${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Retirada', enText: 'Pickup Code')}:':
'${FFLocalizations.of(context).getVariableText(ptText: 'Categoria', enText: 'Category')}:': order['customCategory'], order['id'].toString(),
'${FFLocalizations.of(context).getVariableText(ptText: 'Recebido em', enText: 'Received on')}:': ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtReceive']), '${FFLocalizations.of(context).getVariableText(ptText: 'Categoria', enText: 'Category')}:':
order['customCategory'],
'${FFLocalizations.of(context).getVariableText(ptText: 'Recebido em', enText: 'Received on')}:':
ValidatorUtil.toLocalDateTime(
'yyyy-MM-dd HH:mm:ss', order['dtReceive']),
if (order['isPending'] == false) if (order['isPending'] == false)
'${FFLocalizations.of(context).getVariableText(ptText: 'Retirado em', enText: 'Picked up on')}:': ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtPickUp']), '${FFLocalizations.of(context).getVariableText(ptText: 'Retirado em', enText: 'Picked up on')}:':
ValidatorUtil.toLocalDateTime(
'yyyy-MM-dd HH:mm:ss', order['dtPickUp']),
}); });
} }
Map<String, String> _labelsHashMapDialog(dynamic order) { Map<String, String> _labelsHashMapDialog(dynamic order) {
return Map<String, String>.from({ return Map<String, String>.from({
if (order['isPending'] == true) if (order['isPending'] == true)
'${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Retirada', enText: 'Pickup Code')}:': order['id'].toString(), '${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Retirada', enText: 'Pickup Code')}:':
order['id'].toString(),
'${FFLocalizations.of(context).getVariableText(ptText: 'Categoria', enText: 'Category')}:': order['customCategory'], '${FFLocalizations.of(context).getVariableText(ptText: 'Categoria', enText: 'Category')}:':
order['customCategory'],
if (order['code'] != null) if (order['code'] != null)
'${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Objeto', enText: 'Object Code')}:': order['code'], '${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Objeto', enText: 'Object Code')}:':
order['code'],
'${FFLocalizations.of(context).getVariableText(ptText: 'Entregue por', enText: 'Delivered by')}:': order['sendedBy'], '${FFLocalizations.of(context).getVariableText(ptText: 'Entregue por', enText: 'Delivered by')}:':
order['sendedBy'],
'${FFLocalizations.of(context).getVariableText(ptText: 'Recebido por', enText: 'Received by')}:': order['receivedBy'], '${FFLocalizations.of(context).getVariableText(ptText: 'Recebido por', enText: 'Received by')}:':
'${FFLocalizations.of(context).getVariableText(ptText: 'Recebido em', enText: 'Received on')}:': ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtReceive']), order['receivedBy'],
'${FFLocalizations.of(context).getVariableText(ptText: 'Recebido em', enText: 'Received on')}:':
ValidatorUtil.toLocalDateTime(
'yyyy-MM-dd HH:mm:ss', order['dtReceive']),
if (order['isPending'] == false) if (order['isPending'] == false)
'${FFLocalizations.of(context).getVariableText(ptText: 'Retirado por', enText: 'Picked up by')}:': order['pickedUpBy'], '${FFLocalizations.of(context).getVariableText(ptText: 'Retirado por', enText: 'Picked up by')}:':
order['pickedUpBy'],
if (order['isPending'] == false) if (order['isPending'] == false)
'${FFLocalizations.of(context).getVariableText(ptText: 'Retirado em', enText: 'Picked up on')}:': ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtPickUp']), '${FFLocalizations.of(context).getVariableText(ptText: 'Retirado em', enText: 'Picked up on')}:':
ValidatorUtil.toLocalDateTime(
'yyyy-MM-dd HH:mm:ss', order['dtPickUp']),
if (order['message'] != null) if (order['message'] != null)
'${FFLocalizations.of(context).getVariableText(ptText: 'Mensagem', enText: 'Message')}:': order['message'] '${FFLocalizations.of(context).getVariableText(ptText: 'Mensagem', enText: 'Message')}:':
order['message']
}); });
} }
@ -343,13 +354,16 @@ class _PackageOrderPage extends State<PackageOrderPage> {
return [ return [
if (order['isPending'] == true) if (order['isPending'] == true)
Map<String, Color>.from({ Map<String, Color>.from({
FFLocalizations.of(context).getVariableText(ptText: 'Aguardando Retirada', enText: 'Waiting Pick up'): FlutterFlowTheme.of(context).warning, FFLocalizations.of(context).getVariableText(
ptText: 'Aguardando Retirada',
enText: 'Waiting Pick up'): FlutterFlowTheme.of(context).warning,
}) })
else else
Map<String, Color>.from({ Map<String, Color>.from({
FFLocalizations.of(context).getVariableText(ptText: 'Retirado', enText: 'Picked up'): FlutterFlowTheme.of(context).primary, FFLocalizations.of(context).getVariableText(
ptText: 'Retirado',
enText: 'Picked up'): FlutterFlowTheme.of(context).primary,
}), }),
if (order['adresseeType'] == 'PRO') if (order['adresseeType'] == 'PRO')
Map<String, Color>.from({ Map<String, Color>.from({
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
@ -369,34 +383,38 @@ class _PackageOrderPage extends State<PackageOrderPage> {
Widget _item(BuildContext context, dynamic order) { Widget _item(BuildContext context, dynamic order) {
return CardItemTemplateComponentWidget( return CardItemTemplateComponentWidget(
imagePath: _imagePath(order), imagePath: _imagePath(order),
labelsHashMap: _labelsHashMap(order), labelsHashMap: _labelsHashMap(order),
statusHashMap: _statusHashMap(order), statusHashMap: _statusHashMap(order),
onTapCardItemAction: () async { onTapCardItemAction: () async {
showDialog( showDialog(
useSafeArea: true, useSafeArea: true,
context: context, context: context,
builder: (context) { builder: (context) {
return Dialog( return Dialog(
child: DetailsComponentWidget( child: DetailsComponentWidget(
imagePath: _imagePath(order), imagePath: _imagePath(order),
labelsHashMap: _labelsHashMapDialog(order), labelsHashMap: _labelsHashMapDialog(order),
statusHashMap: [ statusHashMap: [
if (order['isPending'] == true) if (order['isPending'] == true)
Map<String, Color>.from({ Map<String, Color>.from({
FFLocalizations.of(context).getVariableText(ptText: 'Aguardando Retirada', enText: 'Waiting Pick up'): FlutterFlowTheme.of(context).warning, FFLocalizations.of(context).getVariableText(
}) ptText: 'Aguardando Retirada',
else enText: 'Waiting Pick up'):
Map<String, Color>.from({ FlutterFlowTheme.of(context).warning,
FFLocalizations.of(context).getVariableText(ptText: 'Retirado', enText: 'Picked up'): FlutterFlowTheme.of(context).primary, })
}), else
], Map<String, Color>.from({
buttons: [], FFLocalizations.of(context).getVariableText(
), ptText: 'Retirado', enText: 'Picked up'):
); FlutterFlowTheme.of(context).primary,
} }),
); ],
}, buttons: [],
),
);
});
},
); );
} }
@ -407,4 +425,4 @@ class _PackageOrderPage extends State<PackageOrderPage> {
body: _appBody(context), body: _appBody(context),
); );
} }
} }

View File

@ -42,8 +42,8 @@ class PreferencesPageWidget extends StatelessWidget {
), ),
title: Text( title: Text(
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
enText: 'Preferences', enText: 'System Settings',
ptText: 'Preferências', ptText: 'Opções do Sistema',
), ),
style: FlutterFlowTheme.of(context).headlineMedium.override( style: FlutterFlowTheme.of(context).headlineMedium.override(
fontFamily: 'Nunito', fontFamily: 'Nunito',

View File

@ -58,7 +58,7 @@ class _ProvisionalScheduleState extends State<ProvisionalSchedule> {
), ),
title: Text( title: Text(
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
enText: 'Provisional Schedule', enText: 'Schedule Providers',
ptText: 'Agendar Prestadores', ptText: 'Agendar Prestadores',
), ),
style: FlutterFlowTheme.of(context).headlineMedium.override( style: FlutterFlowTheme.of(context).headlineMedium.override(

View File

@ -1,11 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:hub/app_state.dart';
import 'package:hub/components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart'; import 'package:hub/components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart';
import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart';
import 'package:hub/flutter_flow/flutter_flow_widgets.dart'; import 'package:hub/flutter_flow/flutter_flow_widgets.dart';
import 'package:hub/flutter_flow/internationalization.dart';
import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/flutter_flow/nav/nav.dart';
import 'package:hub/pages/reception_page/reception_page_model.dart'; import 'package:hub/pages/reception_page/reception_page_model.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -120,8 +118,8 @@ class _ReceptionPageWidgetState extends State<ReceptionPageWidget> {
.titleSmall .titleSmall
.override( .override(
fontFamily: 'Nunito Sans', fontFamily: 'Nunito Sans',
color: FlutterFlowTheme.of(context) color:
.primaryBackground, FlutterFlowTheme.of(context).info,
fontSize: 14.0, fontSize: 14.0,
letterSpacing: 0.0, letterSpacing: 0.0,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,

View File

@ -3,8 +3,11 @@ import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:hub/actions/actions.dart';
import 'package:hub/backend/api_requests/api_calls.dart'; import 'package:hub/backend/api_requests/api_calls.dart';
import 'package:hub/components/atomic_components/shared_components_atoms/toast.dart';
import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; import 'package:hub/components/templates_components/details_component/details_component_widget.dart';
import 'package:hub/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart'; import 'package:hub/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart';
import 'package:hub/flutter_flow/custom_functions.dart'; import 'package:hub/flutter_flow/custom_functions.dart';
@ -1606,166 +1609,155 @@ Widget scheduleVisit(BuildContext context,
), ),
onPressed: _model.isValid() onPressed: _model.isValid()
? () async { ? () async {
await showDialog( Future<void> scheduleVisit() async {
context: context, await PhpGroup.postScheduleVisitCall
builder: (context) { .call(
return GestureDetector( devUUID: AppState().devUUID,
onTap: () => _model.unfocusNode.canRequestFocus userUUID: AppState().userUUID,
? FocusScope.of(context) atividade: 'putVisita',
.requestFocus(_model.unfocusNode) devDesc: _model.textController3.text,
: FocusScope.of(context).unfocus(), idVisitante: _model.visitorStrList,
child: Dialog( dtInicio: _model
alignment: Alignment.topCenter, .convertDateFormat(_model.textController1.text ?? ''),
child: SizedBox( dtFim: _model
// width: MediaQuery.of(context).size.width, .convertDateFormat(_model.textController2.text ?? ''),
// height: MediaQuery.of(context).size.height * 0.7, unica: _model.switchValue == true ? 'Sim' : 'Não',
// child: VisitDetailsModalTemplateComponentWidget( idMotivo: extractIdToStr(_model.dropDownValue1!),
// visitStartDateStr: _model.textController1.text, idNAC: extractIdToStr(_model.dropDownValue2!),
// visitEndDateStr: _model.textController2.text, obs: _model.textController3.text,
// visitReasonStr: _model.dropDownValue1, cliID: AppState().cliUUID,
// visitLevelStr: _model.dropDownValue2, )
// visitTempStr: .catchError((e) async {
// _model.switchValue == true ? 'Sim' : 'Não', await DialogUtil.errorDefault(context);
// visitObsStr: _model.textController3.text, }).then((value) async {
// visitorStrList: _model.visitorStrList, if (PhpGroup.postScheduleVisitCall.error(
// visitorJsonList: _model.visitorJsonList, (value.jsonBody ?? ''),
// updateToggleIdx: () async {}, ) ==
// repeatVisitSchedule: () async {}, false) {
// ), Navigator.pop(context);
child: DetailsComponentWidget(
buttons: [
FFButtonWidget(
text: FFLocalizations.of(context)
.getVariableText(
enText: 'Done',
ptText: 'Confirmar',
),
icon: const Icon(Icons.done),
onPressed: () async {
showAlertDialog(
context,
FFLocalizations.of(context)
.getVariableText(
ptText: 'Ativar Visita',
enText: 'Activate Visit',
),
FFLocalizations.of(context)
.getVariableText(
ptText:
'Você tem certeza que deseja ativar essa visita?',
enText:
'Are you sure you want to activate this visit?',
), () async {
await PhpGroup.postScheduleVisitCall
.call(
devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
atividade: 'putVisita',
devDesc: _model.textController3.text,
idVisitante: _model.visitorStrList,
dtInicio: _model.convertDateFormat(
_model.textController1.text ?? ''),
dtFim: _model.convertDateFormat(
_model.textController2.text ?? ''),
unica: _model.switchValue == true
? 'Sim'
: 'Não',
idMotivo: extractIdToStr(
_model.dropDownValue1!),
idNAC: extractIdToStr(
_model.dropDownValue2!),
obs: _model.textController3.text,
cliID: AppState().cliUUID,
)
.catchError((e) async {
await DialogUtil.errorDefault(context);
}).then((value) async {
if (PhpGroup.postScheduleVisitCall
.error(
(value.jsonBody ?? ''),
) ==
false) {
Navigator.pop(context);
Navigator.pop(context);
showSnackbar(
context,
FFLocalizations.of(context)
.getVariableText(
enText:
'Success in scheduling visit',
ptText:
'Succeso ao agendar a visita',
),
false,
);
} else {
await DialogUtil.errorDefault(
context);
Navigator.pop(context);
Navigator.pop(context);
}
});
safeSetState(() {}); //MILESTONE
}); _model.dropDownValue1 = null;
}, _model.dropDownValue2 = null;
options: FFButtonOptions( _model.dropDownValueController1 =
width: 130, FormFieldController<String>('');
height: 40, _model.dropDownValueController2 =
color: FlutterFlowTheme.of(context) FormFieldController<String>('');
.primaryBackground, _model.visitorStrList = '';
elevation: 0, _model.visitorJsonList = [];
textStyle: TextStyle(
color: FlutterFlowTheme.of(context) ToastUtil.showToast(
.primaryText, message: FFLocalizations.of(context)
.getVariableText(
ptText: 'Visitante já adicionado!',
enText: 'Visitor already added!'),
gravity: ToastGravity.TOP,
backgroundColor: Colors.green);
await showShare(value.jsonBody);
} else {
await DialogUtil.errorDefault(context);
Navigator.pop(context);
}
});
safeSetState(() {});
}
if (_model.visitorJsonList.length > 1) {
final title = FFLocalizations.of(context).getVariableText(
ptText: 'Cadastrar Múltiplos Visitantes',
enText: 'Register Multiple Visitors',
);
final content = FFLocalizations.of(context).getVariableText(
ptText:
'Você deseja agendar uma visita para ${_model.visitorJsonList.length} visitantes?',
enText:
'Do you want to schedule a visit for ${_model.visitorJsonList.length} visitors?',
);
showAlertDialog(context, title, content, scheduleVisit);
} else {
await showDialog(
context: context,
builder: (context) {
return GestureDetector(
onTap: () => _model.unfocusNode.canRequestFocus
? FocusScope.of(context)
.requestFocus(_model.unfocusNode)
: FocusScope.of(context).unfocus(),
child: Dialog(
alignment: Alignment.topCenter,
child: SizedBox(
child: DetailsComponentWidget(
buttons: [
FFButtonWidget(
text: FFLocalizations.of(context)
.getVariableText(
enText: 'Done',
ptText: 'Confirmar',
), ),
borderSide: BorderSide( icon: const Icon(Icons.done),
onPressed: scheduleVisit,
options: FFButtonOptions(
width: 130,
height: 40,
color: FlutterFlowTheme.of(context) color: FlutterFlowTheme.of(context)
.primaryBackground, .primaryBackground,
width: 1, elevation: 0,
textStyle: TextStyle(
color: FlutterFlowTheme.of(context)
.primaryText,
),
borderSide: BorderSide(
color: FlutterFlowTheme.of(context)
.primaryBackground,
width: 1,
),
// borderRadius: 12,
), ),
// borderRadius: 12,
), ),
), ],
], imagePath:
imagePath: 'https://freaccess.com.br/freaccess/getImage.php?cliID=${AppState().cliUUID}&atividade=getFoto&Documento=${_model.visitorJsonList[0]['VTE_DOCUMENTO'] ?? ''}&tipo=E',
'https://freaccess.com.br/freaccess/getImage.php?cliID=${AppState().cliUUID}&atividade=getFoto&Documento=${_model.visitorJsonList[0]['VTE_DOCUMENTO'] ?? ''}&tipo=E', labelsHashMap: {
labelsHashMap: { 'Nome': _model.visitorJsonList[0]['VTE_NOME'],
'Nome': _model.visitorJsonList[0]['VTE_NOME'], 'Start': _model.textController1.text,
'Start': _model.textController1.text, 'End': _model.textController2.text ?? '',
'End': _model.textController2.text ?? '', 'Reason': (RegExp(r'MOT_DESCRICAO:\s*([^,]+)')
'Reason': (RegExp(r'MOT_DESCRICAO:\s*([^,]+)') .firstMatch(
.firstMatch( _model.dropDownValue1.toString())
_model.dropDownValue1.toString()) ?.group(1)
?.group(1) .toString()) ??
.toString()) ?? '',
'', 'Level': (RegExp(r'NAC_DESCRICAO:\s*([^,]+)')
'Level': (RegExp(r'NAC_DESCRICAO:\s*([^,]+)') .firstMatch(
.firstMatch( _model.dropDownValue2.toString())
_model.dropDownValue2.toString()) ?.group(1)
?.group(1) .toString()) ??
.toString()) ?? '',
'', 'Single Visit': _model.switchValue == true
'Single Visit': ? 'Sim'
_model.switchValue == true ? 'Sim' : 'Não', : 'Não',
if (_model.textController3.text.isNotEmpty) if (_model.textController3.text.isNotEmpty)
'Observation': _model.textController3.text, 'Observation': _model.textController3.text,
}, },
statusHashMap: [ statusHashMap: [
Map<String, Color>.from({ Map<String, Color>.from({
FFLocalizations.of(context).getVariableText( FFLocalizations.of(context).getVariableText(
ptText: 'Inativo', ptText: 'Inativo',
enText: 'Inactive', enText: 'Inactive',
): FlutterFlowTheme.of(context).warning, ): FlutterFlowTheme.of(context).warning,
}), }),
], ],
onTapCardItemAction: () async {}, onTapCardItemAction: () async {},
),
), ),
), ),
), );
); },
}, ).then((value) => safeSetState(() {}));
).then((value) => safeSetState(() {})); }
} }
: null, : null,
options: FFButtonOptions( options: FFButtonOptions(

View File

@ -87,7 +87,6 @@ class CustomDrawer extends StatelessWidget {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),
), ),
SizedBox(height: 5),
Text( Text(
AppState().email, AppState().email,
style: FlutterFlowTheme.of(context).bodySmall.override( style: FlutterFlowTheme.of(context).bodySmall.override(

View File

@ -817,18 +817,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.4" version: "10.0.5"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.5"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
@ -905,10 +905,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.0" version: "0.11.1"
material_symbols_icons:
dependency: "direct main"
description:
name: material_symbols_icons
sha256: b72bf7566d024d51627dce81b1b98539830a0e3ffbb5784989aa3e97c8493160
url: "https://pub.dev"
source: hosted
version: "4.2784.0"
maybe_just_nothing: maybe_just_nothing:
dependency: transitive dependency: transitive
description: description:
@ -921,10 +929,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.12.0" version: "1.15.0"
mime: mime:
dependency: transitive dependency: transitive
description: description:
@ -1342,10 +1350,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.7.2"
timeago: timeago:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1510,10 +1518,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.2.1" version: "14.2.4"
web: web:
dependency: transitive dependency: transitive
description: description:

View File

@ -86,6 +86,7 @@ dependencies:
video_player_avfoundation: 2.6.1 video_player_avfoundation: 2.6.1
video_player_platform_interface: 6.2.2 video_player_platform_interface: 6.2.2
video_player_web: 2.3.1 video_player_web: 2.3.1
material_symbols_icons: ^4.2784.0
fluttertoast: ^8.2.8 fluttertoast: ^8.2.8
cupertino_icons: ^1.0.0 cupertino_icons: ^1.0.0
@ -132,18 +133,18 @@ flutter:
- assets/lottie_animations/ - assets/lottie_animations/
- assets/rive_animations/ - assets/rive_animations/
- assets/pdfs/ - assets/pdfs/
fonts: fonts:
- family: "SF Pro" - family: "SF Pro"
fonts: fonts:
- asset: assets/fonts/SFPRODISPLAYREGULAR.OTF - asset: assets/fonts/SFPRODISPLAYREGULAR.OTF
- asset: assets/fonts/SFPRODISPLAYMEDIUM.OTF - asset: assets/fonts/SFPRODISPLAYMEDIUM.OTF
weight: 500 weight: 500
- asset: assets/fonts/SFPRODISPLAYBOLD.OTF - asset: assets/fonts/SFPRODISPLAYBOLD.OTF
weight: 700 weight: 700
- family: Icons - family: Icons
fonts: fonts:
- asset: assets/fonts/icons.ttf - asset: assets/fonts/icons.ttf
- family: Menu - family: Menu
fonts: fonts:
- asset: assets/fonts/menu.ttf - asset: assets/fonts/menu.ttf