Пример #1
0
        /* Método responsável por persistir os dados no banco de dados,
         * se não existir nenhum erro E existir linhas para serem importadas,
         * insere no banco de dados. */
        private async Task <Retorno> Persiste(Retorno retornoAPI, string nomeArquivo)
        {
            // Se nenhuma foi linha foi válida.
            if (retornoAPI.LinhaArquivoExcel.Count <= 0)
            {
                retornoAPI.StatusCode = "400";
            }
            // Se existirem erros.
            else
            if (retornoAPI.ErrosArquivo.Count > 0)
            {
                retornoAPI.StatusCode = "400";
            }
            // Se deu tudo certo, persiste as informações.
            else
            if (retornoAPI.ErrosArquivo.Count <= 0 && retornoAPI.LinhaArquivoExcel.Count > 0)
            {
                retornoAPI.StatusCode = "200";

                // Monta o cabeçalho
                var arquivoExcel = new ArquivoExcel
                {
                    NomeArquivo          = nomeArquivo,
                    DataImportacao       = DateTime.Now,
                    QuantidadeTotalItens = retornoAPI.LinhaArquivoExcel.Count(),
                    ValorTotalImportado  = retornoAPI.LinhaArquivoExcel.Sum(x => x.ValorUnitario),
                    MenorDataImportada   = retornoAPI.LinhaArquivoExcel.Min(x => x.DataEntrega)
                };

                await _arquivoExcelRepository.Insert(arquivoExcel);

                // Atualiza a referência dos itens com o cabeçalho.
                foreach (var item in retornoAPI.LinhaArquivoExcel)
                {
                    item.ArquivoExcel = arquivoExcel;
                    await _linhaArquivoExcel.Insert(item);
                }

                // Comita a transação.
                await _unitOfWork.CompleteAsync();
            }

            return(retornoAPI);
        }
Пример #2
0
 public async Task Insert(ArquivoExcel arquivoExcel)
 {
     await _context.ArquivoExcel.AddAsync(arquivoExcel);
 }