c80_shared 0.1.47 → 0.1.48

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 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