示例#1
0
        public bool CopiarDadosInstitucional(int empreendimentoID, int empreendimentoInternoID, BancoDeDados banco)
        {
            if (banco == null)
            {
                return(false);
            }

            if (_validar == null)
            {
                _validar = new UnidadeProducaoValidar();
            }

            #region Configurar Caracterização

            UnidadeProducaoInternoBus unidadeConsolidacaoInternoBus = new UnidadeProducaoInternoBus();
            UnidadeProducao           caracterizacao = unidadeConsolidacaoInternoBus.ObterPorEmpreendimento(empreendimentoInternoID);

            caracterizacao.Empreendimento.Id = empreendimentoID;
            caracterizacao.InternoID         = caracterizacao.Id;
            caracterizacao.InternoTID        = caracterizacao.Tid;
            caracterizacao.UnidadesProducao.SelectMany(u => u.Produtores).ToList().ForEach(p => { p.IdRelacionamento = 0; });
            caracterizacao.UnidadesProducao.SelectMany(u => u.ResponsaveisTecnicos).ToList().ForEach(r => { r.IdRelacionamento = 0; });

            //Remove UPs nao relacionadas.
            CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
            CredenciadoPessoa credenciado       = caracterizacaoBus.ObterCredenciado(User.FuncionarioId, true);

            //REMOVIDO FILTRO QUE IMPORTAVA APENAS UP's VINCULADAS AO RESPONSAVEL TECNICO
            //caracterizacao.UnidadesProducao.RemoveAll(x => !x.ResponsaveisTecnicos.Any(y => y.CpfCnpj == credenciado.Pessoa.CPFCNPJ));

            #endregion

            if (_validar.CopiarDadosInstitucional(caracterizacao))
            {
                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, UsuarioCredenciado))
                {
                    bancoDeDados.IniciarTransacao();

                    //Setar ID do credenciado
                    caracterizacao.Id = ObterPorEmpreendimento(empreendimentoID, simplificado: true, banco: bancoDeDados).Id;

                    _da.CopiarDadosInstitucional(caracterizacao, bancoDeDados);

                    bancoDeDados.Commit();
                }
            }

            return(Validacao.EhValido);
        }
示例#2
0
        public bool Salvar(UnidadeProducao caracterizacao, int projetoDigitalId)
        {
            try
            {
                CaracterizacaoBus            caracterizacaoBus = new CaracterizacaoBus();
                EmpreendimentoCaracterizacao empreendimento    = caracterizacaoBus.ObterEmpreendimentoSimplificado(caracterizacao.Empreendimento.Id);

                UnidadeProducaoInternoBus unidadeConsolidacaoInternoBus = new UnidadeProducaoInternoBus();
                UnidadeProducao           caracterizacaoInterno         = unidadeConsolidacaoInternoBus.ObterPorEmpreendimento(empreendimento.InternoID, true);

                caracterizacao.InternoID  = caracterizacaoInterno.Id;
                caracterizacao.InternoTID = caracterizacaoInterno.Tid;

                if (!_validar.Salvar(caracterizacao, projetoDigitalId))
                {
                    return(Validacao.EhValido);
                }

                #region Configurar Salvar

                UnidadeProducao caracterizacaoBanco = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id);

                if (caracterizacaoInterno.Id > 0)
                {
                    caracterizacao.PossuiCodigoPropriedade = caracterizacaoInterno.PossuiCodigoPropriedade;
                    caracterizacao.CodigoPropriedade       = caracterizacaoInterno.CodigoPropriedade;
                }
                else
                {
                    if (!caracterizacao.PossuiCodigoPropriedade)
                    {
                        if (caracterizacao.Id < 1)
                        {
                            caracterizacao.CodigoPropriedade = _da.ObterSequenciaCodigoPropriedade();
                        }
                        else
                        {
                            caracterizacao.CodigoPropriedade = caracterizacaoBanco.CodigoPropriedade;
                        }
                    }
                }

                RequestJson requestJson             = new RequestJson();
                ResponseJsonData <dynamic> resposta = new ResponseJsonData <dynamic>();

                int ultimoCodigoUP = _da.ObterUltimoCodigoUP(caracterizacao.Empreendimento.Id);
                foreach (long item in caracterizacao.UnidadesProducao.Where(x => x.PossuiCodigoUP).Select(x => x.CodigoUP))
                {
                    int aux = Convert.ToInt32(item.ToString().Substring(14));
                    if (aux > ultimoCodigoUP)
                    {
                        ultimoCodigoUP = aux;
                    }
                }

                foreach (UnidadeProducaoItem item in caracterizacao.UnidadesProducao)
                {
                    int codigoIbge = 0;
                    resposta = requestJson.Executar <dynamic>(_configCoordenada.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + item.Coordenada.EastingUtm + "&northing=" + item.Coordenada.NorthingUtm);

                    if (resposta.Erros != null && resposta.Erros.Count > 0)
                    {
                        Validacao.Erros.AddRange(resposta.Erros);
                        return(Validacao.EhValido);
                    }

                    var objJson = resposta.Data;
                    if (objJson["EstaNoEstado"] && (objJson["Municipio"] == null || Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0) == 0))
                    {
                        Validacao.Add(Mensagem.Mapas.MunicipioSemRetorno);
                    }

                    if (!Validacao.EhValido)
                    {
                        return(Validacao.EhValido);
                    }

                    if (objJson["Municipio"] != null)
                    {
                        codigoIbge = Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0);
                    }

                    ListaValoresDa listaValoresDa = new ListaValoresDa();
                    item.Municipio = listaValoresDa.ObterMunicipio(codigoIbge);

                    if (!item.PossuiCodigoUP)
                    {
                        item.AnoAbertura = DateTime.Today.Year.ToString().Substring(2);

                        if (item.Id < 1)
                        {
                            ultimoCodigoUP++;

                            item.CodigoUP = Convert.ToInt64(
                                item.Municipio.Ibge.ToString() +
                                caracterizacao.CodigoPropriedade.ToString("D4") +
                                item.AnoAbertura +
                                ultimoCodigoUP.ToString("D2"));
                        }
                        else
                        {
                            item.CodigoUP = caracterizacaoBanco.UnidadesProducao.Single(x => x.Id == item.Id).CodigoUP;
                        }
                    }
                    else
                    {
                        item.AnoAbertura = item.CodigoUP.ToString().Substring(11, 2);
                    }

                    foreach (var aux in item.ResponsaveisTecnicos)
                    {
                        aux.CFONumero = aux.CFONumero.Split('-').GetValue(0).ToString();
                    }
                }

                #endregion

                if (caracterizacao.UnidadesProducao.Any(x => caracterizacao.UnidadesProducao.Count(y => y.CodigoUP == x.CodigoUP) > 1))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.UnidadeProducaoItemIncorreto);
                    return(false);
                }

                foreach (var item in caracterizacao.UnidadesProducao)
                {
                    if (item.CodigoUP.ToString().Substring(7, 4) != caracterizacao.CodigoPropriedade.ToString("D4"))
                    {
                        Validacao.Add(Mensagem.UnidadeProducao.CodigoUPNaoContemCodPropriedade(item.CodigoUP));
                        return(false);
                    }
                }

                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                {
                    bancoDeDados.IniciarTransacao();

                    _da.Salvar(caracterizacao, bancoDeDados);

                    Validacao.Add(Mensagem.UnidadeProducao.SalvoSucesso);

                    bancoDeDados.Commit();
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(Validacao.EhValido);
        }