Class: Block

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/block.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.compare_delivery_date(a, b) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/block.rb', line 34

def compare_delivery_date(a,b)
  begin
    date_a = a.delivery_date.to_date
  rescue
    date_a = Date.new
  end

  begin
    date_b = b.delivery_date.to_date
  rescue
    date_b = Date.new
  end

  date_a <=> date_b
end

.psql_date_regexObject



50
51
52
# File 'app/models/block.rb', line 50

def psql_date_regex
  '\'\d{1,2}\s+\w{3}\s+\d{2,4}\''
end

.sort_by_delivery_date(collection = self.all) ⇒ Object



30
31
32
# File 'app/models/block.rb', line 30

def sort_by_delivery_date(collection=self.all)
  collection.sort { |a,b| compare_delivery_date(a,b) }
end

.sql_by_addressObject



80
81
82
83
84
85
86
87
# File 'app/models/block.rb', line 80

def sql_by_address
  case ActiveRecord::Base.connection.instance_values["config"][:adapter].to_sym
  when :mysql2
    'concat(blocks.street, blocks.no)'
  when :postgresql
    '(blocks.street || blocks.no)'
  end
end

.sql_by_delivery_dateObject



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/models/block.rb', line 54

def sql_by_delivery_date
  case ActiveRecord::Base.connection.instance_values["config"][:adapter].to_sym
  when :mysql2
    # mysql does not support (col1, col2) asc|desc
    'str_to_date(blocks.delivery_date, \'%d %M %Y\'), str_to_date(blocks.lease_start, \'%d %M %Y\')'
  when :postgresql
    # trick to allow non-dates to be sorted ahead
    %Q{(
      to_date(substring(blocks.delivery_date || \'01 Jan 1900\' from #{psql_date_regex}), \'DD Mon YYYY\'),
      to_date(substring(blocks.lease_start from #{psql_date_regex}), \'DD Mon YYYY\')
    )}
  end
end

.sql_by_lease_startObject



68
69
70
71
72
73
74
75
76
77
78
# File 'app/models/block.rb', line 68

def sql_by_lease_start
  case ActiveRecord::Base.connection.instance_values["config"][:adapter].to_sym
  when :mysql2
    'str_to_date(blocks.lease_start, \'%d %M %Y\')'
  when :postgresql
    %Q{(
      to_date(substring(blocks.lease_start from #{psql_date_regex}), \'DD Mon YYYY\'),
      substring(blocks.lease_start from \'\\w+\')
    )}
  end
end

Instance Method Details

#addressObject



9
10
11
# File 'app/models/block.rb', line 9

def address
  "#{no} #{street}"
end

#long_addressObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/models/block.rb', line 13

def long_address
  address
    .gsub('Rd','Road')
    .gsub('Nth','North')
    .gsub('Ave','Avenue')
    .gsub('St','Street')
    .gsub('Ctrl','Central')
    .gsub('Jln','Jalan')
    .gsub('Lor ','Lorong ')
    .gsub('Upp ','Upper ')
    .gsub('Hts','Heights')
    .gsub('Gdn','Garden')
    .gsub('Bt','Bukit')
    .gsub("C'Wealth","Commonwealth")
end