public static (bool isValid, IEnumerable <IValidationResult> errors) IsValid(this IMigrationSet set) { var errors = new List <IValidationResult>(); bool isValidSet = set.Info != null && set.Entities != null; if (isValidSet == false) { return(false, errors); } var isValidInfo = set.Info.IsValid(); switch (set.Info?.Type) { case MigrationType.ChartOfAccount: { var validation = new AccountValidation(); return(Validate(validation, set.Entities.Cast <IAccount>(), isValidInfo)); } case MigrationType.Journal: { var validation = new JournalValidation(); return(Validate(validation, set.Entities.Cast <IJournal>(), isValidInfo)); } case MigrationType.InputInvoice: { var validation = new InputInvoiceValidation(); return(Validate(validation, set.Entities.Cast <IInputInvoice>(), isValidInfo)); } case MigrationType.OutputInvoice: { var validation = new OutputInvoiceValidation(); return(Validate(validation, set.Entities.Cast <IOutputInvoice>(), isValidInfo)); } case MigrationType.None: return(false, errors); default: return(false, errors); } }
private static async Task <string> ValidateFile(Stream stream, string fileName) { try { string json; StringBuilder sb = new StringBuilder(); Stream streamToRead = fileName.Contains(".zip") ? await UnZipStreamAsync(stream) : stream; using (StreamReader reader = new StreamReader(streamToRead, Encoding.UTF8)) { json = await reader.ReadToEndAsync(); } var settings = JsonSerializationSettingsUtils.GetSettings(); settings.SerializationBinder = new ValidationBinder(); IMigrationSet set = JsonConvert.DeserializeObject <IMigrationSet>(json, settings); var result = set.IsValid(); sb.AppendLine($"Fichero: {fileName}"); sb.AppendLine($"Migration set es válido: {result.isValid}"); sb.AppendLine($"Migration info es válido: {set.Info.IsValid()}"); sb.AppendLine($"Todas las entidades son válidas: {!result.errors.Any()}"); if (result.errors.Any()) { foreach (var item in result.errors) { sb.AppendLine($"Línea : {item.Line} - {item.Code}"); } } return(sb.ToString()); } catch (Exception e) { Console.WriteLine(e.InnerException?.Message ?? e.Message); return(e.InnerException?.Message ?? e.Message); } }