212 lines
8.1 KiB
Plaintext
212 lines
8.1 KiB
Plaintext
@using LCU.Library.Internal.DocumentIngestorModels.Models
|
|
@inject AuthenticationHelper AuthorizationHelper;
|
|
@inject LCU.Library.Internal.Security.Service.IAzureAdAuthorizationService AzureAdAuthorizationService
|
|
@inject IModalService Modal;
|
|
@inject IDocumentProcessingInfoService DocumentProcessingInfoService;
|
|
@inject IToastService ToastService;
|
|
|
|
@if (processStatusTypes.Any()) {
|
|
<CollapsibleComponent ButtonClass="btn btn-link"
|
|
HeaderClass="row grid-header-row grid-subheader-row-container processing-header"
|
|
ButtonContainerClass="grid-button-container"
|
|
IsCollapsed="false">
|
|
<HeaderContent>
|
|
<RowSubHeader>Update Process Status</RowSubHeader>
|
|
</HeaderContent>
|
|
<BodyContent>
|
|
<Confirm @ref="UpdateStatusConfirmation" ConfirmationChanged="UpdateStatus_Confirm"
|
|
ConfirmationMessage=@("Are you sure you want to update the processing status" +
|
|
$" from {DocumentProcessingInfo.StatusType} to {SelectedStatus}?")
|
|
ConfirmationTitle=@("Update Status")>
|
|
</Confirm>
|
|
<div class="d-flex grid-row-container-bordered">
|
|
<div class="col-md-3 col-with-right-boarder">
|
|
<div class="form-group form-row">
|
|
<label for="StatusTypes" class="col-sm-12 col-form-label">Change Status to:</label>
|
|
<select class="form-control" id="StatusTypes" @bind="SelectedStatus" @oninput="ChangeStatusType">
|
|
<option></option>
|
|
@foreach (var status in processStatusTypes)
|
|
{
|
|
<option value="@status">@status</option>
|
|
}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-with-right-boarder">
|
|
<div class="form-group form-row">
|
|
<label for="ReasonForChange" class="col-sm-12 col-form-label">Reason for Change:</label>
|
|
<input class="form-control" id="ReasonForChange" placeholder="" @oninput="ChangeReasonMessage" @bind="UpdateStatusRequest.ReasonMessage"/>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div>
|
|
<label for="UpdateStatus" class="col-sm-12 col-form-label"> </label>
|
|
<button type="button"
|
|
class="btn btn-primary"
|
|
@onclick="UpdateStatus_Click"
|
|
title="Update Status"
|
|
id="UpdateStatus"
|
|
disabled="@Disabled">
|
|
Update Process Status
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</BodyContent>
|
|
</CollapsibleComponent>
|
|
}
|
|
|
|
@code {
|
|
[Parameter]
|
|
public DocumentProcessingInfo DocumentProcessingInfo { get; set; }
|
|
|
|
[Parameter]
|
|
public EventCallback<IModalReference> RefreshData { get; set; }
|
|
|
|
[Parameter]
|
|
public DocumentProcessingInfoStatusRequest UpdateStatusRequest { get; set; }
|
|
|
|
[Parameter]
|
|
public IEnumerable<ProcessStatusTypes> processStatusTypes { get; set; }
|
|
|
|
[Parameter]
|
|
public bool Disabled { get; set; } = true;
|
|
|
|
private ConfirmBase? UpdateStatusConfirmation { get; set; }
|
|
|
|
private ProcessStatusTypes? SelectedStatus { get; set; } = null;
|
|
|
|
private readonly Dictionary<ProcessStatusTypes, List<ProcessStatusTypes>> _statusChangeRejectionList =
|
|
new ()
|
|
{
|
|
[ProcessStatusTypes.Processing] = new()
|
|
{
|
|
ProcessStatusTypes.Reprocessing,
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.Completed] = new()
|
|
{
|
|
ProcessStatusTypes.Processing,
|
|
ProcessStatusTypes.Completed,
|
|
ProcessStatusTypes.ArchiveFailure,
|
|
ProcessStatusTypes.CriticalFailure,
|
|
ProcessStatusTypes.DataMappingFailure,
|
|
ProcessStatusTypes.Reprocessing,
|
|
ProcessStatusTypes.NotificationDataFailure,
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.ArchiveFailure] = new()
|
|
{
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.CriticalFailure] = new()
|
|
{
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.DataMappingFailure] = new()
|
|
{
|
|
ProcessStatusTypes.Processing,
|
|
ProcessStatusTypes.Completed,
|
|
ProcessStatusTypes.ArchiveFailure,
|
|
ProcessStatusTypes.CriticalFailure,
|
|
ProcessStatusTypes.DataMappingFailure,
|
|
ProcessStatusTypes.Reprocessing,
|
|
ProcessStatusTypes.NotificationDataFailure,
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.Reprocessing] = new()
|
|
{
|
|
ProcessStatusTypes.Processing,
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.NotificationDataFailure] = new()
|
|
{
|
|
ProcessStatusTypes.Processing,
|
|
ProcessStatusTypes.ArchiveFailure,
|
|
ProcessStatusTypes.CriticalFailure,
|
|
ProcessStatusTypes.DataMappingFailure,
|
|
ProcessStatusTypes.Reprocessing,
|
|
ProcessStatusTypes.UploadCompletionReprocessing
|
|
},
|
|
[ProcessStatusTypes.UploadCompletionReprocessing] = new()
|
|
{
|
|
ProcessStatusTypes.Processing,
|
|
ProcessStatusTypes.ArchiveFailure,
|
|
ProcessStatusTypes.CriticalFailure,
|
|
ProcessStatusTypes.DataMappingFailure,
|
|
ProcessStatusTypes.Reprocessing
|
|
}
|
|
|
|
};
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
processStatusTypes = GetStatusTypes();
|
|
UpdateStatusRequest = new DocumentProcessingInfoStatusRequest()
|
|
{
|
|
DocumentProcessingInfoId = DocumentProcessingInfo.DocumentProcessingInfoId,
|
|
ProcessStatus = DocumentProcessingInfo.StatusType,
|
|
Username = AzureAdAuthorizationService.GetUserName()
|
|
};
|
|
}
|
|
|
|
private IEnumerable<ProcessStatusTypes> GetStatusTypes()
|
|
{
|
|
return Enum.GetValues<ProcessStatusTypes>()
|
|
.Where(x => !_statusChangeRejectionList[DocumentProcessingInfo.StatusType].Contains(x)
|
|
&& x != DocumentProcessingInfo.StatusType);
|
|
}
|
|
|
|
private void ChangeStatusType(ChangeEventArgs changeEventArgs)
|
|
{
|
|
var value = changeEventArgs.Value?.ToString();
|
|
if(!string.IsNullOrWhiteSpace(value))
|
|
{
|
|
SelectedStatus = UpdateStatusRequest.ProcessStatus = Enum.Parse<ProcessStatusTypes>(value);
|
|
}
|
|
else
|
|
{
|
|
SelectedStatus = null;
|
|
}
|
|
|
|
ValidateForm();
|
|
}
|
|
|
|
private void ChangeReasonMessage(ChangeEventArgs changeEventArgs)
|
|
{
|
|
UpdateStatusRequest.ReasonMessage = changeEventArgs.Value?.ToString();
|
|
|
|
ValidateForm();
|
|
}
|
|
|
|
private void ValidateForm()
|
|
{
|
|
Disabled = string.IsNullOrWhiteSpace(UpdateStatusRequest.ReasonMessage) ||
|
|
string.IsNullOrWhiteSpace(UpdateStatusRequest.Username) ||
|
|
SelectedStatus is null;
|
|
}
|
|
|
|
private void UpdateStatus_Click()
|
|
{
|
|
UpdateStatusConfirmation?.Show();
|
|
}
|
|
|
|
private async Task UpdateStatus_Confirm(bool confirmed)
|
|
{
|
|
if (confirmed)
|
|
{
|
|
var openModal = LoadingLighthouse.Show(Modal);
|
|
|
|
try
|
|
{
|
|
await DocumentProcessingInfoService.UpdateStatus(UpdateStatusRequest);
|
|
ToastService.ShowInfo("Document status has been updated.");
|
|
}
|
|
catch {}
|
|
|
|
await RefreshData.InvokeAsync(openModal);
|
|
}
|
|
}
|
|
|
|
}
|