Implementa el nuevo núcleo operativo: múltiples Actas por Inspección, un Informe por Acta, cierre de campo independiente y firma de empresa diferida con conformidad/disidencia.
97 lines
4.9 KiB
TypeScript
97 lines
4.9 KiB
TypeScript
const dateTime = new Intl.DateTimeFormat('es-AR', {
|
||
dateStyle: 'short',
|
||
timeStyle: 'short',
|
||
});
|
||
|
||
export function formatDate(value: string | null | undefined) {
|
||
if (!value) return '—';
|
||
const date = new Date(value);
|
||
return Number.isNaN(date.getTime()) ? '—' : dateTime.format(date);
|
||
}
|
||
|
||
export function formatDateOnly(value: string | null | undefined) {
|
||
if (!value) return '—';
|
||
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value.slice(0, 10));
|
||
return match ? `${match[3]}/${match[2]}/${match[1]}` : '—';
|
||
}
|
||
|
||
const actions: Record<string, string> = {
|
||
AUTH_LOGIN_SUCCESS: 'Inicio de sesión',
|
||
AUTH_LOGIN_FAILED: 'Acceso rechazado',
|
||
AUTH_LOGOUT: 'Cierre de sesión',
|
||
AUTH_REFRESH: 'Sesión renovada',
|
||
AUTH_REFRESH_REUSE_DETECTED: 'Reutilización de sesión detectada',
|
||
AUTH_PASSWORD_CHANGED: 'Contraseña modificada',
|
||
SYSTEM_BOOTSTRAP_ADMIN_CREATED: 'Administrador inicial creado',
|
||
USER_CREATED: 'Usuario creado',
|
||
USER_UPDATED: 'Usuario actualizado',
|
||
USER_STATUS_CHANGED: 'Estado de usuario modificado',
|
||
USER_ROLES_CHANGED: 'Roles de usuario modificados',
|
||
ROLE_CREATED: 'Rol creado',
|
||
ROLE_UPDATED: 'Rol actualizado',
|
||
ROLE_PERMISSIONS_CHANGED: 'Permisos de rol modificados',
|
||
ASSET_TYPE_CREATED: 'Tipo de elemento creado',
|
||
ASSET_MASTER_BOOTSTRAPPED: 'Configuración inicial de Inventarios',
|
||
ASSET_TYPE_UPDATED: 'Tipo de elemento actualizado',
|
||
ASSET_ATTRIBUTE_CREATED: 'Atributo de inventario creado',
|
||
ASSET_ATTRIBUTE_UPDATED: 'Atributo de inventario actualizado',
|
||
ASSET_CREATED: 'Registro de inventario creado',
|
||
ASSET_FIELD_DISCOVERY_CREATED: 'Alta de campo registrada',
|
||
ASSET_FIELD_DISCOVERY_APPROVED: 'Alta de campo aprobada',
|
||
ASSET_FIELD_DISCOVERY_MATCHED: 'Alta de campo conciliada',
|
||
ASSET_FIELD_DISCOVERY_REJECTED: 'Alta de campo rechazada',
|
||
ASSET_UPDATED: 'Registro de inventario actualizado',
|
||
ASSET_INFORMATION_STATUS_CHANGED: 'Estado de información modificado',
|
||
ASSET_GEOMETRY_UPDATED: 'Ubicación de registro actualizada',
|
||
ASSET_GEOMETRY_REMOVED: 'Ubicación de registro retirada',
|
||
ASSET_MEDIA_UPLOADED: 'Archivo de inventario incorporado',
|
||
ASSET_MEDIA_UPDATED: 'Archivo de inventario actualizado',
|
||
ASSET_MEDIA_REMOVED: 'Archivo de inventario retirado',
|
||
ASSET_PROVENANCE_UPDATED: 'Procedencia de registro actualizada',
|
||
ASSET_PROVENANCE_VERIFIED: 'Procedencia de registro verificada',
|
||
ASSET_AREA_COMPANY_RELATION_CREATED: 'Relación Área–Organización creada',
|
||
ASSET_AREA_COMPANY_RELATION_ENDED: 'Relación Área–Organización finalizada',
|
||
SURVEY_CAMPAIGN_CREATED: 'Campaña de relevamiento creada',
|
||
SURVEY_CAMPAIGN_UPDATED: 'Campaña de relevamiento actualizada',
|
||
SURVEY_CAMPAIGN_STATUS_CHANGED: 'Estado de campaña modificado',
|
||
SURVEY_TARGET_ADDED: 'Objetivo de relevamiento agregado',
|
||
SURVEY_TARGET_UPDATED: 'Plan de objetivo actualizado',
|
||
SURVEY_TARGET_ASSIGNED: 'Objetivo de relevamiento asignado',
|
||
SURVEY_TARGET_STATUS_CHANGED: 'Avance de relevamiento actualizado',
|
||
SURVEY_REPORT_SAVED: 'Borrador de relevamiento guardado',
|
||
SURVEY_REPORT_SUBMITTED: 'Relevamiento enviado a revisión',
|
||
SURVEY_REPORT_APPROVED: 'Relevamiento aprobado',
|
||
SURVEY_REPORT_REJECTED: 'Relevamiento rechazado',
|
||
INSPECTION_VISIT_CREATED: 'Visita de inspección creada',
|
||
INSPECTION_VISIT_UPDATED: 'Plan de visita actualizado',
|
||
INSPECTION_VISIT_STATUS_CHANGED: 'Estado de visita modificado',
|
||
INSPECTION_VISIT_ASSETS_UPDATED: 'Registros de visita actualizados',
|
||
INSPECTION_VISIT_TEAM_UPDATED: 'Equipo de visita actualizado',
|
||
INSPECTION_VISIT_STARTED: 'Visita de inspección iniciada',
|
||
INSPECTION_ACT_CREATED: 'Acta de inspección creada',
|
||
INSPECTION_ACT_UPDATED: 'Acta de inspección actualizada',
|
||
INSPECTION_ACT_CANCELLED: 'Acta de inspección cancelada',
|
||
INSPECTION_ACT_RESPONSIBLE_UPDATED: 'Responsable del acta actualizado',
|
||
INSPECTION_ACT_READY: 'Contenido del acta congelado',
|
||
INSPECTION_ACT_REOPENED: 'Acta devuelta a borrador',
|
||
INSPECTION_ACT_SIGNATURE_RECORDED: 'Firma manuscrita incorporada al acta',
|
||
INSPECTION_ACT_COMPANY_OUTCOME_RECORDED: 'Resultado de recepción empresarial registrado',
|
||
INSPECTION_ACT_CLOSED: 'Acta cerrada',
|
||
INSPECTION_REPORT_GENERATED: 'Informe de inspección generado',
|
||
INSPECTION_VERIFICATION_PLANNED: 'Visita de verificación preparada',
|
||
INSPECTION_FINDING_CREATED: 'Hallazgo abierto',
|
||
INSPECTION_FINDING_UPDATED: 'Hallazgo actualizado',
|
||
INSPECTION_FINDING_FOLLOW_UP_UPDATED: 'Seguimiento de hallazgo actualizado',
|
||
INSPECTION_FINDING_CLOSED: 'Hallazgo cerrado',
|
||
INSPECTION_FINDING_EVIDENCE_UPLOADED: 'Evidencia de hallazgo incorporada',
|
||
INSPECTION_FINDING_COMMUNICATION_CREATED: 'Comunicación de hallazgo registrada',
|
||
};
|
||
|
||
export function actionLabel(action: string) {
|
||
return actions[action] ?? action.replaceAll('_', ' ').toLocaleLowerCase('es-AR');
|
||
}
|
||
|
||
export function initials(firstName: string, lastName: string) {
|
||
return `${firstName[0] ?? ''}${lastName[0] ?? ''}`.toUpperCase();
|
||
}
|