示例#1
0
        public IHttpActionResult Inserir([FromBody] InventarioAmbienteModelo inventarioAmbienteModelo)
        {
            try
            {
                RetornoInsercao resultado = new RetornoInsercao();
                resultado = this.inventariosAmbienteNegocio.InserirInventarioAmbiente(inventarioAmbienteModelo);

                if (resultado.status == true)
                {
                    return(Ok(GeradorResponse.GenerateSuccessResponse((int)HttpStatusCode.OK,
                                                                      $"Inserção do inventário de ambiente ocorrida com sucesso", resultado)));
                }
                else
                {
                    return(Ok(GeradorResponse.GenerateSuccessResponse((int)HttpStatusCode.BadRequest,
                                                                      $"Erro ao inserir inventário de ambiente", resultado)));
                }
            }
            catch (InvalidOperationException exception)
            {
                throw new Exception(GeradorResponse.GenerateErrorResponseString((int)HttpStatusCode.OK,
                                                                                "Inventário de Ambiente não encontrado.", exception), exception);
            }
            catch (Exception exception)
            {
                throw new Exception(GeradorResponse.GenerateErrorResponseString((int)HttpStatusCode.OK,
                                                                                "Erro ao inserir Inventário de Ambiente", exception), exception);
            }
        }
        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;
                    }
                }
            }
        }