c80_shared 0.1.28 → 0.1.29
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/dicts/boat_type.rb +11 -0
- data/app/dicts/business.rb +6 -0
- data/app/dicts/charter_season.rb +8 -0
- data/app/dicts/charter_uom.rb +10 -0
- data/app/dicts/currency.rb +67 -3
- data/app/dicts/length.rb +6 -0
- data/app/helpers/custom/select_helper.rb +5 -1
- data/app/helpers/site/time_helper.rb +5 -5
- data/app/serializers/boat_price_serializer.rb +58 -0
- data/app/serializers/boat_sale_price_serializer.rb +33 -0
- data/app/serializers/boat_serializer.rb +229 -242
- data/app/serializers/configs/boats/boat_prices.rb +1 -1
- data/app/serializers/configs/boats/central_agent/boat_list.rb +2 -3
- data/app/serializers/configs/lease/central_agent/inquiry_list.rb +1 -1
- data/app/serializers/lease/inquiry_serializer.rb +12 -0
- data/config/locales/dicts/length/en.yml +5 -0
- data/config/locales/dicts/length/ru.yml +5 -0
- data/lib/c80_shared/dict.rb +5 -1
- data/lib/c80_shared/engine.rb +1 -1
- data/lib/c80_shared/version.rb +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab60ae319ce4abda842e353e0cad39fa295bc88096e214cc7a3d86850f4d3087
|
4
|
+
data.tar.gz: d10e052afbc0877695637471f02ce8bc44a19dfff3ea2574ace257e7423ac11f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcf6825cf48b47fb057cf19bbed53905bc95ea41a154561150ea1db176d748ce9e7ac22a3ea3d7f6574a6b33372004df0af917a1c4e443866acb3ee169954418
|
7
|
+
data.tar.gz: a82ee96f349039cd1e772b511e78088b574b4ca0fc4263bc1028c2070836db9318fb4e0d35a89c1c2bfcdcdbe83a90717aba88e6f400efdc412b8d68bcc7e9fe
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Dicts
|
2
|
+
class BoatType < ::Dict
|
3
|
+
BOAT_30FT = new(4, 'boat_30ft')
|
4
|
+
PARTY_BOAT = new(7, 'party_boat')
|
5
|
+
YACHT = new(8, 'yacht')
|
6
|
+
FISHING_BOAT = new(10, 'fishing_boat')
|
7
|
+
SAILING = new(11, 'sailing')
|
8
|
+
CATAMARAN = new(12, 'catamaran')
|
9
|
+
MEGA_YACHT = new(13, 'mega_yacht')
|
10
|
+
end
|
11
|
+
end
|
data/app/dicts/currency.rb
CHANGED
@@ -1,7 +1,71 @@
|
|
1
1
|
module Dicts
|
2
2
|
class Currency < ::Dict
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
attr_reader :symbol
|
4
|
+
|
5
|
+
def initialize(id, index, symbol)
|
6
|
+
@symbol = symbol
|
7
|
+
super(id, index)
|
8
|
+
end
|
9
|
+
|
10
|
+
AED = new(17, 'AED', "\u062f.\u0625.")
|
11
|
+
ARS = new(9, 'ARS', "$")
|
12
|
+
AUD = new(7, 'AUD', "$")
|
13
|
+
BGN = new(11, 'BGN', "lev")
|
14
|
+
BHD = new(10, 'BHD', "\u062f.\u0628.")
|
15
|
+
BRL = new(12, 'BRL', "R$")
|
16
|
+
CAD = new(25, 'CAD', "$")
|
17
|
+
CHF = new(47, 'CHF', "\u20a3")
|
18
|
+
CLP = new(45, 'CLP', "$")
|
19
|
+
CNY = new(6, 'CNY', "\uffe5")
|
20
|
+
COP = new(27, 'COP', "$")
|
21
|
+
CZK = new(44, 'CZK', "K\u010d")
|
22
|
+
DKK = new(16, 'DKK', "kr.")
|
23
|
+
EGP = new(19, 'EGP', "\u062c.\u0645.")
|
24
|
+
EUR = new(2, 'EUR', "\u20ac")
|
25
|
+
FJD = new(18, 'FJD', "FJ$")
|
26
|
+
GBP = new(4, 'GBP', "\u00a3")
|
27
|
+
HKD = new(14, 'HKD', "$")
|
28
|
+
HUF = new(13, 'HUF', "Ft")
|
29
|
+
IDR = new(22, 'IDR', "Rp")
|
30
|
+
ILS = new(20, 'ILS', "\u20aa")
|
31
|
+
INR = new(21, 'INR', "\u20b9")
|
32
|
+
JOD = new(23, 'JOD', "\u062f.\u0627.")
|
33
|
+
JPY = new(50, 'JPY', "\u00a5")
|
34
|
+
KRW = new(49, 'KRW', "\u20a9")
|
35
|
+
KWD = new(28, 'KWD', "\u062f.\u0643.")
|
36
|
+
KZT = new(24, 'KZT', "\u0422")
|
37
|
+
MDL = new(31, 'MDL', "lei")
|
38
|
+
MXN = new(30, 'MXN', "$")
|
39
|
+
MYR = new(29, 'MYR', "RM")
|
40
|
+
NAD = new(32, 'NAD', "N$")
|
41
|
+
NOK = new(35, 'NOK', "kr")
|
42
|
+
NZD = new(33, 'NZD', "$")
|
43
|
+
OMR = new(36, 'OMR', "\u0631.\u0639.")
|
44
|
+
PLN = new(37, 'PLN', "z\u0142")
|
45
|
+
QAR = new(26, 'QAR', "\u0631.\u0642.")
|
46
|
+
RON = new(34, 'RON', "lei")
|
47
|
+
RUB = new(3, 'RUB', "\u20bd")
|
48
|
+
SAR = new(38, 'SAR', "\u0631.\u0633.")
|
49
|
+
SEK = new(46, 'SEK', "kr")
|
50
|
+
SGD = new(39, 'SGD', "$")
|
51
|
+
THB = new(5, 'THB', "\u0e3f")
|
52
|
+
TRY = new(41, 'TRY', "TL")
|
53
|
+
TWD = new(40, 'TWD', "NT$")
|
54
|
+
UAH = new(42, 'UAH', "\u20B4")
|
55
|
+
USD = new(1, 'USD', "$")
|
56
|
+
ZAR = new(48, 'ZAR', "R")
|
57
|
+
|
58
|
+
# старый
|
59
|
+
ALL = [USD, EUR, RUB]
|
60
|
+
|
61
|
+
# новый
|
62
|
+
ALL2 = [USD,EUR,THB,ARS,AUD,BGN,BHD,
|
63
|
+
BRL,CAD,CHF,CLP,CNY,COP,
|
64
|
+
CZK,DKK,EGP,FJD,GBP,
|
65
|
+
HKD,HUF,IDR,ILS,INR,JOD,
|
66
|
+
JPY,KRW,KWD,KZT,MDL,MXN,
|
67
|
+
MYR,NAD,NOK,NZD,OMR,PLN,
|
68
|
+
QAR,RON,RUB,SAR,SEK,SGD,
|
69
|
+
TRY,TWD,UAH,AED,ZAR]
|
6
70
|
end
|
7
71
|
end
|
data/app/dicts/length.rb
ADDED
@@ -10,7 +10,11 @@ module Custom
|
|
10
10
|
def collection_for_select(collection, name, id, options = {})
|
11
11
|
return [] unless collection.is_a?(Array)
|
12
12
|
|
13
|
-
collection =
|
13
|
+
collection = if options[:collection_is_not_hash]
|
14
|
+
collection.map { |h| [ h.try(name), h.try(id) ] }
|
15
|
+
else
|
16
|
+
collection.map { |h| [ h[name], h[id] ] }
|
17
|
+
end
|
14
18
|
collection = options_for_select(collection, options[:value]) if options[:options_for_select].present?
|
15
19
|
collection
|
16
20
|
end
|
@@ -8,20 +8,20 @@ module Site
|
|
8
8
|
# Вернёт отформатированную строку с датой ~ от локали.
|
9
9
|
# @param with_time [Boolean] Если true - вернёт и время
|
10
10
|
#
|
11
|
-
def format_date(date, locale = :en, with_time = false)
|
12
|
-
date.strftime locale_date_format(locale, with_time)
|
11
|
+
def format_date(date, locale = :en, with_time = false, with_html = false)
|
12
|
+
date.strftime locale_date_format(locale, with_time, with_html)
|
13
13
|
end
|
14
14
|
|
15
15
|
# В зависимости от локали выдаст соответствующий формат для отображения дат.
|
16
16
|
# https://en.wikipedia.org/wiki/Date_format_by_country
|
17
17
|
# @param with_time [Boolean] Если true - вернёт и время
|
18
18
|
#
|
19
|
-
def locale_date_format(locale = :en, with_time = false)
|
19
|
+
def locale_date_format(locale = :en, with_time = false, with_html = false)
|
20
20
|
res = case locale.to_s
|
21
21
|
when 'en'
|
22
|
-
'%Y/%m/%d'
|
22
|
+
with_html ? '<span class="year">%Y</span>/<span class="month">%m</span>/<span class="day">%d</span>' : '%Y/%m/%d'
|
23
23
|
when 'ru'
|
24
|
-
'
|
24
|
+
'<span class="day">%d</span>.<span class="month">%m</span>.<span class="year">%Y</span>'
|
25
25
|
else
|
26
26
|
'%Y/%m/%d'
|
27
27
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
class BoatPriceSerializer < AbstractSerializer
|
2
|
+
|
3
|
+
class << self
|
4
|
+
def available_attributes
|
5
|
+
%i[season uom duration currency value discount]
|
6
|
+
end
|
7
|
+
|
8
|
+
def season(boat_price)
|
9
|
+
{
|
10
|
+
season: {
|
11
|
+
id: boat_price.season_id,
|
12
|
+
index: ::Dicts::CharterSeason.find(boat_price.season_id).index
|
13
|
+
}
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
# час, день, неделя, месяц
|
18
|
+
def uom(boat_price)
|
19
|
+
{
|
20
|
+
uom: {
|
21
|
+
id: boat_price.uom_id,
|
22
|
+
index: ::Dicts::CharterUom.find(boat_price.uom_id).index
|
23
|
+
}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def duration(boat_price)
|
28
|
+
{ duration: boat_price.duration }
|
29
|
+
end
|
30
|
+
|
31
|
+
def currency(boat_price)
|
32
|
+
bp = ::Dicts::Currency.find(boat_price.currency_id)
|
33
|
+
|
34
|
+
{
|
35
|
+
currency: {
|
36
|
+
id: bp.id,
|
37
|
+
index: bp.index,
|
38
|
+
symbol: bp.symbol
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
# цена за указанный период
|
44
|
+
def value(boat_price)
|
45
|
+
{ value: sprintf('%d', boat_price.value) }
|
46
|
+
end
|
47
|
+
|
48
|
+
def discount(boat_price)
|
49
|
+
{ discount: sprintf('%.2f', boat_price.discount) }
|
50
|
+
end
|
51
|
+
|
52
|
+
# TODO:: прояснить надобность, проработать тему
|
53
|
+
def is_orig(boat_price)
|
54
|
+
{ is_orig: boat_price.is_orig }
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class BoatSalePriceSerializer < AbstractSerializer
|
2
|
+
|
3
|
+
class << self
|
4
|
+
def available_attributes
|
5
|
+
%i[id currency value discount]
|
6
|
+
end
|
7
|
+
|
8
|
+
def id(sale_price)
|
9
|
+
{ id: sale_price.id }
|
10
|
+
end
|
11
|
+
|
12
|
+
def currency(sale_price)
|
13
|
+
currency = ::Dicts::Currency.find(sale_price.currency_id)
|
14
|
+
|
15
|
+
{
|
16
|
+
currency: {
|
17
|
+
id: currency.id,
|
18
|
+
index: currency.index,
|
19
|
+
symbol: currency.symbol
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
# цена за указанный период
|
25
|
+
def value(sale_price)
|
26
|
+
{ value: sprintf('%d', sale_price.value) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def discount(sale_price)
|
30
|
+
{ discount: sprintf('%.2f', sale_price.discount) }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -3,14 +3,17 @@ class BoatSerializer < AbstractSerializer
|
|
3
3
|
class << self
|
4
4
|
def available_attributes
|
5
5
|
%i[
|
6
|
+
boat_beam
|
6
7
|
boat_beam_metrics
|
7
8
|
boat_beam_metrics_ft
|
8
9
|
boat_beam_metrics_meters
|
9
10
|
boat_contacts
|
11
|
+
boat_draft
|
10
12
|
boat_draft_metrics
|
11
13
|
boat_draft_metrics_ft
|
12
14
|
boat_draft_metrics_meters
|
13
15
|
boat_hull_id
|
16
|
+
boat_length
|
14
17
|
boat_length_metrics
|
15
18
|
boat_length_metrics_ft
|
16
19
|
boat_length_metrics_meters
|
@@ -20,38 +23,6 @@ class BoatSerializer < AbstractSerializer
|
|
20
23
|
boat_type_id
|
21
24
|
builder
|
22
25
|
built_year
|
23
|
-
charter_1_day_high_discount
|
24
|
-
charter_1_day_high_eur
|
25
|
-
charter_1_day_high_rub
|
26
|
-
charter_1_day_high_usd
|
27
|
-
charter_1_day_low_discount
|
28
|
-
charter_1_day_low_eur
|
29
|
-
charter_1_day_low_rub
|
30
|
-
charter_1_day_low_usd
|
31
|
-
charter_1_hour_high_discount
|
32
|
-
charter_1_hour_high_eur
|
33
|
-
charter_1_hour_high_rub
|
34
|
-
charter_1_hour_high_usd
|
35
|
-
charter_1_hour_low_discount
|
36
|
-
charter_1_hour_low_eur
|
37
|
-
charter_1_hour_low_rub
|
38
|
-
charter_1_hour_low_usd
|
39
|
-
charter_1_month_high_discount
|
40
|
-
charter_1_month_high_eur
|
41
|
-
charter_1_month_high_rub
|
42
|
-
charter_1_month_high_usd
|
43
|
-
charter_1_month_low_discount
|
44
|
-
charter_1_month_low_eur
|
45
|
-
charter_1_month_low_rub
|
46
|
-
charter_1_month_low_usd
|
47
|
-
charter_1_week_high_discount
|
48
|
-
charter_1_week_high_eur
|
49
|
-
charter_1_week_high_rub
|
50
|
-
charter_1_week_high_usd
|
51
|
-
charter_1_week_low_discount
|
52
|
-
charter_1_week_low_eur
|
53
|
-
charter_1_week_low_rub
|
54
|
-
charter_1_week_low_usd
|
55
26
|
crew_total
|
56
27
|
guest_cabins
|
57
28
|
guests_total
|
@@ -64,17 +35,10 @@ class BoatSerializer < AbstractSerializer
|
|
64
35
|
main_boat_photo_id
|
65
36
|
motor
|
66
37
|
name
|
67
|
-
name_builder
|
68
38
|
naval_architect
|
69
|
-
per_season
|
70
39
|
picture_medium_url
|
71
|
-
|
72
|
-
price_discount
|
40
|
+
prices
|
73
41
|
refit_year
|
74
|
-
sale_price_discount
|
75
|
-
sale_price_eur
|
76
|
-
sale_price_rub
|
77
|
-
sale_price_usd
|
78
42
|
short_description
|
79
43
|
state
|
80
44
|
visits_today
|
@@ -84,10 +48,11 @@ class BoatSerializer < AbstractSerializer
|
|
84
48
|
|
85
49
|
def default_opts
|
86
50
|
{
|
87
|
-
|
88
|
-
currency:
|
51
|
+
uol: 'ft',
|
52
|
+
currency: ::Dicts::Currency::USD.index,
|
89
53
|
locale: 'en',
|
90
|
-
is_for_rent: true
|
54
|
+
is_for_rent: true, # TODO:: [bcff00da] УДАЛИТЬ
|
55
|
+
business: ::Dicts::Business::RENT.index
|
91
56
|
}
|
92
57
|
end
|
93
58
|
|
@@ -107,21 +72,6 @@ class BoatSerializer < AbstractSerializer
|
|
107
72
|
{ naval_architect: boat.naval_architect }
|
108
73
|
end
|
109
74
|
|
110
|
-
# Для страницы просмотра лодки
|
111
|
-
#
|
112
|
-
# example: Carpe Diem by Lazzara
|
113
|
-
# example: Ismail
|
114
|
-
def name_builder(boat)
|
115
|
-
arr = []
|
116
|
-
arr << boat.name&.strip
|
117
|
-
if boat.builder.present?
|
118
|
-
arr << I18n.t('boat.builder.prefix')
|
119
|
-
arr << boat.builder.strip
|
120
|
-
end
|
121
|
-
|
122
|
-
{ name_builder: arr * ' ' }
|
123
|
-
end
|
124
|
-
|
125
75
|
# noinspection RubyResolve
|
126
76
|
def picture_medium_url(boat)
|
127
77
|
url = if boat.boat_photo.present?
|
@@ -160,35 +110,35 @@ class BoatSerializer < AbstractSerializer
|
|
160
110
|
end
|
161
111
|
|
162
112
|
# per day, per week; в день, в час, за месяц;
|
163
|
-
def per_season(boat)
|
164
|
-
|
113
|
+
# def per_season(boat)
|
114
|
+
# season_key = ::Lib::Boats::RentPricePerSeason.spot_rentprice_id(boat, @opts[:currency], @opts[:rent_price_id]).gsub(/_low|_high/, '')
|
165
115
|
#=> charter_1_week_low, charter_1_day_high
|
166
|
-
translate = I18n.t("boat.rent_price.per_#{season_key}")
|
167
|
-
value = @opts[:is_for_rent] ? translate : ''
|
168
|
-
|
169
|
-
{ per_season: value }
|
170
|
-
end
|
116
|
+
# translate = I18n.t("boat.rent_price.per_#{season_key}")
|
117
|
+
# value = @opts[:is_for_rent] ? translate : ''
|
118
|
+
#
|
119
|
+
# { per_season: value }
|
120
|
+
# end
|
171
121
|
|
172
122
|
# ₽ 293,885
|
173
|
-
def price(boat)
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
end
|
123
|
+
# def price(boat)
|
124
|
+
# value = if @opts[:is_for_rent]
|
125
|
+
# ::Lib::Boats::RentPricePerSeason.price(boat, @opts[:currency], @opts[:rent_price_id])
|
126
|
+
# else
|
127
|
+
# ::Lib::Boats::SalePrice.price(boat, @opts[:currency])
|
128
|
+
# end
|
129
|
+
#
|
130
|
+
# { price: value }
|
131
|
+
# end
|
182
132
|
|
183
133
|
# 12%
|
184
|
-
def price_discount(boat)
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
end
|
134
|
+
# def price_discount(boat)
|
135
|
+
# value = if @opts[:is_for_rent]
|
136
|
+
# ::Lib::Boats::RentPricePerSeason.price_discount(boat, @opts[:currency])
|
137
|
+
# else
|
138
|
+
# ::Lib::Boats::SalePrice.price_discount(boat)
|
139
|
+
# end
|
140
|
+
# { price_discount: value }
|
141
|
+
# end
|
192
142
|
|
193
143
|
def guests_total(boat)
|
194
144
|
{ guests_total: boat.guests_total }
|
@@ -244,200 +194,237 @@ class BoatSerializer < AbstractSerializer
|
|
244
194
|
}
|
245
195
|
end
|
246
196
|
|
247
|
-
def
|
248
|
-
|
249
|
-
|
197
|
+
def boat_length(boat)
|
198
|
+
{
|
199
|
+
boat_length: {
|
200
|
+
value: boat.send('boat_length_metrics_%s' % @opts[:uol]),
|
201
|
+
uol: @opts[:uol]
|
202
|
+
}
|
203
|
+
}
|
250
204
|
end
|
251
205
|
|
206
|
+
# [bcff00da] : вся подобная логика переезжает во фронт, переделано должно быть по образу `def boat_length`
|
207
|
+
|
208
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
209
|
+
# def boat_length_metrics(boat)
|
210
|
+
# value = ::Lib::Boats::Dimensions.boatlength(boat, @opts[:uol])
|
211
|
+
# { boat_length_metrics: value }
|
212
|
+
# end
|
213
|
+
|
214
|
+
# TODO:: [bcff00da] УДАЛИТЬ - пока используется при обновлении/создании лодки в админке
|
252
215
|
def boat_length_metrics_meters(boat)
|
253
216
|
{ boat_length_metrics_meters: boat.boat_length_metrics_meters }
|
254
217
|
end
|
255
218
|
|
219
|
+
# TODO:: [bcff00da] УДАЛИТЬ - пока используется при обновлении/создании лодки в админке
|
256
220
|
def boat_length_metrics_ft(boat)
|
257
221
|
{ boat_length_metrics_ft: boat.boat_length_metrics_ft }
|
258
222
|
end
|
259
223
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
224
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
225
|
+
# def boat_beam_metrics(boat)
|
226
|
+
# value = ::Lib::Boats::Dimensions.boatbeam(boat, @opts[:uol])
|
227
|
+
# { boat_beam_metrics: value }
|
228
|
+
# end
|
264
229
|
|
265
|
-
|
266
|
-
|
267
|
-
|
230
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
231
|
+
# def boat_beam_metrics_ft(boat)
|
232
|
+
# { boat_beam_metrics_ft: boat.boat_beam_metrics_ft }
|
233
|
+
# end
|
268
234
|
|
269
|
-
|
270
|
-
|
271
|
-
|
235
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
236
|
+
# def boat_beam_metrics_meters(boat)
|
237
|
+
# { boat_beam_metrics_meters: boat.boat_beam_metrics_meters }
|
238
|
+
# end
|
272
239
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
240
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
241
|
+
# def boat_draft_metrics(boat)
|
242
|
+
# value = ::Lib::Boats::Dimensions.boatdraft(boat, @opts[:uol])
|
243
|
+
# { boat_draft_metrics: value }
|
244
|
+
# end
|
277
245
|
|
278
|
-
|
279
|
-
|
280
|
-
|
246
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
247
|
+
# def boat_draft_metrics_ft(boat)
|
248
|
+
# { boat_draft_metrics_ft: boat.boat_draft_metrics_ft }
|
249
|
+
# end
|
281
250
|
|
282
|
-
|
283
|
-
|
284
|
-
|
251
|
+
# TODO:: [bcff00da] УДАЛИТЬ
|
252
|
+
# def boat_draft_metrics_meters(boat)
|
253
|
+
# { boat_draft_metrics_meters: boat.boat_draft_metrics_meters }
|
254
|
+
# end
|
285
255
|
|
286
256
|
def boat_hull_id(boat)
|
287
257
|
{ boat_hull_id: boat.boat_hull_id }
|
288
258
|
end
|
289
259
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
end
|
299
|
-
|
300
|
-
def charter_1_hour_low_eur(boat)
|
301
|
-
{ charter_1_hour_low_eur: boat.charter_1_hour_low_eur }
|
302
|
-
end
|
303
|
-
|
304
|
-
def charter_1_day_low_usd(boat)
|
305
|
-
{ charter_1_day_low_usd: boat.charter_1_day_low_usd }
|
306
|
-
end
|
260
|
+
def prices(boat)
|
261
|
+
currency_id = ::Dicts::Currency.find_by_index(@opts[:currency]).id
|
262
|
+
prices = if @opts[:business] == ::Dicts::Business::RENT.index
|
263
|
+
boat.boat_prices.select { |bp| bp.currency_id == currency_id }.map { |bp| ::BoatPriceSerializer.serialize bp }
|
264
|
+
else
|
265
|
+
# noinspection RubyResolve
|
266
|
+
boat.boat_sale_prices.select { |bp| bp.currency_id == currency_id }.map { |bps| ::BoatSalePriceSerializer.serialize bps }
|
267
|
+
end
|
307
268
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
end
|
315
|
-
|
316
|
-
def charter_1_week_low_usd(boat)
|
317
|
-
{ charter_1_week_low_usd: boat.charter_1_week_low_usd }
|
318
|
-
end
|
319
|
-
|
320
|
-
def charter_1_week_low_rub(boat)
|
321
|
-
{ charter_1_week_low_rub: boat.charter_1_week_low_rub }
|
322
|
-
end
|
323
|
-
|
324
|
-
def charter_1_week_low_eur(boat)
|
325
|
-
{ charter_1_week_low_eur: boat.charter_1_week_low_eur }
|
326
|
-
end
|
327
|
-
|
328
|
-
def charter_1_month_low_usd(boat)
|
329
|
-
{ charter_1_month_low_usd: boat.charter_1_month_low_usd }
|
269
|
+
{
|
270
|
+
prices: {
|
271
|
+
list: prices,
|
272
|
+
business: @opts[:business]
|
273
|
+
}
|
274
|
+
}
|
330
275
|
end
|
331
276
|
|
332
|
-
|
333
|
-
{ charter_1_month_low_rub: boat.charter_1_month_low_rub }
|
334
|
-
end
|
277
|
+
# --[low]-----------------------------------------------------------------------------------------------------------
|
335
278
|
|
336
|
-
def
|
337
|
-
|
338
|
-
end
|
279
|
+
# def charter_1_hour_low_usd(boat)
|
280
|
+
# { charter_1_hour_low_usd: boat.charter_1_hour_low_usd }
|
281
|
+
# end
|
282
|
+
#
|
283
|
+
# def charter_1_hour_low_rub(boat)
|
284
|
+
# { charter_1_hour_low_rub: boat.charter_1_hour_low_rub }
|
285
|
+
# end
|
286
|
+
#
|
287
|
+
# def charter_1_hour_low_eur(boat)
|
288
|
+
# { charter_1_hour_low_eur: boat.charter_1_hour_low_eur }
|
289
|
+
# end
|
290
|
+
#
|
291
|
+
# def charter_1_day_low_usd(boat)
|
292
|
+
# { charter_1_day_low_usd: boat.charter_1_day_low_usd }
|
293
|
+
# end
|
294
|
+
#
|
295
|
+
# def charter_1_day_low_rub(boat)
|
296
|
+
# { charter_1_day_low_rub: boat.charter_1_day_low_rub }
|
297
|
+
# end
|
298
|
+
#
|
299
|
+
# def charter_1_day_low_eur(boat)
|
300
|
+
# { charter_1_day_low_eur: boat.charter_1_day_low_eur }
|
301
|
+
# end
|
302
|
+
#
|
303
|
+
# def charter_1_week_low_usd(boat)
|
304
|
+
# { charter_1_week_low_usd: boat.charter_1_week_low_usd }
|
305
|
+
# end
|
306
|
+
#
|
307
|
+
# def charter_1_week_low_rub(boat)
|
308
|
+
# { charter_1_week_low_rub: boat.charter_1_week_low_rub }
|
309
|
+
# end
|
310
|
+
#
|
311
|
+
# def charter_1_week_low_eur(boat)
|
312
|
+
# { charter_1_week_low_eur: boat.charter_1_week_low_eur }
|
313
|
+
# end
|
314
|
+
#
|
315
|
+
# def charter_1_month_low_usd(boat)
|
316
|
+
# { charter_1_month_low_usd: boat.charter_1_month_low_usd }
|
317
|
+
# end
|
318
|
+
#
|
319
|
+
# def charter_1_month_low_rub(boat)
|
320
|
+
# { charter_1_month_low_rub: boat.charter_1_month_low_rub }
|
321
|
+
# end
|
322
|
+
#
|
323
|
+
# def charter_1_month_low_eur(boat)
|
324
|
+
# { charter_1_month_low_eur: boat.charter_1_month_low_eur }
|
325
|
+
# end
|
339
326
|
|
340
327
|
# --[high]-----------------------------------------------------------------------------------------------------------
|
341
328
|
|
342
|
-
def charter_1_hour_high_usd(boat)
|
343
|
-
|
344
|
-
end
|
345
|
-
|
346
|
-
def charter_1_hour_high_rub(boat)
|
347
|
-
|
348
|
-
end
|
349
|
-
|
350
|
-
def charter_1_hour_high_eur(boat)
|
351
|
-
|
352
|
-
end
|
353
|
-
|
354
|
-
def charter_1_day_high_usd(boat)
|
355
|
-
|
356
|
-
end
|
357
|
-
|
358
|
-
def charter_1_day_high_rub(boat)
|
359
|
-
|
360
|
-
end
|
361
|
-
|
362
|
-
def charter_1_day_high_eur(boat)
|
363
|
-
|
364
|
-
end
|
365
|
-
|
366
|
-
def charter_1_week_high_usd(boat)
|
367
|
-
|
368
|
-
end
|
369
|
-
|
370
|
-
def charter_1_week_high_rub(boat)
|
371
|
-
|
372
|
-
end
|
373
|
-
|
374
|
-
def charter_1_week_high_eur(boat)
|
375
|
-
|
376
|
-
end
|
377
|
-
|
378
|
-
def charter_1_month_high_usd(boat)
|
379
|
-
|
380
|
-
end
|
381
|
-
|
382
|
-
def charter_1_month_high_rub(boat)
|
383
|
-
|
384
|
-
end
|
385
|
-
|
386
|
-
def charter_1_month_high_eur(boat)
|
387
|
-
|
388
|
-
end
|
329
|
+
# def charter_1_hour_high_usd(boat)
|
330
|
+
# { charter_1_hour_high_usd: boat.charter_1_hour_high_usd }
|
331
|
+
# end
|
332
|
+
#
|
333
|
+
# def charter_1_hour_high_rub(boat)
|
334
|
+
# { charter_1_hour_high_rub: boat.charter_1_hour_high_rub }
|
335
|
+
# end
|
336
|
+
#
|
337
|
+
# def charter_1_hour_high_eur(boat)
|
338
|
+
# { charter_1_hour_high_eur: boat.charter_1_hour_high_eur }
|
339
|
+
# end
|
340
|
+
#
|
341
|
+
# def charter_1_day_high_usd(boat)
|
342
|
+
# { charter_1_day_high_usd: boat.charter_1_day_high_usd }
|
343
|
+
# end
|
344
|
+
#
|
345
|
+
# def charter_1_day_high_rub(boat)
|
346
|
+
# { charter_1_day_high_rub: boat.charter_1_day_high_rub }
|
347
|
+
# end
|
348
|
+
#
|
349
|
+
# def charter_1_day_high_eur(boat)
|
350
|
+
# { charter_1_day_high_eur: boat.charter_1_day_high_eur }
|
351
|
+
# end
|
352
|
+
#
|
353
|
+
# def charter_1_week_high_usd(boat)
|
354
|
+
# { charter_1_week_high_usd: boat.charter_1_week_high_usd }
|
355
|
+
# end
|
356
|
+
#
|
357
|
+
# def charter_1_week_high_rub(boat)
|
358
|
+
# { charter_1_week_high_rub: boat.charter_1_week_high_rub }
|
359
|
+
# end
|
360
|
+
#
|
361
|
+
# def charter_1_week_high_eur(boat)
|
362
|
+
# { charter_1_week_high_eur: boat.charter_1_week_high_eur }
|
363
|
+
# end
|
364
|
+
#
|
365
|
+
# def charter_1_month_high_usd(boat)
|
366
|
+
# { charter_1_month_high_usd: boat.charter_1_month_high_usd }
|
367
|
+
# end
|
368
|
+
#
|
369
|
+
# def charter_1_month_high_rub(boat)
|
370
|
+
# { charter_1_month_high_rub: boat.charter_1_month_high_rub }
|
371
|
+
# end
|
372
|
+
#
|
373
|
+
# def charter_1_month_high_eur(boat)
|
374
|
+
# { charter_1_month_high_eur: boat.charter_1_month_high_eur }
|
375
|
+
# end
|
389
376
|
|
390
377
|
# --[sale]----------------------------------------------------------------------------------------------------------
|
391
378
|
|
392
|
-
def sale_price_usd(boat)
|
393
|
-
|
394
|
-
end
|
395
|
-
|
396
|
-
def sale_price_rub(boat)
|
397
|
-
|
398
|
-
end
|
399
|
-
|
400
|
-
def sale_price_eur(boat)
|
401
|
-
|
402
|
-
end
|
379
|
+
# def sale_price_usd(boat)
|
380
|
+
# { sale_price_usd: boat.sale_price_usd }
|
381
|
+
# end
|
382
|
+
#
|
383
|
+
# def sale_price_rub(boat)
|
384
|
+
# { sale_price_rub: boat.sale_price_rub }
|
385
|
+
# end
|
386
|
+
#
|
387
|
+
# def sale_price_eur(boat)
|
388
|
+
# { sale_price_eur: boat.sale_price_eur }
|
389
|
+
# end
|
403
390
|
|
404
391
|
# --[discount]------------------------------------------------------------------------------------------------------
|
405
392
|
|
406
|
-
def charter_1_day_high_discount(boat)
|
407
|
-
|
408
|
-
end
|
409
|
-
|
410
|
-
def charter_1_day_low_discount(boat)
|
411
|
-
|
412
|
-
end
|
413
|
-
|
414
|
-
def charter_1_hour_high_discount(boat)
|
415
|
-
|
416
|
-
end
|
417
|
-
|
418
|
-
def charter_1_hour_low_discount(boat)
|
419
|
-
|
420
|
-
end
|
421
|
-
|
422
|
-
def charter_1_month_high_discount(boat)
|
423
|
-
|
424
|
-
end
|
425
|
-
|
426
|
-
def charter_1_month_low_discount(boat)
|
427
|
-
|
428
|
-
end
|
429
|
-
|
430
|
-
def charter_1_week_high_discount(boat)
|
431
|
-
|
432
|
-
end
|
433
|
-
|
434
|
-
def charter_1_week_low_discount(boat)
|
435
|
-
|
436
|
-
end
|
393
|
+
# def charter_1_day_high_discount(boat)
|
394
|
+
# { charter_1_day_high_discount: boat.charter_1_day_high_discount }
|
395
|
+
# end
|
396
|
+
#
|
397
|
+
# def charter_1_day_low_discount(boat)
|
398
|
+
# { charter_1_day_low_discount: boat.charter_1_day_low_discount }
|
399
|
+
# end
|
400
|
+
#
|
401
|
+
# def charter_1_hour_high_discount(boat)
|
402
|
+
# { charter_1_hour_high_discount: boat.charter_1_hour_high_discount }
|
403
|
+
# end
|
404
|
+
#
|
405
|
+
# def charter_1_hour_low_discount(boat)
|
406
|
+
# { charter_1_hour_low_discount: boat.charter_1_hour_low_discount }
|
407
|
+
# end
|
408
|
+
#
|
409
|
+
# def charter_1_month_high_discount(boat)
|
410
|
+
# { charter_1_month_high_discount: boat.charter_1_month_high_discount }
|
411
|
+
# end
|
412
|
+
#
|
413
|
+
# def charter_1_month_low_discount(boat)
|
414
|
+
# { charter_1_month_low_discount: boat.charter_1_month_low_discount }
|
415
|
+
# end
|
416
|
+
#
|
417
|
+
# def charter_1_week_high_discount(boat)
|
418
|
+
# { charter_1_week_high_discount: boat.charter_1_week_high_discount }
|
419
|
+
# end
|
420
|
+
#
|
421
|
+
# def charter_1_week_low_discount(boat)
|
422
|
+
# { charter_1_week_low_discount: boat.charter_1_week_low_discount }
|
423
|
+
# end
|
437
424
|
|
438
|
-
def sale_price_discount(boat)
|
439
|
-
|
440
|
-
end
|
425
|
+
# def sale_price_discount(boat)
|
426
|
+
# { sale_price_discount: boat.sale_price_discount }
|
427
|
+
# end
|
441
428
|
|
442
429
|
def state(boat)
|
443
430
|
{ state: boat.state }
|
@@ -4,7 +4,7 @@ module Configs
|
|
4
4
|
# список ценовых (продажа/аренда) атрибутов Лодки
|
5
5
|
def self.attributes(price_attributes = ::Dictionaries::BoatCharterAttribute::ALL)
|
6
6
|
attributes = []
|
7
|
-
::Dicts::Currency.
|
7
|
+
::Dicts::Currency::ALL.each do |currency|
|
8
8
|
price_attributes.map do |attr|
|
9
9
|
field = Currency.attribute_name currency.index, attr
|
10
10
|
next unless field
|
@@ -19,6 +19,7 @@ module Lease
|
|
19
19
|
:latitude,
|
20
20
|
:longitude,
|
21
21
|
:period,
|
22
|
+
:period_formatted,
|
22
23
|
:duration,
|
23
24
|
:from,
|
24
25
|
:to,
|
@@ -112,6 +113,17 @@ module Lease
|
|
112
113
|
{ period: '%s - %s' % [from(inquiry)[:from], to(inquiry)[:to]] }
|
113
114
|
end
|
114
115
|
|
116
|
+
def period_formatted(inquiry)
|
117
|
+
frm = format_date(inquiry.from, @opts[:locale], false, true)
|
118
|
+
tto = format_date(inquiry.to, @opts[:locale], false, true)
|
119
|
+
|
120
|
+
{ period: {
|
121
|
+
from: frm,
|
122
|
+
to: tto
|
123
|
+
}
|
124
|
+
}
|
125
|
+
end
|
126
|
+
|
115
127
|
def duration(inquiry)
|
116
128
|
distance = (inquiry.to - inquiry.from).to_i / 24 / 60 / 60
|
117
129
|
distance = distance.zero? ? 1 : distance
|
data/lib/c80_shared/dict.rb
CHANGED
@@ -9,13 +9,17 @@ class Dict
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.all
|
12
|
-
constants.map { |const| const_get const }
|
12
|
+
constants.select { |const| (const_get const).class != Array }.map { |const| const_get const } # пока я не добавил константы типа ALL, работала эта строка: constants.map { |const| const_get const }
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.find(id)
|
16
16
|
all.select { |const| const.id == id.to_i }.first
|
17
17
|
end
|
18
18
|
|
19
|
+
def self.find_by_index(index)
|
20
|
+
all.select { |const| const.index == index }.first
|
21
|
+
end
|
22
|
+
|
19
23
|
def self.where(ids)
|
20
24
|
all.select { |const| ids.include?(const.id) }
|
21
25
|
end
|
data/lib/c80_shared/engine.rb
CHANGED
data/lib/c80_shared/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c80_shared
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C80609A
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -49,8 +49,13 @@ files:
|
|
49
49
|
- ".rubocop.yml"
|
50
50
|
- Gemfile
|
51
51
|
- README.md
|
52
|
+
- app/dicts/boat_type.rb
|
53
|
+
- app/dicts/business.rb
|
54
|
+
- app/dicts/charter_season.rb
|
55
|
+
- app/dicts/charter_uom.rb
|
52
56
|
- app/dicts/currency.rb
|
53
57
|
- app/dicts/email_token_subj.rb
|
58
|
+
- app/dicts/length.rb
|
54
59
|
- app/dicts/locale.rb
|
55
60
|
- app/dicts/rent_skip_type.rb
|
56
61
|
- app/helpers/custom/currency_helper.rb
|
@@ -58,6 +63,8 @@ files:
|
|
58
63
|
- app/helpers/custom/price_helper.rb
|
59
64
|
- app/helpers/custom/select_helper.rb
|
60
65
|
- app/helpers/site/time_helper.rb
|
66
|
+
- app/serializers/boat_price_serializer.rb
|
67
|
+
- app/serializers/boat_sale_price_serializer.rb
|
61
68
|
- app/serializers/boat_serializer.rb
|
62
69
|
- app/serializers/boat_visit_day_serializer.rb
|
63
70
|
- app/serializers/configs/boats/boat_prices.rb
|
@@ -78,6 +85,8 @@ files:
|
|
78
85
|
- c80_shared.gemspec
|
79
86
|
- config/locales/boat/en.yml
|
80
87
|
- config/locales/boat/ru.yml
|
88
|
+
- config/locales/dicts/length/en.yml
|
89
|
+
- config/locales/dicts/length/ru.yml
|
81
90
|
- config/locales/rent_skip_type/en.yml
|
82
91
|
- config/locales/rent_skip_type/ru.yml
|
83
92
|
- lib/c80_shared.rb
|