private async void btnImportar_Click(object sender, EventArgs e) { var dto = new ImportacaoDeFatoresAssociadosDto { Edicao = txtAno.Text, CaminhoDaPlanilha = txtArquivo.Text, }; await _fatorAssociadoServices.ImportarAsync(dto); if (!dto.IsValid()) { MessageBox.Show(dto.Erros.FirstOrDefault(), "Erro na importação", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show("Importação realizada com sucesso.", "", MessageBoxButtons.OK, MessageBoxIcon.Information); }
public async Task ImportarAsync(ImportacaoDeFatoresAssociadosDto dto) { if (dto is null) { dto = new ImportacaoDeFatoresAssociadosDto(); dto.AddErro("O DTO é nulo."); return; } try { var dtFatoresAssociados = GetTabelaDeFatoresAssociadosAjustada(dto.CaminhoDaPlanilha); if (dtFatoresAssociados.Rows.Count <= 0) { dto.AddErro("Não existem regitros na planilha para exportação."); return; } var ciclosAnoEscolar = await _cicloAnoEscolarRepository.GetAsync(); var constructos = await _constructoRepository.GetAsync(dto.Edicao); var entities = dtFatoresAssociados .AsEnumerable() .Where(row => !string.IsNullOrWhiteSpace(row["AreaConhecimentoID"].ToString())) .Select(row => new FatorAssociado { AreaConhecimentoId = int.Parse(row["AreaConhecimentoID"].ToString()), ConstructoId = GetConstructoId(dto.Edicao, int.Parse(row["AnoEscolar"].ToString()), row["ID"].ToString(), ciclosAnoEscolar, constructos), Pontos = row["Pontos"].ToString() }) .ToList(); await _fatorAssociadoRepository.InsertAsync(entities); } catch (Exception ex) { dto.AddErro(ex.InnerException?.Message ?? ex.Message); } }