using LCU.Library.Internal.DocumentIngestorModels.Enums; using System.Collections.Generic; namespace LCU.Library.Internal.DocumentIngestorModels.Models { public class ProcessResult { public ProcessResult() { Success = true; MessageStack = new List(); } public ProcessResult(bool success, string message) { Success = success; MessageStack = new List() { message }; } public bool Success { get; set; } public bool AttemptToArchive { get; set; } public List MessageStack { get; set; } public ProcessStatusTypes ProcessStatusType { get; set; } public bool? EntityIsUnknown { get; set; } public static ProcessResult ProcessCriticalFailure(ProcessResult processResult, string message) { return ProcessCriticalFailure(processResult, new List { message }); } public static ProcessResult ProcessCriticalFailure(ProcessResult processResult, List messages) { processResult.ProcessStatusType = ProcessStatusTypes.CriticalFailure; return ProcessFailure(processResult, messages, false); } public static ProcessResult ProcessDataMappingFailure(ProcessResult processResult, string message) { processResult.ProcessStatusType = ProcessStatusTypes.DataMappingFailure; return ProcessFailure(processResult, message, null); } public static ProcessResult ProcessNotificationDataFailure(ProcessResult processResult, string message) { processResult.ProcessStatusType = ProcessStatusTypes.NotificationDataFailure; return ProcessFailure(processResult, message, false); } public static ProcessResult ProcessCompleted(ProcessResult processResult, string message) { processResult.ProcessStatusType = ProcessStatusTypes.Completed; return ProcessSuccess(processResult, new List { message }, false);; } private static ProcessResult ProcessFailure(ProcessResult processResult, string message, bool? entityIsUnknown) { return ProcessFailure(processResult, new List { message }, entityIsUnknown); } private static ProcessResult ProcessFailure(ProcessResult processResult, List messages, bool? entityIsUnknown) { processResult.Success = false; processResult.MessageStack.AddRange(messages); processResult.EntityIsUnknown = entityIsUnknown; return processResult; } private static ProcessResult ProcessSuccess(ProcessResult processResult, List messages, bool? entityUnknown) { processResult.Success = true; processResult.MessageStack.AddRange(messages); processResult.EntityIsUnknown = entityUnknown; return processResult; } } }