public void EditarRascunhoInventarioAmbiente(RascunhoInventarioAmbienteModelo rascunhoInventarioAmbienteModelo, DB_LaborSafetyEntities entities, DbContextTransaction transaction)
        {
            RASCUNHO_INVENTARIO_AMBIENTE rascunhoInventarioAmbienteExistente = entities.RASCUNHO_INVENTARIO_AMBIENTE.Where(invAtv => invAtv.CodRascunhoInventarioAmbiente == rascunhoInventarioAmbienteModelo.CodRascunhoInventarioAmbiente).FirstOrDefault();

            if (rascunhoInventarioAmbienteExistente == null)
            {
                throw new KeyNotFoundException();
            }

            else
            {
                try
                {
                    if (!rascunhoInventarioAmbienteModelo.novoInventario)
                    {
                        ExcluirRascunhoInventarioAmbiente(rascunhoInventarioAmbienteExistente.CodRascunhoInventarioAmbiente, entities);

                        Inserir(rascunhoInventarioAmbienteModelo, entities);

                        //transaction.Commit();
                    }

                    else
                    {
                        ExcluirRascunhoInventarioAmbiente(rascunhoInventarioAmbienteExistente.CodRascunhoInventarioAmbiente, entities);
                    }
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
        public RASCUNHO_INVENTARIO_AMBIENTE ListarRascunhoInventarioAmbientePorLI(long li)
        {
            using (var entities = new DB_LaborSafetyEntities())
            {
                RASCUNHO_INVENTARIO_AMBIENTE rascunhoInventarioAmbiente = entities.RASCUNHO_INVENTARIO_AMBIENTE
                                                                          .Include(x => x.RISCO_RASCUNHO_INVENTARIO_AMBIENTE)
                                                                          .Include(x => x.NR_RASCUNHO_INVENTARIO_AMBIENTE).FirstOrDefault();
                //.Where(x => x.CodLocalInstalacao == li.ToString()).FirstOrDefault();

                return(rascunhoInventarioAmbiente);
            }
        }
 public RASCUNHO_INVENTARIO_AMBIENTE ListarRascunhoInventarioAmbientePorId(long id)
 {
     using (var entities = new DB_LaborSafetyEntities())
     {
         RASCUNHO_INVENTARIO_AMBIENTE inventarioAmbiente = entities.RASCUNHO_INVENTARIO_AMBIENTE
                                                           .Include(x => x.NR_RASCUNHO_INVENTARIO_AMBIENTE)
                                                           .Include(x => x.RISCO_RASCUNHO_INVENTARIO_AMBIENTE)
                                                           .Include(x => x.RISCO_RASCUNHO_INVENTARIO_AMBIENTE.Select(risco => risco.RISCO).Select(tpr => tpr.TIPO_RISCO))
                                                           .Include(x => x.RISCO_RASCUNHO_INVENTARIO_AMBIENTE.Select(risco => risco.EPI_RISCO_RASCUNHO_INVENTARIO_AMBIENTE))
                                                           .Where(invAmb => invAmb.CodRascunhoInventarioAmbiente == id).FirstOrDefault();
         return(inventarioAmbiente);
     }
 }
        public RascunhoInventarioAmbienteModelo ListarRascunhoInventarioAmbientePorLI(long li)
        {
            RASCUNHO_INVENTARIO_AMBIENTE inv = this.rascunhoInventarioAmbientePersistencia.ListarRascunhoInventarioAmbientePorLI(li);

            if (inv == null)
            {
                throw new KeyNotFoundException("Rascunho de inventário de ambiente não encontrado.");
            }

            var locaisPorVirgula = inv.CodLocalInstalacao.Split(',');
            List <LOCAL_INSTALACAO> listaLocais = new List <LOCAL_INSTALACAO>();

            foreach (var item in locaisPorVirgula)
            {
                var local = localInstalacaoPersistencia.ListarLocalInstalacaoPorId(Convert.ToInt64(item));
                listaLocais.Add(local);
            }

            return(MapeamentoRascunhoInventarioAmbiente(inv, listaLocais));
        }
        // insert inventario ambiente
        public RASCUNHO_INVENTARIO_AMBIENTE Inserir(RascunhoInventarioAmbienteModelo rascunhoInventarioAmbienteModelo, DB_LaborSafetyEntities entities)
        {
            List <NrRascunhoInventarioAmbienteModelo>    nrs    = rascunhoInventarioAmbienteModelo.NR_RASCUNHO_INVENTARIO_AMBIENTE;
            List <RiscoRascunhoInventarioAmbienteModelo> riscos = rascunhoInventarioAmbienteModelo.RISCO_RASCUNHO_INVENTARIO_AMBIENTE;
            List <LocalInstalacaoModelo> locais = rascunhoInventarioAmbienteModelo.LOCAL_INSTALACAO_MODELO;

            entities.Configuration.AutoDetectChangesEnabled = false;

            try
            {
                var inventario = new RASCUNHO_INVENTARIO_AMBIENTE()
                {
                    Codigo             = $"R_INV_AMB - {rascunhoInventarioAmbienteModelo.CodRascunhoInventarioAmbiente} - {rascunhoInventarioAmbienteModelo.RiscoGeral}",
                    CodAmbiente        = rascunhoInventarioAmbienteModelo.CodAmbiente,
                    Descricao          = rascunhoInventarioAmbienteModelo.Descricao,
                    ObservacaoGeral    = rascunhoInventarioAmbienteModelo.ObservacaoGeral,
                    RiscoGeral         = rascunhoInventarioAmbienteModelo.RiscoGeral,
                    CodLocalInstalacao = rascunhoInventarioAmbienteModelo.CodLocalInstalacao
                };

                entities.RASCUNHO_INVENTARIO_AMBIENTE.Add(inventario);
                entities.SaveChanges();

                long idInv = inventario.CodRascunhoInventarioAmbiente;

                if (nrs != null)
                {
                    foreach (var nr in nrs)
                    {
                        entities.NR_RASCUNHO_INVENTARIO_AMBIENTE.Add(new NR_RASCUNHO_INVENTARIO_AMBIENTE()
                        {
                            CodRascunhoInventarioAmbiente = idInv,
                            CodNR = nr.CodNR
                        });
                    }

                    entities.SaveChanges();
                }

                if (riscos != null)
                {
                    foreach (var risco in riscos)
                    {
                        var novoRisco = new RISCO_RASCUNHO_INVENTARIO_AMBIENTE()
                        {
                            CodRascunhoInventarioAmbiente = idInv,
                            CodRisco                = risco.CodRiscoAmbiente,
                            CodSeveridade           = risco.CodSeveridade,
                            CodProbabilidade        = risco.CodProbabilidade,
                            FonteGeradora           = risco.FonteGeradora,
                            ProcedimentosAplicaveis = risco.ProcedimentosAplicaveis,
                            ContraMedidas           = risco.ContraMedidas
                        };
                        entities.RISCO_RASCUNHO_INVENTARIO_AMBIENTE.Add(novoRisco);
                        entities.SaveChanges();
                        if (risco.EPIRiscoRascunhoInventarioAmbiente.Count >= 0)
                        {
                            foreach (var epi in risco.EPIRiscoRascunhoInventarioAmbiente)
                            {
                                entities.EPI_RISCO_RASCUNHO_INVENTARIO_AMBIENTE.Add(new EPI_RISCO_RASCUNHO_INVENTARIO_AMBIENTE()
                                {
                                    CodRiscoRascunhoInventarioAmbiente = novoRisco.CodRiscoRascunhoInventarioAmbiente,
                                    CodEPI = epi.CodEPI
                                });
                            }
                        }
                    }

                    entities.ChangeTracker.DetectChanges();
                    entities.SaveChanges();

                    entities.Configuration.AutoDetectChangesEnabled = true;
                }
                return(inventario);
            }

            catch (Exception exception)
            {
                throw exception;
            }
        }
        public RascunhoInventarioAmbienteModelo MapeamentoRascunhoInventarioAmbiente(RASCUNHO_INVENTARIO_AMBIENTE inventario, List <LOCAL_INSTALACAO> locais)
        {
            RascunhoInventarioAmbienteModelo inventarioAmb = new RascunhoInventarioAmbienteModelo()
            {
                CodRascunhoInventarioAmbiente = inventario.CodRascunhoInventarioAmbiente,
                Codigo             = inventario.Codigo,
                CodAmbiente        = inventario.CodAmbiente,
                Descricao          = inventario.Descricao,
                ObservacaoGeral    = inventario.ObservacaoGeral,
                RiscoGeral         = inventario.RiscoGeral,
                CodLocalInstalacao = inventario.CodLocalInstalacao
            };

            inventarioAmb.NR_RASCUNHO_INVENTARIO_AMBIENTE    = new List <NrRascunhoInventarioAmbienteModelo>();
            inventarioAmb.RISCO_RASCUNHO_INVENTARIO_AMBIENTE = new List <RiscoRascunhoInventarioAmbienteModelo>();
            inventarioAmb.LOCAL_INSTALACAO_MODELO            = new List <LocalInstalacaoModelo>();

            Mapper.Map(inventario.NR_RASCUNHO_INVENTARIO_AMBIENTE, inventarioAmb.NR_RASCUNHO_INVENTARIO_AMBIENTE);
            Mapper.Map(inventario.RISCO_RASCUNHO_INVENTARIO_AMBIENTE, inventarioAmb.RISCO_RASCUNHO_INVENTARIO_AMBIENTE);

            List <RiscoRascunhoInventarioAmbienteModelo> listaRisco = new List <RiscoRascunhoInventarioAmbienteModelo>();

            foreach (var itemRisco in inventario.RISCO_RASCUNHO_INVENTARIO_AMBIENTE)
            {
                RiscoRascunhoInventarioAmbienteModelo risco = new RiscoRascunhoInventarioAmbienteModelo();
                risco.Ativo = true;
                risco.CodRascunhoInventarioAmbiente = itemRisco.CodRascunhoInventarioAmbiente;
                risco.CodProbabilidade = itemRisco.CodProbabilidade;
                risco.CodRiscoAmbiente = itemRisco.CodRisco;
                risco.CodRascunhoRiscoInventarioAmbiente = itemRisco.CodRiscoRascunhoInventarioAmbiente;
                risco.CodSeveridade           = itemRisco.CodSeveridade;
                risco.ContraMedidas           = itemRisco.ContraMedidas;
                risco.FonteGeradora           = itemRisco.FonteGeradora;
                risco.ProcedimentosAplicaveis = itemRisco.ProcedimentosAplicaveis;

                risco.EPIRiscoRascunhoInventarioAmbiente = new List <EPIRiscoRascunhoInventarioAmbienteModelo>();

                var listaEPI = itemRisco.EPI_RISCO_RASCUNHO_INVENTARIO_AMBIENTE
                               .Where(a => a.CodRiscoRascunhoInventarioAmbiente == itemRisco.CodRiscoRascunhoInventarioAmbiente).ToList();

                Mapper.Map(listaEPI, risco.EPIRiscoRascunhoInventarioAmbiente);

                listaRisco.Add(risco);
            }

            inventarioAmb.RISCO_RASCUNHO_INVENTARIO_AMBIENTE = listaRisco;

            if (locais != null)
            {
                foreach (var itemLi in locais)
                {
                    LocalInstalacaoModelo li = new LocalInstalacaoModelo();
                    li.CodLocalInstalacao    = itemLi.CodLocalInstalacao;
                    li.CodInventarioAmbiente = itemLi.CodInventarioAmbiente;
                    li.CodPeso           = itemLi.CodPeso;
                    li.CodPerfilCatalogo = itemLi.CodPerfilCatalogo;
                    li.N1        = itemLi.N1;
                    li.N2        = itemLi.N2;
                    li.N3        = itemLi.N3;
                    li.N4        = itemLi.N4;
                    li.N5        = itemLi.N5;
                    li.N6        = itemLi.N6;
                    li.Nome      = itemLi.Nome;
                    li.Descricao = itemLi.Descricao;

                    inventarioAmb.LOCAL_INSTALACAO_MODELO.Add(li);
                }
            }

            return(inventarioAmb);
        }
        public RetornoInsercao InserirRascunhoInventarioAmbiente(RascunhoInventarioAmbienteModelo rascunhoInventarioAmbienteModelo)
        {
            RetornoInsercao retornoInsercao = new RetornoInsercao();

            retornoInsercao.localModelo = new List <string>();

            validadorRascunhoInventarioAmbiente.ValidaInsercao(rascunhoInventarioAmbienteModelo);

            List <LocalInstalacaoModelo> locaisInstalacao = rascunhoInventarioAmbienteModelo.LOCAL_INSTALACAO_MODELO;

            using (var entities = new DB_APRPTEntities())
            {
                using (var transaction = entities.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        //Limpa os locais do inventário de modelo
                        rascunhoInventarioAmbienteModelo.LOCAL_INSTALACAO_MODELO = null;

                        List <LOCAL_INSTALACAO> locaisComInventarios = new List <LOCAL_INSTALACAO>();

                        //List<LOCAL_INSTALACAO> locais = localInstalacaoPersistencia.ListarTodosLIs(entities);

                        List <string> locaisAInserir = new List <string>();
                        for (int i = 0; i < locaisInstalacao.Count; i++)
                        {
                            var codLocal = locaisInstalacao[i].CodLocalInstalacao;

                            var localEnviado = localInstalacaoPersistencia.ListarLocalInstalacaoPorId(codLocal, entities);

                            //Filtra somente os locais do pai
                            List <LOCAL_INSTALACAO> locaisEFilhos = this.BuscaLocaisEFilhos(entities, localEnviado);

                            //List<LOCAL_INSTALACAO> locaisFilhos =
                            //    rascunhoInventarioAmbientePersistencia.BuscaFilhosPorNivelExcetoInventario(codLocal, entities);

                            foreach (var local in locaisEFilhos)
                            {
                                locaisAInserir.Add(local.CodLocalInstalacao.ToString());
                            }
                        }

                        var locaisAInserirDistinct = locaisAInserir.Distinct();

                        rascunhoInventarioAmbienteModelo.CodLocalInstalacao = string.Join(",", locaisAInserirDistinct);

                        RASCUNHO_INVENTARIO_AMBIENTE inventario = rascunhoInventarioAmbientePersistencia.Inserir(rascunhoInventarioAmbienteModelo, entities);

                        entities.SaveChanges();
                        transaction.Commit();

                        retornoInsercao.status = true;
                        return(retornoInsercao);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                }
            }
        }
        public RascunhoInventarioAmbienteModelo ListarRascunhoInventarioAmbientePorId(long id)
        {
            RASCUNHO_INVENTARIO_AMBIENTE inv = this.rascunhoInventarioAmbientePersistencia.ListarRascunhoInventarioAmbientePorId(id);

            if (inv == null)
            {
                throw new KeyNotFoundException("Rascunho de inventário de ambiente não encontrado.");
            }

            var locaisPorVirgula = inv.CodLocalInstalacao.Split(',');
            List <LOCAL_INSTALACAO> listaLocais = new List <LOCAL_INSTALACAO>();

            if (!string.IsNullOrEmpty(inv.CodLocalInstalacao))
            {
                foreach (var item in locaisPorVirgula)
                {
                    var local = localInstalacaoPersistencia.ListarLocalInstalacaoPorId(Convert.ToInt64(item));
                    listaLocais.Add(local);
                }
            }

            if (listaLocais.Count > 0)
            {
                foreach (var itemLi in listaLocais)
                {
                    string n2 = "", n3 = "", n4 = "", n5 = "", n6 = "";

                    if (!string.IsNullOrEmpty(itemLi.N2))
                    {
                        n2 = itemLi.N2;
                    }

                    if (!string.IsNullOrEmpty(itemLi.N3))
                    {
                        n3 = itemLi.N3;
                    }

                    if (!string.IsNullOrEmpty(itemLi.N4))
                    {
                        n4 = itemLi.N4;
                    }

                    if (!string.IsNullOrEmpty(itemLi.N5))
                    {
                        n5 = itemLi.N5;
                    }

                    if (!string.IsNullOrEmpty(itemLi.N6))
                    {
                        n6 = itemLi.N6;
                    }

                    if (n2.Contains("000_BASE") || n3.Contains("000_BASE") || n4.Contains("000_BASE") || n5.Contains("000_BASE") || n6.Contains("000_BASE"))
                    {
                        var nomeSeparado = itemLi.Nome.Split(' ');
                        var nomeCompleto = itemLi.Nome.Replace(nomeSeparado[0], nomeSeparado[0] + "-000_BASE");
                        itemLi.Nome = nomeCompleto;
                    }
                }
            }

            return(MapeamentoRascunhoInventarioAmbiente(inv, listaLocais));
        }