using System; using System.Globalization; using LCU.Library.DocumentType.Extensions; using LCU.Library.Internal.DocumentIngestorModels.Constants; using LCU.Library.Internal.DocumentIngestorModels.Models; namespace LCU.Library.Internal.DocumentIngestorModels.Validations { public static class MetaDataValidation { public static ProcessResult ValidateAccountNumber(ProcessResult processResult, string accountNumber) { if (string.IsNullOrWhiteSpace(accountNumber) || accountNumber == "0") { processResult = ProcessResult.ProcessDataMappingFailure(processResult, ValidationMessages.AccountInvalidMessage); } return processResult; } public static ProcessResult ValidateFileName(ProcessResult processResult, string fileName) { if (string.IsNullOrWhiteSpace(fileName)) { processResult = ProcessResult.ProcessDataMappingFailure(processResult, ValidationMessages.FileNameInvalidMessage); } return processResult; } public static ProcessResult ValidateFullName(ProcessResult processResult, string fullName) { if (string.IsNullOrWhiteSpace(fullName)) { processResult = ProcessResult.ProcessDataMappingFailure(processResult, ValidationMessages.FullNameInvalidMessage); } return processResult; } public static ProcessResult ValidateDocumentType(ProcessResult processResult, string documentType) where T: Enum { if (string.IsNullOrWhiteSpace(documentType) || !EnumExtensions.IsDocumentTypeOf(documentType)) { processResult = ProcessResult.ProcessCriticalFailure(processResult, $"{ValidationMessages.DocumentTypeInvalidMessage}. Document Type provided was {documentType}, which was not of type {typeof(T).Name}"); } return processResult; } public static ProcessResult ValidatePdf(ProcessResult processResult, string pdf) { if (string.IsNullOrWhiteSpace(pdf)) { processResult = ProcessResult.ProcessDataMappingFailure(processResult, ValidationMessages.PdfInvalidMessage); } return processResult; } public static ProcessResult ValidateTin(ProcessResult processResult, string tin) { if (string.IsNullOrWhiteSpace(tin) || tin == "0") { processResult = ProcessResult.ProcessDataMappingFailure(processResult, ValidationMessages.TinInvalidMessage); } return processResult; } public static ProcessResult ValidateDate(ProcessResult processResult, string date, string format) { try{ if (string.IsNullOrEmpty(date) || !DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out _)){ return ProcessResult.ProcessDataMappingFailure(processResult, $"{ValidationMessages.CreationDateInvalidMessage}. Date provided {date} could not be parsed from format {format}"); } } catch (Exception){ return ProcessResult.ProcessDataMappingFailure(processResult, ValidationMessages.CreationDateInvalidMessage); } return processResult; } } }