Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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}"));
            }
        }