c80_shared 0.1.28 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|