private ImportacaoAmbiente ImportacaoExcelCamposDinamicos(IXLTable tabela, ImportacaoAmbienteInput inputs) { try { var importacaoDinamica = new ImportacaoAmbiente(); idImportacao = importacaoDinamica.IdImportacao; var linhasAgrupadasDinamicamente = tabela.DataRange.Rows().GroupBy(q => new DynamicDataRowGroup(q, inputs.Agrupadores)).ToList(); linhasAgrupadasDinamicamente.ForEach(group => { string campoControle = group.ToList()?.First()?.Field(0)?.GetString(); if (!string.IsNullOrEmpty(campoControle)) { group.ToList().ForEach(linha => { var agr = importacaoDinamica.Filhos; Guid?idPaiAux = null; inputs.Agrupadores.ToList().ForEach(colunaAgrupadora => { var descricaoAmbiente = linha.Field(colunaAgrupadora).GetString(); var descricaoTipoAmbiente = linha.Field(inputs.CampoTipoAmbiente).GetString(); var result = CriarArvore(agr, descricaoAmbiente, idPaiAux, descricaoTipoAmbiente); agr = result.Item2; idPaiAux = result.Item1; }); var ambiente = new Ambiente(linha.Field(inputs.CampoAmbiente).GetString(), idPaiAux); ambiente.TipoAmbiente = _tpAmbienteServ.BuscarOuCriar(linha.Field(inputs.CampoTipoAmbiente).GetString()); ambiente.IdTipoAmbiente = ambiente.TipoAmbiente.Id; ambiente.IdImportacao = idImportacao; agr.Add(ambiente); _ambienteServ.CriarAmbiente(ambiente); }); } }); return(importacaoDinamica); } catch (Exception) { throw; } }
public ActionResult CriarImportacao([FromBody] ImportacaoAmbienteInput inputs) { try { var wsIndex = inputs.WorksheetIndex < 1 ? 1 : inputs.WorksheetIndex; Stream arq = new MemoryStream(inputs.Arquivo); var wb = new XLWorkbook(arq); var ws = wb.Worksheet(wsIndex); var firstCell = ws.FirstCellUsed().Address; var LastCell = ws.LastCellUsed().Address; var tabela = ws.Range(firstCell, LastCell).AsTable("import"); var importacaoDinamica = ImportacaoExcelCamposDinamicos(tabela, inputs); _serv.CriarImportacaoAmbiente(importacaoDinamica); return(Ok(importacaoDinamica)); } catch (Exception ex) { return(BadRequest($"Ocorreu um erro ao criar um novo ImportacaoAmbiente: {ex.Message}")); } }