- Setting: lee support_title/description/days/hours/email/phone - SettingsProvider: fallback a Setting vacio si no hay datos en DB - SupportView: guard para settings null - Avatar: ui-avatars.com como imagen por defecto (con nombre) - Perfil: seccion correo como ExpansionTile (acordeon) paso 1: email+contrasena+confirmar → Enviar codigo paso 2: ingresar codigo de 6 digitos → Verificar (verde) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
74 lines
2.7 KiB
Dart
74 lines
2.7 KiB
Dart
class Setting {
|
||
final bool tarifas;
|
||
final bool domicilios;
|
||
final bool google;
|
||
final String versionIos;
|
||
final String versionAndroid;
|
||
final String horaNotificacion;
|
||
final String tituloSoporte;
|
||
final String parrafoSoporte;
|
||
final String numeroSoporte;
|
||
final String emailSoporte;
|
||
final String diasSoporte;
|
||
final String horasSoporte;
|
||
final String politicasPrivacidad;
|
||
final String politicasPrivacidadTitle;
|
||
final String politicasPrivacidadBody;
|
||
final String terminosCondiciones;
|
||
final String terminosCondicionesTitle;
|
||
final String terminosCondicionesBody;
|
||
|
||
const Setting({
|
||
required this.tarifas,
|
||
required this.domicilios,
|
||
required this.google,
|
||
required this.versionIos,
|
||
required this.versionAndroid,
|
||
required this.horaNotificacion,
|
||
required this.tituloSoporte,
|
||
required this.parrafoSoporte,
|
||
required this.numeroSoporte,
|
||
required this.emailSoporte,
|
||
required this.diasSoporte,
|
||
required this.horasSoporte,
|
||
required this.politicasPrivacidad,
|
||
required this.politicasPrivacidadTitle,
|
||
required this.politicasPrivacidadBody,
|
||
required this.terminosCondiciones,
|
||
required this.terminosCondicionesTitle,
|
||
required this.terminosCondicionesBody,
|
||
});
|
||
|
||
static bool _b(dynamic v, [bool d = false]) {
|
||
if (v == null) return d;
|
||
if (v is bool) return v;
|
||
return v.toString() == 'true';
|
||
}
|
||
|
||
static String _s(dynamic v, [String d = '']) => v?.toString() ?? d;
|
||
|
||
static Setting fromDocument(Map<String, dynamic> doc) {
|
||
return Setting(
|
||
tarifas: _b(doc['tarifas']),
|
||
domicilios: _b(doc['domicilios']),
|
||
google: _b(doc['google']),
|
||
versionIos: _s(doc['version_ios']),
|
||
versionAndroid: _s(doc['version_android']),
|
||
horaNotificacion: _s(doc['hora_notificacion']),
|
||
tituloSoporte: _s(doc['support_title'] ?? doc['titulo_soporte'], 'Soporte ProsApp'),
|
||
parrafoSoporte: _s(doc['support_description'] ?? doc['parrafo_soporte'],
|
||
'Estamos aquí para ayudarte. Contáctanos por cualquiera de estos canales.'),
|
||
numeroSoporte: _s(doc['support_phone'] ?? doc['numero_soporte']),
|
||
emailSoporte: _s(doc['support_email'] ?? doc['email_soporte']),
|
||
diasSoporte: _s(doc['support_days'] ?? doc['dias_soporte'], 'Lunes a Viernes'),
|
||
horasSoporte: _s(doc['support_hours'] ?? doc['horas_soporte'], '8:00 am – 6:00 pm'),
|
||
politicasPrivacidad: _s(doc['politicas_privacidad']),
|
||
politicasPrivacidadTitle: _s(doc['politicas_privacidad_title']),
|
||
politicasPrivacidadBody: _s(doc['politicas_privacidad_body']),
|
||
terminosCondiciones: _s(doc['terminos_condiciones']),
|
||
terminosCondicionesTitle: _s(doc['terminos_condiciones_title']),
|
||
terminosCondicionesBody: _s(doc['terminos_condiciones_body']),
|
||
);
|
||
}
|
||
}
|