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);
            }
        }
Exemple #2
0
        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);
            }
        }