public static string ToString(this FileHeaderModel model)
        {
            var header = new StringBuilder();

            foreach (var headerField in model.Content.PrepareSequenceFileFields())
            {
                header.Append(headerField.Value);
            }

            return(header.Append(Environment.NewLine).ToString());
        }
예제 #2
0
        protected override FileHeaderModel ReadHeader(string[] file)
        {
            if (Configuration.HeaderFields == null || !Configuration.HeaderFields.Any())
            {
                return(null);
            }

            var headerLine = file.Select((text, index) => new { LineText = text, LineNumber = index + 1 })
                             .Where(p =>
            {
                var initialPosition = Configuration.HeaderFields["TIPO_REGISTRO"].InitialPosition;
                var length          = Configuration.HeaderFields["TIPO_REGISTRO"].Length;
                return(length != null && (initialPosition != null &&
                                          p.LineText.Substrings(initialPosition.Value, length.Value) == Configuration.BusinessSettings.HeaderIdentification));
            }).FirstOrDefault();

            if (headerLine == null || headerLine.LineText.isNullOrEmpty())
            {
                throw new Exception($"header_invalido");
            }

            var headerModel = new FileHeaderModel();

            headerModel.Content.LineNumber = 1;
            foreach (var key in Configuration.HeaderFields.Keys)
            {
                var fieldConfiguration = Configuration.HeaderFields[key];

                var fileField = new Field(ProcessType, fieldConfiguration)
                {
                    Value = headerLine.LineText.Substrings(fieldConfiguration.InitialPosition, fieldConfiguration.Length),
                };

                headerModel.Content.Fields.Add(key, fileField);
            }

            if (!headerModel.Content.Fields.Any())
            {
                throw new Exception($"header_invalido");
            }

            return(headerModel);
        }
        private string CreateHeaderLine(string fileName)
        {
            var headerModel = new FileHeaderModel {
                Content = { LineNumber = 1 }
            };

            foreach (var key in Configuration.BusinessSettings.DefaultValues.Keys)
            {
                if (Configuration.HeaderFields.ContainsKey(key))
                {
                    var fieldConfiguration = Configuration.HeaderFields[key];
                    var fileField          = new Field(ProcessType, fieldConfiguration)
                    {
                        Value = Configuration.BusinessSettings.DefaultValues[key]
                    };
                    headerModel.Content.Fields.Add(key, fileField);
                }
            }


            var creationDate = DateTime.Now;

            CreateField(headerModel.Content, EnumFileFieldsType.Header, "TIPO_REGISTRO", Configuration.BusinessSettings.HeaderIdentification);
            CreateField(headerModel.Content, EnumFileFieldsType.Header, "DATA_GERACAO", $"{creationDate:ddMMyyyy}");
            CreateField(headerModel.Content, EnumFileFieldsType.Header, "HORA_GERACAO", $"{creationDate:HHmmss}");
            CreateField(headerModel.Content, EnumFileFieldsType.Header, "NOME_ARQUIVO_REFERENCIA_ITURAN", $"{fileName}");

            var header = new StringBuilder();

            foreach (var headerField in headerModel.Content.PrepareSequenceFileFields())
            {
                header.Append(headerField.Value);
            }

            return(header.Append(Environment.NewLine).ToString());
        }