private bool ValidateCustomerDocument(CancelationModel cancelationModel)
        {
            if (cancelationModel.DocumentType == null &&
                BusinessExtensions.GetDocumentType(cancelationModel.CustomerDocument) == null)
            {
                return(false);
            }


            if (cancelationModel.CustomerDocument.RemoveDocumentSpecialCharacters().Length == 11 ||
                cancelationModel.CustomerDocument.RemoveDocumentSpecialCharacters().Length == 14)
            {
                return(true);
            }

            _logs.Add($"O cliente vinculado à apólice {cancelationModel.PolicyIdentifier} não possui um documento válido e foi ignorado no arquivo." +
                      $" NR_CNPJ_CPF [{cancelationModel.CustomerDocument}] - CD_TIPO_PESSO [{cancelationModel.DocumentType}]");
            return(false);
        }
        private List <string> CreateBodyLines(List <CancelationModel> population)
        {
            var bodyModel  = new FileBodyModel();
            var lineNumber = 1;

            foreach (var data in population)
            {
                if (data.PolicyInsurerIdentifier.isNullOrEmpty())
                {
                    _logs.Add($"A apólice {data.PolicyIdentifier} foi listada pra cancelamento, porém não pode ser cancelada, pois não possui um número de apólice");
                    continue;
                }

                var line = new LineFieldsModel()
                {
                    LineNumber = lineNumber++
                };
                foreach (var key in Configuration.BusinessSettings.DefaultValues.Keys)
                {
                    if (Configuration.BodyFields.ContainsKey(key))
                    {
                        var fieldConfiguration = Configuration.BodyFields[key];
                        var fileField          = new Field(ProcessType, fieldConfiguration)
                        {
                            Value = Configuration.BusinessSettings.DefaultValues[key]
                        };

                        line.Fields.Add(key, fileField);
                    }
                }


                CreateField(line, EnumFileFieldsType.Body, "TIPO_REGISTRO", Configuration.BusinessSettings.BodyIdentification);
                CreateField(line, EnumFileFieldsType.Body, "REGISTRO_SEQUENCIAL", line.LineNumber.ToString());
                CreateField(line, EnumFileFieldsType.Body, "DOCUMENTO", data.PolicyInsurerIdentifier.RemoveHdiDocumentFormat());
                CreateField(line, EnumFileFieldsType.Body, "ENDOSSO");
                CreateField(line, EnumFileFieldsType.Body, "NUMERO_CONTROLE_ITURAN", data.PolicyIdentifier.ToString());
                CreateField(line, EnumFileFieldsType.Body, "CODIGO_EQUIPAMENTO");
                CreateField(line, EnumFileFieldsType.Body, "DATA_CANCELAMENTO", $"{data.CancelationDate:yyyyMMdd}");
                CreateField(line, EnumFileFieldsType.Body, "DATA_PROCESSAMENTO");
                CreateField(line, EnumFileFieldsType.Body, "STATUS_CANCELAMENTO");
                CreateField(line, EnumFileFieldsType.Body, "CODIGO_OBSERVACAO");
                CreateField(line, EnumFileFieldsType.Body, "OBSERVACAO");
                CreateField(line, EnumFileFieldsType.Body, "VALOR_PREMIO");

                if (!ValidateCustomerDocument(data))
                {
                    continue;
                }

                CreateField(line, EnumFileFieldsType.Body, "TIPO_DOCUMENTO", data.DocumentType == null
                                                ? BusinessExtensions.GetDocumentType(data.CustomerDocument)?.ToInt().ToString()
                                                : data.DocumentType?.ToInt().ToString());

                CreateField(line, EnumFileFieldsType.Body, "NR_CNPJ_CPF", data.CustomerDocument.RemoveDocumentSpecialCharacters());

                bodyModel.Content.Add(line);
            }

            var bodyContent = new List <string>();

            foreach (var line in bodyModel.Content)
            {
                var body = new StringBuilder();
                foreach (var bodyField in line.PrepareSequenceFileFields())
                {
                    body.Append(bodyField.Value);
                }

                bodyContent.Add(body.Append(Environment.NewLine).ToString());
            }

            return(bodyContent);
        }