c80_shared 0.1.47 → 0.1.48

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d6e0efe1ed0161e4bd85858be91010da3470089ba00bc1230443ed8698b11ea
4
- data.tar.gz: 2c768f5ebc7709f32fab0748772ae044dda3d2c04989fdad3d07c4a108b8223f
3
+ metadata.gz: 9f2e77e7dbf7e8a1279e7b352b677027059cfadad92b286d3f89d02af8583ed9
4
+ data.tar.gz: 4c0501164cb9f5e47242c6a2d6a0f15f4c63cfe910ea1c2b4fa2256175d9ecca
5
5
  SHA512:
6
- metadata.gz: a69d0eb917803c5dd9527b807de738580f6ae84535aa80757bb99112d5a62225825e7fd5314b88f1a157d6f4da1190aae17c8e4a47e06a10323c81e6062a5bf5
7
- data.tar.gz: 588968c45cc3260d17447a62017509048fcfc4c3a06c5b2eebf621ee3d217c0bd2d00869088d6d8c0e9ea6ed203e73df444a40d38176b003ae238de023d9b16f
6
+ metadata.gz: 1b28f1132f4558b46d6ac1afeb5f56e710525d24fda8af17626debd201070590bca2d8a3ca85b6357927e8fda86601662e74dd2a32dfc3003aa8c29b0f5c6ba7
7
+ data.tar.gz: 3427cf33ce35082fa55ea7038895f12a0b23b5f87cd33518c274ef24dea387b14adc2fb16e9eb9d799e91fc03b485248c60e5f435c3757f011a48bd6bf4b833d
data/app/dicts/length.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Dicts
2
2
  class Length < ::Dict
3
3
  METRE = new(1, 'meters')
4
- FOOT = new(1, 'ft')
4
+ FOOT = new(2, 'ft')
5
5
  end
6
6
  end
@@ -0,0 +1,39 @@
1
+ class BoatLocationSerializer < AbstractSerializer
2
+
3
+ class << self
4
+ def available_attributes
5
+ %i[
6
+ id
7
+ latitude
8
+ longitude
9
+ address
10
+ is_main
11
+ radius
12
+ ]
13
+ end
14
+
15
+ def id(location)
16
+ { id: location.id }
17
+ end
18
+
19
+ def latitude(location)
20
+ { latitude: location.latitude }
21
+ end
22
+
23
+ def longitude(location)
24
+ { longitude: location.longitude }
25
+ end
26
+
27
+ def address(location)
28
+ { address: location.address }
29
+ end
30
+
31
+ def is_main(location)
32
+ { is_main: location.is_main }
33
+ end
34
+
35
+ def radius(location)
36
+ { radius: location.radius }
37
+ end
38
+ end
39
+ end
@@ -13,8 +13,10 @@ class BoatSerializer < AbstractSerializer
13
13
  boat_length_metrics
14
14
  boat_length_metrics_ft
15
15
  boat_length_metrics_meters
16
+ boat_locations_attributes
16
17
  boat_model
17
18
  boat_photos
19
+ boat_photos_attributes
18
20
  boat_type
19
21
  boat_type_id
20
22
  builder
@@ -31,8 +33,10 @@ class BoatSerializer < AbstractSerializer
31
33
  hull_material
32
34
  id
33
35
  interior_designer
36
+ length
34
37
  latitude
35
38
  location_address
39
+ locations
36
40
  longitude
37
41
  maximum_guests_during_cruise
38
42
  main_boat_photo_id
@@ -71,7 +75,7 @@ class BoatSerializer < AbstractSerializer
71
75
  end
72
76
 
73
77
  # определяем "простые" методы
74
- %i[id comments tender name description built_year boat_model location_address latitude longitude boat_type_id boat_hull_id refit_year
78
+ %i[id comments tender name description built_year boat_model boat_type_id boat_hull_id refit_year
75
79
  crew_cabins crew_total guest_heads guest_sleeps maximum_guests_during_cruise interior_designer
76
80
  naval_architect guests_total guest_cabins state visits_today visits_total].each do |f|
77
81
  define_method f do |boat|
@@ -281,6 +285,16 @@ class BoatSerializer < AbstractSerializer
281
285
  }
282
286
  end
283
287
 
288
+ # используется для валидации лодки при обновлении стейта
289
+ def length(boat)
290
+ {
291
+ length: {
292
+ value: boat.send('boat_length_metrics_%s' % @opts[:uol]),
293
+ length_id: ::Dicts::Length.find_by_index(@opts[:uol]).id
294
+ }
295
+ }
296
+ end
297
+
284
298
  # для формы редактирования в кабинете агента
285
299
  def boat_length_metrics(boat)
286
300
  { boat_length_metrics: boat_length(boat)[:boat_length] }
@@ -352,6 +366,15 @@ class BoatSerializer < AbstractSerializer
352
366
  { boat_photos: boat_photos }
353
367
  end
354
368
 
369
+ # используется для валидации лодки при обновлении стейта
370
+ def boat_photos_attributes(boat)
371
+ {
372
+ boat_photos_attributes: boat.boat_photos.map do |boat_photo|
373
+ { id: boat_photo.id }
374
+ end
375
+ }
376
+ end
377
+
355
378
  # Контакты владельцев: то, что приходит в `boat_users_attributes` из админской формы
356
379
  def boat_contacts(boat)
357
380
  boat_contacts = boat.boat_users.map do |user|
@@ -362,6 +385,42 @@ class BoatSerializer < AbstractSerializer
362
385
  { boat_contacts: boat_contacts }
363
386
  end
364
387
 
388
+ # TODO
389
+ def latitude(boat)
390
+ { latitude: 1 }
391
+ end
392
+
393
+ # TODO
394
+ def longitude(boat)
395
+ { longitude: 1 }
396
+ end
397
+
398
+ # под видом этого атрибута будет приходить текст - название главной локации
399
+ def location_address(boat)
400
+ loc = boat.boat_locations.select { |bl| bl.is_main }.first # если не применяется поиск по адресу
401
+ loc ||= boat.boat_locations.first # если поиск по адресу применён -- в результат поиска может не попасть главная локация
402
+ {
403
+ location_address: loc&.address || ''
404
+ }
405
+ end
406
+
407
+ def locations(boat)
408
+ {
409
+ locations: boat.boat_locations.map do |location|
410
+ ::BoatLocationSerializer.serialize location
411
+ end
412
+ }
413
+ end
414
+
415
+ # используется для валидации лодки при обновлении стейта
416
+ def boat_locations_attributes(boat)
417
+ {
418
+ boat_locations_attributes: boat.boat_locations.map do |location|
419
+ ::BoatLocationSerializer.serialize location
420
+ end
421
+ }
422
+ end
423
+
365
424
  def serialize_opts
366
425
  locale = ::Dicts::Locale.find_by_index @opts[:locale].to_s
367
426
  uol = ::Dicts::Length.find_by_index @opts[:uol]
@@ -1,3 +1,3 @@
1
1
  module C80Shared
2
- VERSION = "0.1.47"
2
+ VERSION = "0.1.48"
3
3
  end
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.47
4
+ version: 0.1.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - C80609A
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-15 00:00:00.000000000 Z
11
+ date: 2019-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,6 +70,7 @@ files:
70
70
  - app/helpers/custom/select_helper.rb
71
71
  - app/helpers/site/time_helper.rb
72
72
  - app/serializers/account_serializer.rb
73
+ - app/serializers/boat_location_serializer.rb
73
74
  - app/serializers/boat_price_serializer.rb
74
75
  - app/serializers/boat_sale_price_serializer.rb
75
76
  - app/serializers/boat_serializer.rb