import 'dart:convert'; import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:hub/actions/actions.dart'; import 'package:hub/backend/api_requests/api_calls.dart'; import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; import 'package:hub/custom_code/actions/convert_to_upload_file.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_widgets.dart'; import 'package:hub/flutter_flow/form_field_controller.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/pages/pets_page/pets_page_model.dart'; import 'package:hub/shared/utils/validator_util.dart'; import 'package:share_plus/share_plus.dart'; Widget buildVisitDetails({ required dynamic item, required BuildContext context, required Future Function(BuildContext, int, int, String, String) changeStatusAction, required String devUUID, required String userUUID, required String cliUUID, required String cliName, }) { return DetailsComponentWidget( buttons: [ if (getStatus(item['VAW_STATUS']) == status.active) // REJECT ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Cancelar', enText: 'Cancel', ), icon: const Icon(Icons.close), onPressed: () async { showAlertDialog( context, FFLocalizations.of(context).getVariableText( ptText: 'Cancelar Visita', enText: 'Cancel Visit', ), FFLocalizations.of(context).getVariableText( ptText: 'Você tem certeza que deseja bloquear essa visita?', enText: 'Are you sure you want to block this visit?', ), () async { await changeStatusAction ?.call( context, int.parse(item['VAW_DESTINO']), int.parse(item['VAW_ID']), item['VAW_CHAVE'] ?? '', item['VTE_DOCUMENTO'] ?? '', ) .then((value) { // Navigator.pop(context, value); context.pop(value); if (value == false) { showSnackbar( context, FFLocalizations.of(context).getVariableText( enText: 'Error blocking visit', ptText: 'Erro ao bloquear visita', ), true, ); } else if (value == true) { showSnackbar( context, FFLocalizations.of(context).getVariableText( enText: 'Success canceling visit', ptText: 'Succeso ao cancelar visita', ), false, ); } }).catchError((err, stack) { context.pop(); showSnackbar( context, FFLocalizations.of(context).getVariableText( enText: 'Error blocking visit', ptText: 'Erro ao bloquear visita', ), true, ); }); }); }, options: FFButtonOptions( width: 130, height: 40, color: FlutterFlowTheme.of(context).primaryBackground, elevation: 0, textStyle: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).primaryBackground, width: 1, ), // borderRadius: 12, ), ), if (getStatus(item['VAW_STATUS']) != status.active) // RECALL ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Reagendar', enText: 'Reschedule', ), icon: const Icon(Icons.refresh), onPressed: () async { context.pop(); context.pop(); context.pushNamed('scheduleCompleteVisitPage', extra: { 'dropdownValue1': item['MOT_DESCRICAO'], 'dropdownValue2': item['NAC_DESCRICAO'], 'visitorJsonList': [item], 'visitorStrList': item['VTE_DOCUMENTO'], }); }, options: FFButtonOptions( width: 130, height: 40, color: FlutterFlowTheme.of(context).primaryBackground, elevation: 0, textStyle: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).primaryBackground, width: 1, ), // borderRadius: 12, ), ), if (getStatus(item['VAW_STATUS']) == status.active) // SHARE ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Compartilhar', enText: 'Share', ), icon: const Icon(Icons.share), onPressed: () async { Share.share(''' Olá, \*${item['VTE_NOME']}\*! Você foi convidado para \*${cliName}\*. \*Validade do Convite\*: - Início: ${item['VAW_DTINICIO']} - Fim: ${item['VAW_DTFIM']} URL do Convite: https://visita.freaccess.com.br/${item['VAW_ID']}/${cliUUID}/${item['VAW_CHAVE']} '''); }, options: FFButtonOptions( width: 130, height: 40, color: FlutterFlowTheme.of(context).primaryBackground, elevation: 0, textStyle: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).primaryBackground, width: 1, ), // borderRadius: 12, ), ), ], labelsHashMap: Map.from({ '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': item['VTE_NOME'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Inicio", enText: "Start")}:': item['VAW_DTINICIO'] != '' && item['VAW_DTINICIO'] != null ? ValidatorUtil.toLocalDateTime( 'yyyy-MM-dd HH:mm:ss', item['VAW_DTINICIO']) : '', '${FFLocalizations.of(context).getVariableText(ptText: "Fim", enText: "End")}:': item['VAW_DTFIM'] != '' && item['VAW_DTFIM'] != null ? ValidatorUtil.toLocalDateTime( 'yyyy-MM-dd HH:mm:ss', item['VAW_DTFIM']) : '', }), imagePath: 'https://freaccess.com.br/freaccess/getImage.php?cliID=${cliUUID}&atividade=getFoto&Documento=${item['VTE_DOCUMENTO'] ?? ''}&tipo=E', statusHashMap: [ if (getStatus(item['VAW_STATUS']) == status.active) Map.from({ FFLocalizations.of(context).getVariableText( ptText: 'Ativo', enText: 'Active', ): FlutterFlowTheme.of(context).warning, }), if (getStatus(item['VAW_STATUS']) == status.unknown) Map.from({ FFLocalizations.of(context).getVariableText( ptText: 'Pendente', enText: 'Pending', ): FlutterFlowTheme.of(context).alternate, }), if (getStatus(item['VAW_STATUS']) == status.canceled) Map.from({ FFLocalizations.of(context).getVariableText( ptText: 'Cancelado', enText: 'Canceled', ): FlutterFlowTheme.of(context).error, }), if (getStatus(item['VAW_STATUS']) == status.finished) Map.from({ FFLocalizations.of(context).getVariableText( ptText: 'Finalizado', enText: 'Finished', ): FlutterFlowTheme.of(context).success, }), if (getStatus(item['VAW_STATUS']) == status.blocked) Map.from({ FFLocalizations.of(context).getVariableText( ptText: 'Bloqueado', enText: 'Blocked', ): FlutterFlowTheme.of(context).error, }), if (getStatus(item['VAW_STATUS']) == status.inactive) Map.from({ FFLocalizations.of(context).getVariableText( ptText: 'Inativo', enText: 'Inactive', ): FlutterFlowTheme.of(context).warning, }), ], ); } Widget buildPetDetails({ required dynamic item, required BuildContext context, required Future Function(BuildContext, int, int, String, String) changeStatusAction, required String devUUID, required String userUUID, required String cliUUID, required String cliName, required PetsPageModel model, }) { return DetailsComponentWidget( buttons: [ // EDIT ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Editar', enText: 'Edit', ), icon: const Icon(Icons.edit), onPressed: () async { context.pop(); model.isEditing = true; model.item = item; model.switchTab(0); model.setEditForm(); // model.safeSetState!(); }, options: FFButtonOptions( width: 130, height: 40, color: FlutterFlowTheme.of(context).primaryBackground, elevation: 0, textStyle: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).primaryBackground, width: 1, ), // borderRadius: 12, ), ), // DELETE ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Excluir', enText: 'Delete', ), icon: const Icon(Icons.close), onPressed: () async { showAlertDialog( context, FFLocalizations.of(context).getVariableText( ptText: 'Excluir Pet', enText: 'Delete Pet', ), FFLocalizations.of(context).getVariableText( ptText: 'Você tem certeza que deseja excluir esse pet?', enText: 'Are you sure you want to delete this pet?', ), () async { int id = item['id']; await PhpGroup.deletePet .call( petID: id, ) .then((value) { // Navigator.pop(context, value); context.pop(value); context.pop(value); if (value == false) { showSnackbar( context, FFLocalizations.of(context).getVariableText( ptText: 'Erro ao excluir pet', enText: 'Error deleting pet', ), true, ); } else if (value == true) { showSnackbar( context, FFLocalizations.of(context).getVariableText( enText: 'Success deleting pet', ptText: 'Succeso ao excluir pet', ), false, ); } }).catchError((err, stack) { context.pop(); showSnackbar( context, FFLocalizations.of(context).getVariableText( enText: 'Error deleting pet', ptText: 'Erro ao excluir pet', ), true, ); }); }); }, options: FFButtonOptions( width: 130, height: 40, color: FlutterFlowTheme.of(context).primaryBackground, elevation: 0, textStyle: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).primaryBackground, width: 1, ), // borderRadius: 12, ), ), ], // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' labelsHashMap: Map.from({ if (item['species'] != null && item['species'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': item['species'].toString().toUpperCase(), if (item['breed'] != null && item['breed'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': item['breed'].toString().toUpperCase(), if (item['color'] != null && item['color'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': item['color'].toString().toUpperCase(), if (item['birthdayDate'] != null && item['birthdayDate'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Nascimento", enText: "Date of Birth")}:': ValidatorUtil.formatDateTimePicker(item['birthdayDate']), if (item['gender'] != null && item['gender'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Gênero", enText: "Gender")}:': item['gender'] == 'MAC' ? FFLocalizations.of(context) .getVariableText(ptText: 'MACHO', enText: 'MALE') : FFLocalizations.of(context) .getVariableText(enText: 'FEMALE', ptText: 'FÊMEA'), if (item['size'] != null && item['size'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Porte", enText: "Size")}:': item['size'] == 'MIN' ? FFLocalizations.of(context) .getVariableText(ptText: 'MINI', enText: 'MINI') : item['size'] == 'PEQ' ? FFLocalizations.of(context) .getVariableText(ptText: 'PEQUENO', enText: 'SMALL') : item['size'] == 'MED' ? FFLocalizations.of(context) .getVariableText(ptText: 'MÉDIO', enText: 'MEDIUM') : item['size'] == 'GRD' ? FFLocalizations.of(context).getVariableText( ptText: 'GRANDE', enText: 'LARGE') : item['size'] == 'GIG' ? FFLocalizations.of(context).getVariableText( ptText: 'GIGANTE', enText: 'GIANT') : '', if (item['notes'] != null && item['notes'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Observação", enText: "Notes")}:': item['notes'] ?? '', }), imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${devUUID}&userUUID=${userUUID}&cliID=${cliUUID}&atividade=consultaFotoPet&petId=${item['id'] ?? ''}', statusHashMap: [ if (item['gender'] == "MAC") Map.from({ item['name']: Color(0xFF094CB0), }), if (item['gender'] == "FEM") Map.from({ item['name']: Color(0xFFE463E7), }), ], ); }