public async Task <List <string> > Handle(CreateImportacoesRequest request, CancellationToken cancellationToken) { var mensagemsErro = new List <string>(); if (request.Arquivo == null) { mensagemsErro.Add("O Arquivo deve ser informado."); return(mensagemsErro); } ExcelPackage.LicenseContext = LicenseContext.NonCommercial; var produtos = new List <Produto>(); var importacao = new Importacao(Guid.NewGuid(), DateTime.Now); using (var package = new ExcelPackage(request.Arquivo.OpenReadStream())) { foreach (var worksheet in package.Workbook.Worksheets) { //loop all rows for (var row = 2; row <= worksheet.Dimension.End.Row; row++) { //loop all columns in a row var produto = GetProdutoByRow(worksheet, row); var erros = produto.Valida(row); if (erros.Count != 0) { mensagemsErro.AddRange(erros); } if (erros.Count != 0) { continue; } produto.Importacao = importacao; importacao.QuantidadeProdutosImportados++; produtos.Add(produto); } } } if (mensagemsErro.Count != 0) { _domainValidation.AddError("Erros foram encontrados!"); mensagemsErro.Add("Nenhum produto foi importado, corrija a planilha e tente novamente."); } importacao.Produtos = produtos; _importacaoRepository.Store(importacao); await _unityOfWork.SaveChangesIfDomainIsValid(); return(mensagemsErro); }