示例#1
0
        public Retorno Cadastrar(FeicaoObjeto feicao)
        {
            LayerFeicao         layerFeicao;
            LayerFeicaoBusiness layerFeicaoBus = new LayerFeicaoBusiness();
            int id = 0;

            try
            {
                Hashtable filtros = new Hashtable();
                filtros.Add("id", feicao.IdLayerFeicao);
                layerFeicao = layerFeicaoBus.Buscar(filtros);
                if (feicao == null)
                {
                    return(new Retorno(false, "Layer Feição inválida", id, feicao.IdLayerFeicao));
                }

                FeicaoGeometria geoFeicao = null;
                string          mensagem;

                mensagem  = string.Empty;
                geoFeicao = InstanciarObjeto(layerFeicao.TipoGeometria, feicao.Vertices, feicao.Atributos, feicao.Aneis);
                id        = da.GerarId(layerFeicao.Sequencia);

                AtributoFeicao atributo = geoFeicao.Atributos.Find(delegate(AtributoFeicao a) { return(a.Nome.ToUpper() == layerFeicao.ColunaPK.ToUpper()); });
                if (atributo != null)
                {
                    atributo.Tipo  = AtributoFeicao.TipoAtributo.Manual;
                    atributo.Valor = id;
                }
                else
                {
                    atributo = new AtributoFeicao(AtributoFeicao.TipoAtributo.Manual, layerFeicao.ColunaPK.ToUpper(), id);
                    geoFeicao.Atributos.Add(atributo);
                }

                if (!da.Cadastrar(geoFeicao, geoFeicao.TabelaRascunho, layerFeicao.Id))
                {
                    return(new Retorno(false, "Erro ao cadastrar geometria", id, feicao.IdLayerFeicao));
                }
                if (!da.ValidarGeometria(id, geoFeicao.TabelaRascunho, layerFeicao.ColunaPK, layerFeicao.Id, feicao.IdProjeto, out mensagem))
                {
                    da.Excluir(geoFeicao.ObjectId, geoFeicao.TabelaRascunho, layerFeicao.ColunaPK);
                    return(new Retorno(false, mensagem, id, feicao.IdLayerFeicao));
                }

                da.Transferir(layerFeicao.Schema, layerFeicao.Tabela, geoFeicao.TabelaRascunho, id);

                da.AtualizarAtributos(geoFeicao.Atributos, layerFeicao.Schema, layerFeicao.Tabela, id, layerFeicao.ColunaPK);

                LayerFeicaoBusiness.LimparCacheLayers(feicao.IdProjeto);
            }
            catch (Exception exc)
            {
                LogDa.Gerar(new { Exc = exc, Feicao = feicao });
                return(new Retorno(false, exc.Message));
            }
            return(new Retorno(true, "Cadastrado com sucesso!", id, feicao.IdLayerFeicao));
        }
示例#2
0
        public Retorno AtualizarGeometria(FeicaoObjeto feicao)
        {
            LayerFeicao         layerFeicao;
            LayerFeicaoBusiness layerFeicaoBus = new LayerFeicaoBusiness();

            try
            {
                Hashtable filtros = new Hashtable();
                filtros.Add("id", feicao.IdLayerFeicao);
                layerFeicao = layerFeicaoBus.Buscar(filtros);
                if (layerFeicao == null)
                {
                    throw new Exception("Layer Feição inválida");
                }

                FeicaoGeometria geoFeicao;

                string mensagem = string.Empty;

                geoFeicao = InstanciarObjeto(layerFeicao.TipoGeometria, feicao.Vertices, feicao.Atributos, feicao.Aneis);

                AtributoFeicao atributo = geoFeicao.Atributos.Find(delegate(AtributoFeicao a) { return(a.Nome.ToUpper() == layerFeicao.ColunaPK.ToUpper()); });
                if (atributo == null)
                {
                    return(new Retorno(true, "Para atualizar uma geometria é obrigatório enviar o campo ID como atributo", feicao.ObjectId, feicao.IdLayerFeicao));
                }

                if (!da.AtualizarRascunho(geoFeicao, feicao.ObjectId, geoFeicao.TabelaRascunho, layerFeicao.ColunaPK, layerFeicao.Id))
                {
                    return(new Retorno(false, "Erro ao atualizar geometria", feicao.ObjectId, feicao.IdLayerFeicao));
                }

                if (!da.ValidarGeometria(feicao.ObjectId, geoFeicao.TabelaRascunho, layerFeicao.ColunaPK, layerFeicao.Id, feicao.IdProjeto, out mensagem))
                {
                    return(new Retorno(false, mensagem, feicao.ObjectId, feicao.IdLayerFeicao));
                }

                da.TransferirAtualizarGeometria(layerFeicao.Tabela, geoFeicao.TabelaRascunho, feicao.ObjectId);

                LayerFeicaoBusiness.LimparCacheLayers(feicao.IdProjeto);
            }
            catch (Exception exc)
            {
                LogDa.Gerar(new { Exc = exc, feicao = feicao });
                return(new Retorno(false, exc.Message, feicao.ObjectId, feicao.IdLayerFeicao));
            }

            return(new Retorno(true, "OBJECTID", feicao.ObjectId, feicao.IdLayerFeicao));
        }