Created
January 26, 2021 12:14
-
-
Save gledsoncruz/8da05391a9de6e3424c985993cf9253e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def update | |
if logradouro_params[:options_update] == 1.to_s #alterar somente trecho no loteamento | |
wkt_intersection = @logradouro.intersection(logradouro_params[:loteamento_wkt]) | |
wkt_difference = @logradouro.difference(logradouro_params[:loteamento_wkt]) | |
@logradouro.the_geom = wkt_intersection | |
logr = Logradouro.new(tipo_pavimento: @logradouro.tipo_pavimento_was, classificacao_viaria: @logradouro.classificacao_viaria_was, nome: @logradouro.nome_was, decreto: @logradouro.decreto_was, tipo_logradouro_id: @logradouro.tipo_logradouro_id_was, the_geom: wkt_difference) | |
logr.save | |
logradouros_antigos = @logradouro.logradouro_antigos | |
logradouros_antigos.each do |la| | |
lograd_antigo = LogradouroAntigo.new(tipo_pavimento: la.tipo_pavimento, classificacao_viaria: la.classificacao_viaria, tipo_logradouro: la.tipo_logradouro, nome: la.nome, decreto: la.decreto, logradouro_id: logr.id) | |
lograd_antigo.save | |
end | |
elsif logradouro_params[:options_update] == 2.to_s | |
wkt_intersection = @logradouro.intersection(logradouro_params[:bairro_wkt]) | |
wkt_difference = @logradouro.difference(logradouro_params[:bairro_wkt]) | |
@logradouro.the_geom = wkt_intersection | |
logr = Logradouro.new(tipo_pavimento: @logradouro.tipo_pavimento_was, classificacao_viaria: @logradouro.classificacao_viaria_was, nome: @logradouro.nome_was, decreto: @logradouro.decreto_was, tipo_logradouro_id: @logradouro.tipo_logradouro_id_was, the_geom: wkt_difference) | |
logr.save | |
logradouros_antigos = @logradouro.logradouro_antigos | |
logradouros_antigos.each do |la| | |
lograd_antigo = LogradouroAntigo.new(tipo_pavimento: la.tipo_pavimento, classificacao_viaria: la.classificacao_viaria, tipo_logradouro: la.tipo_logradouro, nome: la.nome, decreto: la.decreto, logradouro_id: logr.id) | |
lograd_antigo.save | |
end | |
end | |
respond_to do |format| | |
if @logradouro.update(logradouro_params) | |
format.html { redirect_to @logradouro, notice: 'Logradouro alterado com sucesso.' } | |
format.json { render :show, status: :ok, location: @logradouro } | |
else | |
format.html { render :edit } | |
format.json { render json: @logradouro.errors, status: :unprocessable_entity } | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nesse código eu precisava alterar um logradouro, mas precisava também guardar o histórico em uma outra tabela.
O desafio maior é que a tabela era espacial, então alem de alterar o nome do logradouro e seus dados "tabulares", eu precisava alterar o traçado, pois muitas vezes você tinha um logradouro que passava por diversos bairros ou diversos loteamentos, e as vezes o nome do logradouro era alterado somente em algum trecho dentro de um loteamento ou bairro. Toda a inteligência de alterar o traçado tinha que ficar escondida pro usuário, o usuário iria apenas se preocupar em apontar se o logradouro seria alterado em todo o traçado, somente dentro de um bairro ou somente dentro de um loteamento, e o programa fazia toda a rotina por trás.
Essas alterações eram vistas pela equipe de geoprocessamento quando abriam a tabela espacial em um programa GIS.