Esempio n. 1
0
 public void AdicionarLote(Empresa empresa, EFinanceiraLote lote)
 {
     empresa.Id     = this.SalvarEmpresa(empresa);
     lote.IdEmpresa = empresa.Id;
     if (!base.EfinanceiraLoteRepository.LoteExists(lote.IdLote))
     {
         base.EfinanceiraLoteRepository.Add(lote);
     }
 }
        public async Task <object> AdicionarLotes(object input)
        {
            var service = new EventoService();
            var data    = DateTime.Now;

            var arquivos = input.ToStringArray();

            foreach (var caminhoArquivo in arquivos)
            {
                var arquivoEncriptado        = File.ReadAllBytes(caminhoArquivo);
                var arquivosEncriptadosBytes = new List <byte[]>();

                if (arquivoEncriptado.IsZipFile())
                {
                    arquivosEncriptadosBytes.AddRange(arquivoEncriptado.UnzipAll());
                }
                else
                {
                    arquivosEncriptadosBytes.Add(arquivoEncriptado);
                }

                foreach (var arquivoEncriptadoBytes in arquivosEncriptadosBytes)
                {
                    if (!CryptographyHelper.IsHeaderValid(arquivoEncriptadoBytes, Resources.HeaderEFinanceira))
                    {
                        throw new ArquivoInvalidoException();
                    }

                    var arquivoDecriptado = CryptographyHelper.Decrypt(arquivoEncriptadoBytes, Resources.CryptoPrivateKey);
                    var dadosArquivo      = JsonConvert.DeserializeObject <ArquivoComunicacaoEFinanceiraDto>(arquivoDecriptado.GetString());

                    var empresa = new Empresa
                    {
                        Entidade = dadosArquivo.Entidade,
                        CNPJ     = dadosArquivo.EntidadeCnpj,
                        Nome     = dadosArquivo.EntidadeNome
                    };

                    var lote = new EFinanceiraLote
                    {
                        DataAtualizacao = data,
                        DataUpload      = data,
                        IdLote          = dadosArquivo.LoteId,
                        StatusEvento    = (int)StatusEventoEnum.Novo,
                        TipoEvento      = dadosArquivo.TipoEventoId,
                        XmlLote         = dadosArquivo.LoteXmlBase64.FromBase64String()
                    };

                    service.AdicionarLote(empresa, lote);
                }
            }

            return(new { });
        }