Exemplo n.º 1
0
        public ActionResult ObterDadosLaudoVistoriaFlorestal(int id, int empreendimento)
        {
            var laudoBus          = new LaudoVistoriaFlorestalBus();
            var busExploracao     = new ExploracaoFlorestalBus();
            var exploracoesLst    = busExploracao.ObterPorEmpreendimentoList(empreendimento)?.Where(x => x.DataConclusao.IsEmpty);
            var caracterizacaoLst = exploracoesLst?.Select(x => new CaracterizacaoLst
            {
                Id                  = x.Id,
                Texto               = x.CodigoExploracaoTexto ?? "",
                ParecerFavoravel    = String.Join(", ", x.Exploracoes?.Where(w => w.ParecerFavoravel == true)?.Select(y => y.Identificacao)?.ToList()),
                ParecerDesfavoravel = String.Join(", ", x.Exploracoes?.Where(w => w.ParecerFavoravel == false)?.Select(y => y.Identificacao)?.ToList()),
                IsAtivo             = true
            });

            return(Json(new
            {
                @Destinatarios = _busTitulo.ObterDestinatarios(id),
                @ResponsaveisTecnico = _protocoloBus.ObterResponsaveisTecnicos(id),
                @Caracterizacoes = caracterizacaoLst
            }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
        public ActionResult LaudoVistoriaFlorestal(EspecificidadeVME especificidade)
        {
            LaudoVistoriaFlorestalBus  _busLaudo = new LaudoVistoriaFlorestalBus();
            List <Protocolos>          lstProcessosDocumentos = _busTitulo.ObterProcessosDocumentos(especificidade.ProtocoloId);
            List <AtividadeSolicitada> lstAtividades          = new List <AtividadeSolicitada>();

            List <PessoaLst>       destinatarios = new List <PessoaLst>();
            Titulo                 titulo        = new Titulo();
            TituloModelo           modelo        = _tituloModeloBus.Obter(especificidade.ModeloId ?? 0);
            LaudoVistoriaFlorestal laudo         = new LaudoVistoriaFlorestal();

            LaudoVistoriaFlorestalVM vm = null;
            string htmlEspecificidade   = string.Empty;

            if (especificidade.TituloId > 0)
            {
                titulo                = _busTitulo.ObterSimplificado(especificidade.TituloId);
                titulo.Anexos         = _busTitulo.ObterAnexos(especificidade.TituloId);
                titulo.Atividades     = _busTitulo.ObterAtividades(especificidade.TituloId);
                titulo.Condicionantes = _busTitulo.ObterCondicionantes(especificidade.TituloId);
                titulo.Exploracoes    = _busTitulo.ObterExploracoes(especificidade.TituloId);

                laudo = _busLaudo.Obter(especificidade.TituloId) as LaudoVistoriaFlorestal;

                if (laudo != null)
                {
                    especificidade.AtividadeProcDocReq = laudo.ProtocoloReq;
                    laudo.Anexos = titulo.Anexos;
                }
            }

            if (especificidade.ProtocoloId > 0)
            {
                if (_busEspecificidade.ExisteProcDocFilhoQueFoiDesassociado(especificidade.TituloId))
                {
                    lstAtividades     = new List <AtividadeSolicitada>();
                    titulo.Atividades = new List <Atividade>();
                }
                else
                {
                    lstAtividades = _busAtividade.ObterAtividadesLista(especificidade.AtividadeProcDocReq.ToProtocolo());
                }

                if (titulo.Situacao.Id == (int)eTituloSituacao.Cadastrado)
                {
                    destinatarios = _busTitulo.ObterDestinatarios(especificidade.ProtocoloId);
                }
                else
                {
                    destinatarios.Add(new PessoaLst()
                    {
                        Id = laudo.Destinatario, Texto = laudo.DestinatarioNomeRazao, IsAtivo = true
                    });
                }

                if (!especificidade.IsVisualizar)
                {
                    _busEspecificidade.PossuiAtividadeEmAndamento(especificidade.ProtocoloId);
                }
            }

            if (!Validacao.EhValido)
            {
                return(Json(new { Msg = Validacao.Erros, EhValido = Validacao.EhValido, @Html = string.Empty }, JsonRequestBehavior.AllowGet));
            }

            var busExploracao     = new ExploracaoFlorestalBus();
            var exploracoesLst    = busExploracao.ObterPorEmpreendimentoList(especificidade.EmpreendimentoId);
            var caracterizacaoLst = new List <CaracterizacaoLst>();

            if (exploracoesLst.Count() > 0)
            {
                caracterizacaoLst = exploracoesLst.Select(x => new CaracterizacaoLst
                {
                    Id                  = x.Id,
                    Texto               = x.CodigoExploracaoTexto ?? "",
                    ParecerFavoravel    = String.Join(", ", x.Exploracoes.Where(w => w.ParecerFavoravel == true).Select(y => y.Identificacao)?.ToList()),
                    ParecerDesfavoravel = String.Join(", ", x.Exploracoes.Where(w => w.ParecerFavoravel == false).Select(y => y.Identificacao)?.ToList()),
                    IsAtivo             = true
                })?.ToList();
            }

            vm = new LaudoVistoriaFlorestalVM(
                modelo.Codigo,
                laudo,
                lstProcessosDocumentos,
                lstAtividades,
                caracterizacaoLst,
                destinatarios,
                _protocoloBus.ObterResponsaveisTecnicosPorRequerimento(especificidade.AtividadeProcDocReq.RequerimentoId),
                _busLista.ObterEspecificidadeConclusoes,
                titulo.Condicionantes,
                especificidade.AtividadeProcDocReqKey,
                especificidade.IsVisualizar);

            if (especificidade.TituloId > 0)
            {
                vm.Atividades.Atividades = titulo.Atividades;
                vm.Exploracoes           = titulo.Exploracoes;

                var parecerFavoravel    = new ArrayList();
                var parecerDesfavoravel = new ArrayList();
                foreach (var exploracao in exploracoesLst)
                {
                    if (exploracao.Exploracoes.Where(x => x.ParecerFavoravel == true)?.ToList().Count > 0)
                    {
                        parecerFavoravel.Add(String.Concat(exploracao.CodigoExploracaoTexto, " (", String.Join(", ", exploracao.Exploracoes.Where(x => x.ParecerFavoravel == true).Select(x => x.Identificacao)?.ToList()), ")"));
                    }
                    if (exploracao.Exploracoes.Where(x => x.ParecerFavoravel == false)?.ToList().Count > 0)
                    {
                        parecerDesfavoravel.Add(String.Concat(exploracao.CodigoExploracaoTexto, " (", String.Join(", ", exploracao.Exploracoes.Where(x => x.ParecerFavoravel == false).Select(x => x.Identificacao)?.ToList()), ")"));
                    }
                }
                vm.ParecerFavoravelLabel    = parecerFavoravel.Count > 0 ? String.Join(", ", parecerFavoravel?.ToArray()) : "";
                vm.ParecerDesfavoravelLabel = parecerDesfavoravel.Count > 0 ? String.Join(", ", parecerDesfavoravel?.ToArray()) : "";
            }

            vm.IsCondicionantes = modelo.Regra(eRegra.Condicionantes) || (titulo.Condicionantes != null && titulo.Condicionantes.Count > 0);

            htmlEspecificidade = ViewModelHelper.RenderPartialViewToString(ControllerContext, "~/Areas/Especificidades/Views/Laudo/LaudoVistoriaFlorestal.ascx", vm);
            return(Json(new { Msg = Validacao.Erros, EhValido = Validacao.EhValido, @Html = htmlEspecificidade }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Index(int id)
        {
            EmpreendimentoCaracterizacao empreendimento = _bus.ObterEmpreendimentoSimplificado(id);

            if (empreendimento.Id == 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoNaoEncontrado);
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            CaracterizacaoVM vm = new CaracterizacaoVM(empreendimento);

            List <CaracterizacaoLst> caracterizacoes = _bus.CaracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
            List <ProjetoGeografico> projetos        = _bus.ObterProjetosEmpreendimento(id);

            if (!_bus.ValidarAcessarTela(caracterizacoes))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            List <Caracterizacao> cadastradas = _bus.ObterCaracterizacoesEmpreendimento(id) ?? new List <Caracterizacao>();

            vm.CaracterizacoesNaoCadastradas = caracterizacoes
                                               .Where(x => !cadastradas.Any(y => y.Id > 0 && (int)y.Tipo == x.Id))
                                               .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Id, Nome = z.Texto
            }).ToList();

            vm.CaracterizacoesCadastradas = caracterizacoes
                                            .Where(x => cadastradas.Any(y => y.Id > 0 && (int)y.Tipo == x.Id))
                                            .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Id, Nome = z.Texto
            }).ToList();

            List <DependenciaLst> dependencias = _bus.CaracterizacaoConfig.Obter <List <DependenciaLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);

            vm.CaracterizacoesNaoCadastradas.ForEach(x =>
            {
                x.PodeCadastrar         = User.IsInRole(String.Format("{0}Criar", x.Tipo.ToString()));
                x.ProjetoGeografico     = User.IsInRole("ProjetoGeograficoCriar");
                x.DscLicAtividade       = User.IsInRole("DescricaoLicenciamentoAtividadeCriar");
                x.ProjetoGeoObrigatorio = dependencias.Exists(y =>
                                                              y.DependenteTipo == (int)x.Tipo &&
                                                              y.DependenciaTipo == (int)x.Tipo &&
                                                              y.TipoId == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico);

                x.DscLicAtividadeObrigatorio = dependencias.Exists(y =>
                                                                   y.DependenteTipo == (int)x.Tipo &&
                                                                   y.DependenciaTipo == (int)x.Tipo &&
                                                                   y.TipoId == (int)eCaracterizacaoDependenciaTipo.DescricaoLicenciamentoAtividade);

                Caracterizacao cadastrada = cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao();
                x.ProjetoGeograficoId     = cadastrada.ProjetoRascunhoId;
                x.DscLicAtividadeId       = cadastrada.DscLicAtividadeId;

                if (x.ProjetoGeograficoId <= 0)
                {
                    x.ProjetoGeograficoId = cadastrada.ProjetoId;
                }

                x.UrlCriar = Url.Action("Criar", x.Tipo.ToString());
            });

            vm.CaracterizacoesCadastradas.ForEach(x =>
            {
                if (User.IsInRole("ProjetoGeograficoEditar") || User.IsInRole("ProjetoGeograficoVisualizar"))
                {
                    x.ProjetoGeografico = true;
                }

                x.ProjetoGeograficoVisualizar =
                    User.IsInRole(ePermissao.ProjetoGeograficoVisualizar.ToString()) &&
                    !User.IsInRole(ePermissao.ProjetoGeograficoCriar.ToString()) &&
                    !User.IsInRole(ePermissao.ProjetoGeograficoEditar.ToString());

                if (User.IsInRole("DescricaoLicenciamentoAtividadeEditar") || User.IsInRole("DescricaoLicenciamentoAtividadeVisualizar"))
                {
                    x.DscLicAtividade = true;
                }

                x.DscLicAtividadeVisualizar =
                    User.IsInRole(ePermissao.DescricaoLicenciamentoAtividadeVisualizar.ToString()) &&
                    !User.IsInRole(ePermissao.DescricaoLicenciamentoAtividadeCriar.ToString()) &&
                    !User.IsInRole(ePermissao.DescricaoLicenciamentoAtividadeEditar.ToString());

                if (x.Tipo == eCaracterizacao.ExploracaoFlorestal)
                {
                    var exploracoes             = _exploracaoFlorestalBus.ObterPorEmpreendimentoList(id, true);
                    var exploracoesEmAberto     = exploracoes?.Where(i => i.DataConclusao.IsValido == false);
                    var exploracoesPodemExcluir = exploracoesEmAberto?.Where(i => i.PossuiVinculoComTitulo == false);
                    if (exploracoesEmAberto?.Count() > 0)
                    {
                        x.PodeEditar = User.IsInRole(String.Format("{0}Editar", x.Tipo.ToString()));
                    }
                    if (exploracoesPodemExcluir?.Count() > 0)
                    {
                        x.PodeExcluir = User.IsInRole(String.Format("{0}Excluir", x.Tipo.ToString()));
                    }
                }
                else
                {
                    x.PodeEditar  = User.IsInRole(String.Format("{0}Editar", x.Tipo.ToString()));
                    x.PodeExcluir = User.IsInRole(String.Format("{0}Excluir", x.Tipo.ToString()));
                }
                x.PodeVisualizar = User.IsInRole(String.Format("{0}Visualizar", x.Tipo.ToString()));

                // #2377: Alteração para resolver o problema de "sequence contains more than one matching element"
                //Caracterizacao cadastrada = cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao();

                Caracterizacao cadastrada = cadastradas.FirstOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao();
                x.ProjetoGeograficoId     = cadastrada.ProjetoId;
                if (cadastrada.ProjetoId == 0 && cadastrada.Tipo == eCaracterizacao.ExploracaoFlorestal)
                {
                    x.ProjetoGeograficoId = cadastrada.ProjetoRascunhoId;
                }
                x.DscLicAtividadeId = cadastrada.DscLicAtividadeId;

                x.UrlEditar         = Url.Action("Editar", x.Tipo.ToString());
                x.UrlVisualizar     = Url.Action("Visualizar", x.Tipo.ToString());
                x.UrlExcluirConfirm = Url.Action("ExcluirConfirm", x.Tipo.ToString());
                x.UrlExcluir        = Url.Action("Excluir", x.Tipo.ToString());
            });

            #region CAR

            vm.CaracterizacoesCadastradas.Where(x => x.Tipo == eCaracterizacao.CadastroAmbientalRural).ToList().ForEach(x =>
            {
                x.ProjetoGeografico           = false;
                x.ProjetoGeograficoVisualizar = false;
                x.ProjetoGeograficoId         = 0;

                x.DscLicAtividade           = false;
                x.DscLicAtividadeVisualizar = false;
                x.DscLicAtividadeId         = 0;
            });

            #endregion

            return(View("Caracterizacao", vm));
        }