public ResultadoExportacao GerarArquivoAmbiente(DadosExportacaoAmbienteModelo dados) { ResultadoExportacao resultadoExportacao = new ResultadoExportacao(); try { string caminhoModelo = ArquivoDiretorioUtils.ObterDiretorioModelo(); var caminhoGeracao = ArquivoDiretorioUtils.ObterDiretorioExportacaoAmbiente(); caminhoGeracao = ArquivoDiretorioUtils.ConstruirObterDiretorioData(caminhoGeracao); var dataHora = DateTime.Now.ToString("dd_MM_yyy_HH_mm_ss"); string caminhoCompletoExportacaoModelo = $"{caminhoModelo}LayoutExportacaoAmbiente.xlsx"; string caminhoCompletoExportacaoFinal = $"{caminhoGeracao}/ExportacaoAmbiente_{dataHora}.xlsx"; ArquivoDiretorioUtils.CopiarArquivo(caminhoCompletoExportacaoModelo, caminhoCompletoExportacaoFinal); using (var workbook = new XLWorkbook(caminhoCompletoExportacaoFinal)) { ExportarDadosAmbiente(workbook, dados); workbook.Save(); workbook.Dispose(); } string _b64 = Convert.ToBase64String(File.ReadAllBytes(caminhoCompletoExportacaoFinal)); resultadoExportacao.planilha = _b64; return(resultadoExportacao); } catch (Exception) { throw; } }
public IHttpActionResult ExportarDadosAmbiente([FromBody] DadosExportacaoAmbienteModelo dadosExportacaoModelo) { ResultadoExportacao result; try { if (dadosExportacaoModelo == null) { throw new Exception("Os dados da exportação não foram informados!"); } result = this.exportacaoDadosNegocio.GerarArquivoAmbiente(dadosExportacaoModelo); } catch (Exception exception) { throw new Exception(GeradorResponse.GenerateErrorResponseString((int)HttpStatusCode.BadRequest, $"", exception), exception); } return(Ok(GeradorResponse.GenerateSuccessResponse((int)HttpStatusCode.OK, "", result))); }
public void ExportarDadosAmbiente(XLWorkbook wb, DadosExportacaoAmbienteModelo dados) { var folhaAtual = wb.Worksheets.Worksheet("InventarioAmbiente"); int linha = 5; if (!folhaAtual.Cell("B1").Value.ToString().Contains("Ambiente")) { throw new Exception("É necessário realizar a exportação de um inventário de ambiente com o nome da pllanilha escrita da seguinte forma: 'InventarioAmbiente'"); } var resultadoInventario = inventariosAmbientePersistencia.ListarInventarioAmbienteExportacao(dados); int linhaAPreencher = 5; string locais = ""; if (resultadoInventario != null && resultadoInventario.Count > 0) { foreach (var item in resultadoInventario) { string nomeNR = ""; var sistemaOperacional = sistemaOperacionalPersistencia.ListarSistemaOperacionalPorId(item.CodAmbiente); folhaAtual.Cell($"B{linha}").Value = item.Codigo; folhaAtual.Cell($"C{linha}").Value = sistemaOperacional.Nome; folhaAtual.Cell($"D{linha}").Value = item.Descricao; folhaAtual.Cell($"E{linha}").Value = item.ObservacaoGeral; folhaAtual.Cell($"F{linha}").Value = item.RiscoGeral; var itemLocal = localInstalacaoPersistencia.ListarLocaisInstalacaoPorCodInventarioAmbiente(item.CodInventarioAmbiente); if (itemLocal.Count <= 0) { throw new Exception($"O inventário de ambiente de código {item.Codigo} não possui local de instalação."); } // PREENCHIMENTO LOCAL INSTALAÇÃO foreach (var itemLocalAmbiente in itemLocal) { locais += $"{itemLocalAmbiente.Nome};"; } var tamanhoLocal = locais.Length; var nomeLocaisCorrigido = locais.Substring(0, tamanhoLocal - 1); PreencherLocalInstalacao(folhaAtual, nomeLocaisCorrigido, linhaAPreencher); locais = ""; // PREENCHIMENTO RISCOS if (item.RISCO_INVENTARIO_AMBIENTE.Count <= 0) { throw new Exception($"O inventário de ambiente de código {item.Codigo} não possui riscos associados."); } IXLCell celulaAtual = folhaAtual.Cell($"I{linhaAPreencher}"); foreach (var itemRisco in item.RISCO_INVENTARIO_AMBIENTE) { celulaAtual = PreencherRiscosAmbiente(folhaAtual, itemRisco, celulaAtual); } // PREENCHIMENTO NR foreach (var itemNR in item.NR_INVENTARIO_AMBIENTE) { if (itemNR.CodNR != (long)Constantes.NR.NR0) { var nr = nrPersistencia.ListarNrPorId(itemNR.CodNR); nomeNR += $"{nr.Codigo};"; } } if (!string.IsNullOrEmpty(nomeNR)) { var tamanhoNR = nomeNR.Length; var nomeNRCorrigido = nomeNR.Substring(0, tamanhoNR - 1); PreencherNR(folhaAtual, nomeNRCorrigido, linhaAPreencher); } linhaAPreencher++; linha++; } folhaAtual.Style.Font.FontName = "Arial"; folhaAtual.Style.Font.FontSize = 8; folhaAtual.Style.Font.FontColor = XLColor.Black; } else { throw new Exception("Não há inventário(s) com os filtros informados!"); } }
public List <INVENTARIO_AMBIENTE> ListarInventarioAmbienteExportacao(DadosExportacaoAmbienteModelo dados) { using (var entities = new DB_LaborSafetyEntities()) { List <INVENTARIO_AMBIENTE> resultadoSistemaOperacional = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoNR = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoRisco = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoProbabilidade = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoSeveridade = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoEPI = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoLocalInstalacao = new List <INVENTARIO_AMBIENTE>(); List <INVENTARIO_AMBIENTE> resultadoFinal = new List <INVENTARIO_AMBIENTE>(); int cont = 0; var resultado = entities.INVENTARIO_AMBIENTE .Include(x => x.NR_INVENTARIO_AMBIENTE.Select(nr => nr.NR)) .Include(x => x.RISCO_INVENTARIO_AMBIENTE.Select(sev => sev.SEVERIDADE)) .Include(x => x.RISCO_INVENTARIO_AMBIENTE.Select(prob => prob.PROBABILIDADE)) .Include(x => x.RISCO_INVENTARIO_AMBIENTE.Select(risco => risco.RISCO)) .Include(x => x.RISCO_INVENTARIO_AMBIENTE.Select(risco => risco.RISCO).Select(tpr => tpr.TIPO_RISCO)) .Include(x => x.RISCO_INVENTARIO_AMBIENTE.Select(risco => risco.EPI_RISCO_INVENTARIO_AMBIENTE)) .Include(x => x.AMBIENTE) .Where(b => b.LOCAL_INSTALACAO.All(y => y.CodLocalInstalacao != (int)Constantes.LocalInstalacao.SEM_ASSOCIACAO) && b.CodInventarioAmbiente != (long)Constantes.InventarioAmbiente.SEM_INVENTARIO && b.Ativo).ToList(); if (dados.AMBIENTE.Count > 0 && dados.AMBIENTE != null) { resultadoSistemaOperacional = resultado.Where(b => dados.AMBIENTE.Contains(b.CodAmbiente)).ToList(); cont++; } if (dados.NR.Count > 0 && dados.NR != null) { resultadoNR = resultado.Where(teste => teste.NR_INVENTARIO_AMBIENTE.Any(a => dados.NR.Contains(a.CodNR))).ToList(); cont++; } if (dados.RISCO.Count > 0 && dados.RISCO != null) { resultadoRisco = resultado.Where(teste => teste.RISCO_INVENTARIO_AMBIENTE.Any(a => dados.RISCO.Contains(a.CodRiscoAmbiente))).ToList(); cont++; } if (dados.PROBABILIDADE.Count > 0 && dados.PROBABILIDADE != null) { resultadoProbabilidade = resultado.Where(teste => teste.RISCO_INVENTARIO_AMBIENTE.Any(a => dados.PROBABILIDADE.Contains(a.CodProbabilidade))).ToList(); cont++; } if (dados.SEVERIDADE.Count > 0 && dados.SEVERIDADE != null) { resultadoSeveridade = resultado.Where(teste => teste.RISCO_INVENTARIO_AMBIENTE.Any(a => dados.SEVERIDADE.Contains(a.CodSeveridade))).ToList(); cont++; } if (dados.EPI.Count > 0 && dados.EPI != null) { resultadoEPI = resultado.Where(teste => teste.RISCO_INVENTARIO_AMBIENTE.All(i => i.EPI_RISCO_INVENTARIO_AMBIENTE.Any(a => dados.EPI.Contains(a.CodEPI)))).ToList(); cont++; } if (dados.LOCAL_INSTALACAO.Count > 0 && dados.LOCAL_INSTALACAO != null) { List <long> listaLocais = new List <long>(); foreach (var item in dados.LOCAL_INSTALACAO) { var localInstalacao = entities.LOCAL_INSTALACAO.Where(nomeLocal => nomeLocal.CodLocalInstalacao == item).FirstOrDefault(); var codigoLocal = localInstalacao.CodLocalInstalacao; listaLocais.Add(codigoLocal); } resultadoLocalInstalacao = resultado.Where(b => b.LOCAL_INSTALACAO.Any(a => listaLocais.Contains(a.CodLocalInstalacao))).ToList(); cont++; } foreach (var itemSO in resultadoSistemaOperacional) { resultadoFinal.Add(itemSO); } foreach (var itemNR in resultadoNR) { resultadoFinal.Add(itemNR); } foreach (var itemRisco in resultadoRisco) { resultadoFinal.Add(itemRisco); } foreach (var itemProbabilidade in resultadoProbabilidade) { resultadoFinal.Add(itemProbabilidade); } foreach (var itemSeveridade in resultadoSeveridade) { resultadoFinal.Add(itemSeveridade); } foreach (var itemEPI in resultadoEPI) { resultadoFinal.Add(itemEPI); } foreach (var itemLocalInstalacao in resultadoLocalInstalacao) { resultadoFinal.Add(itemLocalInstalacao); } if (resultado.Count > 0 && cont != 0) { resultadoFinal = resultadoFinal.Distinct().ToList(); } else if (resultado.Count > 0 && cont == 0) { resultadoFinal = resultado.Distinct().ToList(); } else { throw new Exception("Não foram encontrados inventários para exportação."); } return(resultadoFinal); } }