/* 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); }
public async Task Insert(ArquivoExcel arquivoExcel) { await _context.ArquivoExcel.AddAsync(arquivoExcel); }