Class: CapIslet

Inherits:
Ekylibre::Record::Base show all
Defined in:
app/models/cap_islet.rb

Overview

Informations

License

Ekylibre - Simple agricultural ERP Copyright (C) 2008-2009 Brice Texier, Thibaud Merigon Copyright (C) 2010-2012 Brice Texier Copyright (C) 2012-2019 Brice Texier, David Joulin

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see www.gnu.org/licenses.

Table: cap_islets

cap_statement_id :integer          not null
created_at       :datetime         not null
creator_id       :integer
id               :integer          not null, primary key
islet_number     :string           not null
lock_version     :integer          default(0), not null
shape            :geometry({:srid=>4326, :type=>"multi_polygon"}) not null
town_number      :string
updated_at       :datetime         not null
updater_id       :integer

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Ekylibre::Record::Base

#already_updated?, #check_if_destroyable?, #check_if_updateable?, columns_definition, #customizable?, customizable?, #customized?, #destroyable?, #editable?, has_picture, #human_attribute_name, nomenclature_reflections, #old_record, #others, refers_to, #unsuppress, #updateable?

Methods included from Userstamp::Stampable

included

Methods included from Userstamp::Stamper

included

Class Method Details

.bounding_box(islets = []) ⇒ Object

TODO: Write this with a scope


60
61
62
63
64
65
66
67
68
69
# File 'app/models/cap_islet.rb', line 60

def self.bounding_box(islets = [])
  if islets.present?
    box = ActiveRecord::Base.connection.execute("SELECT ST_Extent(shape) FROM cap_islets WHERE id IN (#{islets.map(&:id).join(', ')})").to_a.first['st_extent']
  else
    box = ActiveRecord::Base.connection.execute('SELECT ST_Extent(shape) FROM cap_islets').to_a.first['st_extent']
  end

  points = ActiveRecord::Base.connection.execute("SELECT ST_XMin(CAST('#{box}' As box2d)), ST_YMin(CAST('#{box}' As box2d)), ST_XMax(CAST('#{box}' As box2d)), ST_YMax(CAST('#{box}' As box2d))")
  points.first.values
end

Instance Method Details

#city_nameObject


71
72
73
74
# File 'app/models/cap_islet.rb', line 71

def city_name
  name = RegisteredPostalZone.find_by(code: town_number)
  return name.city_name if name
end