- Corrige la comparación del hash del report para detectar cambios y comentarios nuevos.
- Elimina la generación de documentos artificiales para comentarios. - Añade los estados Nueva denuncia, Actualización ciudadano, Actividad OAAF y Actualizada. - Incorpora circuitos específicos de comunicación SAJ y SDI. - Registra correctamente el tipo de última subida en el histórico. - Añade confirmación al asignar una denuncia a un grupo distinto al del usuario. - Mejora etiquetas, mensajes de ayuda e instrucciones de la aplicación. - Añade la persistencia técnica necesaria para identificar el origen de cada actualización.
This commit is contained in:
@@ -314,12 +314,12 @@
|
||||
<th>#</th>
|
||||
<th>Canal</th>
|
||||
<th>Presentacion</th>
|
||||
<th>Actividad ciudadano</th>
|
||||
<th>Actividad OAAF</th>
|
||||
<th>Estado</th>
|
||||
<th>Acceso</th>
|
||||
<th>Seguimiento</th>
|
||||
<th class="inbox-action-cell">Detalle</th>
|
||||
<th title="Fecha de la última aportación o comentario realizado por el ciudadano.">Actividad ciudadano</th>
|
||||
<th title="Fecha de la última comunicación o fichero incorporado por un gestor de la OAAF.">Actividad OAAF</th>
|
||||
<th title="Resume si la denuncia es nueva, tiene cambios pendientes o ya está actualizada en Gestiona.">Estado</th>
|
||||
<th title="Indica si tu usuario gestor del buzón puede acceder a esta denuncia.">Acceso</th>
|
||||
<th title="Indica si el cambio está pendiente, descargado en la aplicación o ya incorporado a Gestiona.">Gestiona</th>
|
||||
<th class="inbox-action-cell" title="Abre el detalle disponible en GlobalLeaks.">Detalle</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -361,17 +361,17 @@
|
||||
<td class="inbox-activity-cell">@FormatCitizenActivity(report)</td>
|
||||
<td class="inbox-activity-cell" title="@GetReceiverActivityTitle(report)">@FormatReceiverActivity(report)</td>
|
||||
<td>
|
||||
<span class="badge @GetStatusBadgeCss(report)">
|
||||
<span class="badge @GetStatusBadgeCss(report)" title="@GetStatusHelp(report)">
|
||||
@GetStatusLabel(report)
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge @GetAccessBadgeCss(report)">
|
||||
<span class="badge @GetAccessBadgeCss(report)" title="@GetAccessHelp(report)">
|
||||
@GetAccessLabel(report)
|
||||
</span>
|
||||
</td>
|
||||
<td class="inbox-tracking-cell" title="@(report.TrackingNote ?? string.Empty)">
|
||||
<span class="badge @GetTrackingBadgeCss(report)">@GetTrackingLabel(report)</span>
|
||||
<td class="inbox-tracking-cell">
|
||||
<span class="badge @GetTrackingBadgeCss(report)" title="@GetTrackingHelp(report)">@GetTrackingLabel(report)</span>
|
||||
</td>
|
||||
<td class="inbox-action-cell">
|
||||
<button type="button"
|
||||
@@ -1282,7 +1282,7 @@
|
||||
|
||||
if (report.CitizenHasNewActivity)
|
||||
{
|
||||
return "Actualizacion ciudadano";
|
||||
return "Actualización ciudadano";
|
||||
}
|
||||
|
||||
if (IsReceiverOnlyUpdate(report))
|
||||
@@ -1290,14 +1290,19 @@
|
||||
return "Actividad OAAF";
|
||||
}
|
||||
|
||||
if (report.Updated)
|
||||
if (report.AlreadyInGestiona && !report.ActivityAnalyzed)
|
||||
{
|
||||
return "Sin comprobar";
|
||||
}
|
||||
|
||||
if (IsUpToDateInGestiona(report))
|
||||
{
|
||||
return "Actualizada";
|
||||
}
|
||||
|
||||
return string.Equals(report.Status, "closed", StringComparison.OrdinalIgnoreCase)
|
||||
? "Cerrada"
|
||||
: "Abierta";
|
||||
: "Nueva denuncia";
|
||||
}
|
||||
|
||||
private static string GetStatusBadgeCss(ReportDto report)
|
||||
@@ -1317,7 +1322,12 @@
|
||||
return "bg-secondary";
|
||||
}
|
||||
|
||||
if (report.Updated)
|
||||
if (report.AlreadyInGestiona && !report.ActivityAnalyzed)
|
||||
{
|
||||
return "bg-warning text-dark";
|
||||
}
|
||||
|
||||
if (IsUpToDateInGestiona(report))
|
||||
{
|
||||
return "bg-light text-dark";
|
||||
}
|
||||
@@ -1327,6 +1337,47 @@
|
||||
: "bg-primary";
|
||||
}
|
||||
|
||||
private static bool IsUpToDateInGestiona(ReportDto report)
|
||||
{
|
||||
if (!report.AlreadyInGestiona)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var lastUpload = ParseDate(report.LastGestionaUploadAt);
|
||||
var latestActivity = new[]
|
||||
{
|
||||
ParseDate(report.CitizenLastActivity),
|
||||
ParseDate(report.ReceiverLastActivity)
|
||||
}
|
||||
.Where(value => value is not null)
|
||||
.Select(value => value!.Value)
|
||||
.DefaultIfEmpty()
|
||||
.Max();
|
||||
|
||||
if (lastUpload is not null && latestActivity != default)
|
||||
{
|
||||
return lastUpload.Value >= latestActivity;
|
||||
}
|
||||
|
||||
return report.ActivityAnalyzed &&
|
||||
!report.CitizenHasNewActivity &&
|
||||
!report.ReceiverHasNewActivity;
|
||||
}
|
||||
|
||||
private static string GetStatusHelp(ReportDto report)
|
||||
=> GetStatusLabel(report) switch
|
||||
{
|
||||
"Nueva denuncia" => "La denuncia todavía no tiene expediente creado desde la aplicación y está pendiente de actuación.",
|
||||
"Actualización ciudadano" => "El ciudadano ha añadido un comentario, un fichero o una modificación posterior a la última subida a Gestiona.",
|
||||
"Actividad OAAF" => "Un gestor de la OAAF ha realizado una comunicación o añadido un fichero posterior a la última subida a Gestiona.",
|
||||
"Actualizada" => "La última subida a Gestiona es igual o posterior a la actividad del ciudadano y de la OAAF detectada en el buzón.",
|
||||
"Sin comprobar" => "No se ha podido comparar en este momento la actividad del buzón con la última subida a Gestiona.",
|
||||
"Cerrada" => "La denuncia figura cerrada en GlobalLeaks.",
|
||||
"Sin leer" => "La denuncia todavía no se ha abierto con este usuario en GlobalLeaks.",
|
||||
_ => string.Empty
|
||||
};
|
||||
|
||||
private static string GetAccessLabel(ReportDto report)
|
||||
=> report.Accessible switch
|
||||
{
|
||||
@@ -1343,6 +1394,14 @@
|
||||
_ => "bg-light text-dark"
|
||||
};
|
||||
|
||||
private static string GetAccessHelp(ReportDto report)
|
||||
=> report.Accessible switch
|
||||
{
|
||||
true => "Tu usuario gestor del buzón tiene acceso a esta denuncia.",
|
||||
false => "GlobalLeaks indica que tu usuario gestor del buzón no tiene acceso a esta denuncia.",
|
||||
_ => "GlobalLeaks no ha informado si tu usuario puede acceder a esta denuncia."
|
||||
};
|
||||
|
||||
private static bool CanUseReport(ReportDto report)
|
||||
=> report.Accessible != false;
|
||||
|
||||
@@ -1422,6 +1481,35 @@
|
||||
return "bg-light text-dark";
|
||||
}
|
||||
|
||||
private static string GetTrackingHelp(ReportDto report)
|
||||
{
|
||||
if (report.AlreadyInGestiona)
|
||||
{
|
||||
return "La denuncia ya tiene un expediente creado en Gestiona. El estado indica si existe actividad posterior pendiente.";
|
||||
}
|
||||
|
||||
if (report.DownloadedByAnotherUser)
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(report.TrackingNote)
|
||||
? "Otro usuario ya la descargó en la aplicación, pero todavía no se ha materializado la subida a Gestiona."
|
||||
: $"{report.TrackingNote}. Todavía no se ha materializado la subida a Gestiona.";
|
||||
}
|
||||
|
||||
if (report.DownloadedByCurrentUser)
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(report.TrackingNote)
|
||||
? "Ya la descargaste en la aplicación, pero todavía no se ha materializado la subida a Gestiona."
|
||||
: $"{report.TrackingNote}. Todavía no se ha materializado la subida a Gestiona.";
|
||||
}
|
||||
|
||||
if (report.AlreadyImported)
|
||||
{
|
||||
return "La denuncia está incorporada a la aplicación, pero todavía no se ha subido a Gestiona.";
|
||||
}
|
||||
|
||||
return "La denuncia todavía no se ha descargado ni subido a Gestiona.";
|
||||
}
|
||||
|
||||
private static string? GetReportRowCss(ReportDto report)
|
||||
{
|
||||
if (report.Accessible == false)
|
||||
|
||||
Reference in New Issue
Block a user