c80_shared 0.1.69 → 0.1.70
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/event_type.rb +1 -0
- data/app/dicts/reject_type.rb +17 -0
- data/app/forms/application_form.rb +41 -0
- data/app/forms/rent_form.rb +111 -0
- data/app/getboat/schemas/base_boat_schema.rb +1 -1
- data/app/getboat/schemas/site/register_boat_schema.rb +85 -0
- data/app/repositories/events/rejects_repository.rb +40 -0
- data/app/services/boat_register_service.rb +120 -0
- data/config/locales/dicts/business/en.yml +5 -0
- data/config/locales/dicts/business/ru.yml +5 -0
- data/lib/c80_shared/dates_now_validator.rb +41 -0
- 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: 2c3214907b93916e8e43bf0d80847168d6e8ae568bc62e22fff7e34637221b35
|
4
|
+
data.tar.gz: 2bc2128ec79443d16fe8f7b67c0cd0c1131067b6c1807bc3e96041ce5af0d493
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 824d6dae5f5b4619d94a7408276e62afacae379e5100268d5af691531e805a99464c523b5f98004127741e70009c50937350b05df6c4ac3a30c483f919e3bacd
|
7
|
+
data.tar.gz: 9a2cae54b524a337834a98f2a3b78194d9eb9b11b4d3db0db19dfec6b2f3c9a5481e54dc2260914be63877169ba90476a1f3d6ba6ae767a113c5a68275639a62
|
data/app/dicts/event_type.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Dicts
|
2
|
+
class RejectType < ::Dict
|
3
|
+
|
4
|
+
attr_reader :type
|
5
|
+
|
6
|
+
def initialize(id, index, type)
|
7
|
+
@type = type
|
8
|
+
super id, index
|
9
|
+
end
|
10
|
+
|
11
|
+
LEASE_INQUIRY = new 1, 'user_lease_inquiry', '::Lease::Inquiry' # какой-то юзер оставляет заявку на аренду
|
12
|
+
LIST_YOR_BOAT = new 2, 'user_list_your_boat', '::Boat' # какой-то юзер пытается добавить лодку с помощью фичи LIST YOUR BOAT
|
13
|
+
CREATE_BOAT = new 3, 'agent_create_boat', '::Boat' # агент пытается добавить лодку
|
14
|
+
UPDATE_BOAT = new 4, 'agent_update_boat', '::Boat' # агент пытается обновить лодку
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class ApplicationForm
|
2
|
+
include ActiveModel::Model
|
3
|
+
include ActiveModel::Validations
|
4
|
+
|
5
|
+
def self.all_fields
|
6
|
+
@all_fields ||= {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.fields(model, *names)
|
10
|
+
unless all_fields.key? model
|
11
|
+
attr_reader model
|
12
|
+
|
13
|
+
define_method :"validate_#{model}!" do
|
14
|
+
own = send model
|
15
|
+
|
16
|
+
unless own.valid?
|
17
|
+
errors.messages.merge!(own.errors.messages) { |_, ary1, ary2| ary1 + ary2 }
|
18
|
+
errors.details.merge!(own.errors.details) { |_, ary1, ary2| ary1 + ary2 }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
validate :"validate_#{model}!"
|
23
|
+
|
24
|
+
all_fields[model] = []
|
25
|
+
end
|
26
|
+
|
27
|
+
delegate *names, to: model
|
28
|
+
|
29
|
+
all_fields[model] = all_fields[model] + names
|
30
|
+
all_fields[model].uniq!
|
31
|
+
all_fields
|
32
|
+
end
|
33
|
+
|
34
|
+
def persisted?
|
35
|
+
false
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_h
|
39
|
+
self.class.all_fields.map { |a| [a, self.send(a)] if self.respond_to?(a) }.compact.to_h
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
class RentForm < ApplicationForm
|
2
|
+
include DatesNowValidator
|
3
|
+
|
4
|
+
FIELDS = %i[
|
5
|
+
address
|
6
|
+
latitude
|
7
|
+
longitude
|
8
|
+
location_address
|
9
|
+
name
|
10
|
+
from
|
11
|
+
to
|
12
|
+
guests
|
13
|
+
kids
|
14
|
+
boat_types
|
15
|
+
is_skippered
|
16
|
+
is_my_price
|
17
|
+
my_price_currency
|
18
|
+
my_price
|
19
|
+
watersports
|
20
|
+
need_transfer
|
21
|
+
comments
|
22
|
+
email
|
23
|
+
name
|
24
|
+
phone_number
|
25
|
+
password
|
26
|
+
sms_code
|
27
|
+
staying_overnight
|
28
|
+
uploaded_license_file
|
29
|
+
hours_per_day
|
30
|
+
].freeze
|
31
|
+
|
32
|
+
attr_accessor *FIELDS
|
33
|
+
|
34
|
+
validates :address,
|
35
|
+
:latitude,
|
36
|
+
:longitude,
|
37
|
+
:from,
|
38
|
+
:to,
|
39
|
+
:email,
|
40
|
+
:name,
|
41
|
+
:phone_number, presence: true
|
42
|
+
|
43
|
+
validates :phone_number, phony_plausible: true
|
44
|
+
validates :email, email: { strict_mode: true }
|
45
|
+
|
46
|
+
validates :kids, numericality: { greater_than_or_equal_to: 0 }, if: -> { kids.present? }
|
47
|
+
validates :guests, numericality: { greater_than_or_equal_to: 0 }
|
48
|
+
|
49
|
+
validates :my_price, numericality: { greater_than_or_equal_to: 0 }, if: -> { !my_price.to_i.zero? }
|
50
|
+
validates :my_price_currency, presence: true, length: { minimum: 3, maximum: 3 }, allow_blank: false, if: -> { !my_price.to_i.zero? }
|
51
|
+
|
52
|
+
# validates :uploaded_license_file, presence: true, allow_blank: false, if: -> { is_skippered == 'false' }
|
53
|
+
validate :validate_license
|
54
|
+
|
55
|
+
validate :validate_dates
|
56
|
+
validate :validate_boat_types
|
57
|
+
validate :validate_address
|
58
|
+
|
59
|
+
attr_reader :is_need_bareboat_license
|
60
|
+
|
61
|
+
def initialize(params = nil, is_need_bareboat_license = true)
|
62
|
+
self.send(:is_my_price=, !params[:my_price].to_i.zero?) unless params.nil?
|
63
|
+
@is_need_bareboat_license = is_need_bareboat_license
|
64
|
+
|
65
|
+
super params
|
66
|
+
end
|
67
|
+
|
68
|
+
def validate_license
|
69
|
+
return unless @is_need_bareboat_license
|
70
|
+
return unless is_skippered.eql?('false')
|
71
|
+
|
72
|
+
unless uploaded_license_file.present?
|
73
|
+
errors.add(:uploaded_license_file, :presence)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def button_name
|
78
|
+
I18n.t(:new_rent_order)
|
79
|
+
end
|
80
|
+
|
81
|
+
def validate_dates
|
82
|
+
check_dates errors, from, to
|
83
|
+
end
|
84
|
+
|
85
|
+
def validate_boat_types
|
86
|
+
if boat_types.nil? || boat_types.empty?
|
87
|
+
errors.add(:boat_types, :absent)
|
88
|
+
else
|
89
|
+
unless BoatType.where(id: boat_types.map(&:to_i)).exists?
|
90
|
+
errors.add(:boat_types, :absent)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def validate_address
|
96
|
+
conditions = [
|
97
|
+
address.empty?,
|
98
|
+
latitude.to_f.zero?,
|
99
|
+
longitude.to_f.zero?,
|
100
|
+
latitude.to_i < -90,
|
101
|
+
latitude.to_i > 90,
|
102
|
+
longitude.to_i < -180,
|
103
|
+
longitude.to_i > 180,
|
104
|
+
]
|
105
|
+
|
106
|
+
if conditions.any?
|
107
|
+
errors.add(:address, :invalid_address)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -79,7 +79,7 @@ module Schemas
|
|
79
79
|
result[:properties][:rent_prices] = {
|
80
80
|
type: [:null, :array], # это первая версия, где я пробую разобраться с массивом объектов (версия покруче тут - app/getboat/schemas/base_boat_schema.rb - с помощью :items)
|
81
81
|
cast: ->(value) do
|
82
|
-
value
|
82
|
+
value&.inject([]) do |res, el|
|
83
83
|
el[:_delete] = to_bool el[:_delete]
|
84
84
|
el[:currency] = normalize_integer el[:currency]
|
85
85
|
el[:discount] = to_float el[:discount]
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Schemas
|
2
|
+
module Site
|
3
|
+
class RegisterBoatSchema < Schemas::BaseBoatSchema
|
4
|
+
|
5
|
+
def schema
|
6
|
+
super_schema = super
|
7
|
+
|
8
|
+
super_schema[:required] = %i[
|
9
|
+
name
|
10
|
+
boat_type_id
|
11
|
+
boat_model
|
12
|
+
builder
|
13
|
+
length
|
14
|
+
crew_total
|
15
|
+
guest_cabins
|
16
|
+
guests_total
|
17
|
+
maximum_guests_during_cruise
|
18
|
+
boat_price
|
19
|
+
boat_sale_price
|
20
|
+
]
|
21
|
+
|
22
|
+
super_schema[:properties][:boat_price] = {
|
23
|
+
type: :hash,
|
24
|
+
required: %i[duration uom_id season_id currency_id value],
|
25
|
+
properties: {
|
26
|
+
duration: {
|
27
|
+
type: :number,
|
28
|
+
cast: ->(value) { normalize_integer(value) }
|
29
|
+
},
|
30
|
+
uom_id: {
|
31
|
+
enum: Dicts::CharterUom.all.collect(&:id),
|
32
|
+
cast: ->(value) { normalize_integer(value) }
|
33
|
+
},
|
34
|
+
season_id: {
|
35
|
+
enum: Dicts::CharterSeason.all.collect(&:id),
|
36
|
+
cast: ->(value) { normalize_integer(value) }
|
37
|
+
},
|
38
|
+
currency_id: {
|
39
|
+
enum: Dicts::Currency.all.collect(&:id),
|
40
|
+
cast: ->(value) { normalize_integer(value) }
|
41
|
+
},
|
42
|
+
value: {
|
43
|
+
type: %i[number nil],
|
44
|
+
cast: ->(value) { normalize_integer(value) }
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
super_schema[:properties][:boat_sale_price] = {
|
50
|
+
type: :hash,
|
51
|
+
required: %i[value currency_id],
|
52
|
+
properties: {
|
53
|
+
currency_id: {
|
54
|
+
enum: Dicts::Currency.all.collect(&:id),
|
55
|
+
cast: ->(value) { normalize_integer(value) }
|
56
|
+
},
|
57
|
+
value: {
|
58
|
+
type: %i[number nil],
|
59
|
+
cast: ->(value) { normalize_integer(value) }
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
super_schema
|
65
|
+
end
|
66
|
+
|
67
|
+
def validate_additional
|
68
|
+
validate_prices
|
69
|
+
validate_location
|
70
|
+
validate_length
|
71
|
+
# validate_crew_total
|
72
|
+
# validate_guest_cabins
|
73
|
+
validate_guests_total
|
74
|
+
end
|
75
|
+
|
76
|
+
# noinspection RubyResolve
|
77
|
+
def validate_prices
|
78
|
+
unless boat_price[:value]&.nonzero? || boat_sale_price[:value]&.nonzero?
|
79
|
+
errors.add :prices, I18n.t('errors.boat.prices.any')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Events
|
2
|
+
class RejectsRepository
|
3
|
+
|
4
|
+
def self.create(reject_type_id, language_id, params, error_messages, current_user = nil)
|
5
|
+
raise ArgumentError, '`error_messages` must be String' unless error_messages.class.eql? String
|
6
|
+
raise ArgumentError, '`params` must be Hash' unless params.class.eql? Hash
|
7
|
+
raise ArgumentError, '`current_user` должен быть подан, когда создаётся лодка в кабинете' if current_user.nil? && reject_type_id == ::Dicts::RejectType::CREATE_BOAT.id
|
8
|
+
raise ArgumentError, '`current_user` должен быть подан, когда обновляется лодка в кабинете' if current_user.nil? && reject_type_id == ::Dicts::RejectType::UPDATE_BOAT.id
|
9
|
+
|
10
|
+
event = ::Event.new type_id: ::Dicts::EventType::REJECT.id
|
11
|
+
r_event = ::Events::Reject.new event: event
|
12
|
+
|
13
|
+
r_event.reject_type_id = reject_type_id
|
14
|
+
r_event.language_id = language_id
|
15
|
+
r_event.params = params.to_json
|
16
|
+
r_event.error_messages = error_messages
|
17
|
+
|
18
|
+
case reject_type_id
|
19
|
+
when ::Dicts::RejectType::LEASE_INQUIRY.id
|
20
|
+
r_event.email = params['email']
|
21
|
+
when ::Dicts::RejectType::LIST_YOR_BOAT.id
|
22
|
+
r_event.email = params['users_attributes']['0']['email']
|
23
|
+
when ::Dicts::RejectType::CREATE_BOAT.id
|
24
|
+
r_event.email = current_user.email
|
25
|
+
when ::Dicts::RejectType::UPDATE_BOAT.id
|
26
|
+
r_event.email = current_user.email
|
27
|
+
else
|
28
|
+
r_event.email = ''
|
29
|
+
end
|
30
|
+
|
31
|
+
event.transaction do
|
32
|
+
event.save
|
33
|
+
r_event.save
|
34
|
+
end
|
35
|
+
|
36
|
+
r_event
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
class BoatRegisterService
|
2
|
+
|
3
|
+
attr_reader :boat,
|
4
|
+
:errors,
|
5
|
+
:user
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
_reset_instance_variables
|
9
|
+
end
|
10
|
+
|
11
|
+
# @param boat_params - параметры лодки, пришедшие с формы регистрации лодки
|
12
|
+
# @param request - нужен только для того, чтобы установить ip юзеру
|
13
|
+
# @param user - это current_user (в номинальном режиме)
|
14
|
+
#
|
15
|
+
def perform(boat_params, request, user = nil)
|
16
|
+
_reset_instance_variables
|
17
|
+
|
18
|
+
schema = ::Schemas::Site::RegisterBoatSchema.new boat_params # проверяем параметры, пришедшие с формы
|
19
|
+
unless schema.valid?
|
20
|
+
@errors = schema.errors.messages
|
21
|
+
return false
|
22
|
+
end
|
23
|
+
|
24
|
+
_create_user(boat_params.dig(:users_attributes, '0'), user) # # затем создаём и проверяем юзера == NOTE: такой странный хэш приходит 100%, если в модели Boat есть accept_nested_attributes :users
|
25
|
+
return false if @user.new_record? && !@user.valid?
|
26
|
+
_new_boat boat_params # создаём лодку (но в базу пока не кладём)
|
27
|
+
|
28
|
+
ActiveRecord::Base.transaction do # если дошли до этого этапа - значит всё ровно и с юзером и с лодкой - связываем их и пишем в базу
|
29
|
+
@boat.users << @user
|
30
|
+
@user.save validate: false
|
31
|
+
|
32
|
+
@boat.send :set_slug
|
33
|
+
@boat.save validate: false
|
34
|
+
|
35
|
+
# Делаем первую фотку главной и пишем в базу IP
|
36
|
+
MediaService.new(@boat).set_main_picture(:boat_photo)
|
37
|
+
UserService.new(@user).set_ip(request.remote_ip.to_s)
|
38
|
+
|
39
|
+
# в конце концов рассчитываем цены во всех валютах
|
40
|
+
::Boats::BoatPricesSaveService.perform(@boat, [schema.attributes[:boat_price]]) unless @boat.for_rent.zero?
|
41
|
+
::Boats::BoatSalePricesSaveService.perform(@boat.id, schema.attributes[:boat_sale_price]) unless @boat.for_sale.zero?
|
42
|
+
|
43
|
+
# TODO:: во-первых, заменить условия в двух строках выше на анализ boat_params[:boat_price] и boat_params[:boat_sale_price] соответственно
|
44
|
+
# TODO:: во-вторых, только после успешной отработки ценовых сервисов определять for_sale и for_rent и обновлять атрибуты
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
true
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
# noinspection RubySimplifyBooleanInspection,RubyResolve
|
54
|
+
def _new_boat(boat_params)
|
55
|
+
boat_locs2 = boat_params[:boat_locations_attributes].compact.each_with_index.map { |attr, index| [index.to_s, attr] }.to_h
|
56
|
+
boat_new_params = boat_params.except(:users_attributes, :prices, :boat_sale_price, :boat_price, :length, :boat_locations_attributes) # это собираемся подать в Boat.new, но сначала допишем длину
|
57
|
+
lk = Dicts::Length.find(boat_params[:length][:length_id]).index # "meters", "ft"
|
58
|
+
lk = 'boat_length_metrics_%s' % lk
|
59
|
+
boat_new_params[lk] = boat_params[:length][:value]
|
60
|
+
|
61
|
+
boat_new_params[:boat_locations_attributes] = boat_locs2
|
62
|
+
|
63
|
+
# fuckin' active record
|
64
|
+
@boat = Boat.new
|
65
|
+
@boat.assign_attributes boat_new_params.permit(
|
66
|
+
:boat_type_id, :boat_model, :name,
|
67
|
+
:builder, :crew_total, :guest_cabins, :guests_total,
|
68
|
+
:maximum_guests_during_cruise,
|
69
|
+
# :longitude, :latitude, :location_address,
|
70
|
+
lk.to_sym,
|
71
|
+
boat_photos_attributes: %i[id boat_id name picture _destroy],
|
72
|
+
boat_locations_attributes: %i[latitude longitude address is_main radius _destroy id]
|
73
|
+
)
|
74
|
+
@boat.premoderate
|
75
|
+
|
76
|
+
length_index = ::Dicts::Length.find(boat_params[:length][:length_id]).index # вместо cookies[:dimension]
|
77
|
+
DimensionService.new(@boat).calculate_boat_attributes length_index
|
78
|
+
|
79
|
+
@boat.for_sale = !!boat_params[:boat_sale_price][:value]&.to_i&.nonzero?
|
80
|
+
@boat.for_rent = !!boat_params[:boat_price][:value]&.to_i&.nonzero?
|
81
|
+
|
82
|
+
true
|
83
|
+
end
|
84
|
+
|
85
|
+
def _create_user(user_params, user = nil)
|
86
|
+
@user = user || User.new(user_params.permit(:email, :password))
|
87
|
+
return unless @user.new_record? # 2. если пользователь авторизован
|
88
|
+
|
89
|
+
email = user_params[:email]
|
90
|
+
password = user_params[:password]
|
91
|
+
|
92
|
+
# 1. если пользователь не авторизован
|
93
|
+
if email.present? && password.present? # 1.1 если указаны email и password - поищем юзера в базе
|
94
|
+
may_be_user = User.find_by_email email
|
95
|
+
if may_be_user # 1.1.1 если есть такой юзер в базе - проверим правильность пароля
|
96
|
+
if may_be_user.valid_password? password # 1.1.1.1 если пароль правильный
|
97
|
+
@user = may_be_user
|
98
|
+
return
|
99
|
+
else # 1.1.1.2 если пароль неправильный -- сообщаем об этом
|
100
|
+
errors[:users_attributes_0_email] = # note : такой странный ключ хэша обусловлен Boat.accept_nested_attributes :user
|
101
|
+
[I18n.t('devise.failure.invalid', authentication_keys: 'email')]
|
102
|
+
return
|
103
|
+
end
|
104
|
+
else # 1.1.2 если такого юзера нет в базе - СОЗДАЁМ
|
105
|
+
@user.role_id = 11 # todo-my:: 2018-08-06: потом это будет заменено на создание аккаунта Central Agent (просто сейчас находимся в контексте разработки list your boat)
|
106
|
+
@user.name = @user.email.split('@')[0]
|
107
|
+
return
|
108
|
+
end
|
109
|
+
else # 1.2 если не указан или пароль или емайл - сообщаем об этом
|
110
|
+
errors[:users_attributes_0_email] = # note : такой странный ключ хэша обусловлен Boat.accept_nested_attributes :user
|
111
|
+
[I18n.t('devise.failure.invalid', authentication_keys: 'email')]
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
def _reset_instance_variables
|
117
|
+
@errors = { }
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module DatesNowValidator
|
2
|
+
|
3
|
+
# Сверит даты между собой.
|
4
|
+
# Сверит даты с текущей датой.
|
5
|
+
#
|
6
|
+
# @param errors
|
7
|
+
# @param from [nil || String || ::ActiveSupport::TimeWithZone || Time]
|
8
|
+
# @param to [аналогично]
|
9
|
+
#
|
10
|
+
def check_dates(errors, from, to)
|
11
|
+
errors.add(:from, :invalid_date) unless is_date?(from)
|
12
|
+
errors.add(:to, :invalid_date) unless is_date?(to)
|
13
|
+
|
14
|
+
# если введена хотя бы одна некорректная дата - дальше не проверяем
|
15
|
+
return if errors[:from].any? || errors[:to].any?
|
16
|
+
|
17
|
+
from = Time.parse(from) rescue from
|
18
|
+
to = Time.parse(to) rescue to
|
19
|
+
now = Time.zone.now.beginning_of_day
|
20
|
+
|
21
|
+
conditions = [
|
22
|
+
from.beginning_of_day < now,
|
23
|
+
to.beginning_of_day < now,
|
24
|
+
from > to
|
25
|
+
]
|
26
|
+
|
27
|
+
if conditions.any?
|
28
|
+
errors.add(:from, :invalid_date)
|
29
|
+
errors.add(:to, :invalid_date)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def is_date?(date)
|
37
|
+
return true if date.is_a? ::ActiveSupport::TimeWithZone
|
38
|
+
!!Time.parse(date) rescue false
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
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.70
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C80609A
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -64,12 +64,16 @@ files:
|
|
64
64
|
- app/dicts/length.rb
|
65
65
|
- app/dicts/locale.rb
|
66
66
|
- app/dicts/motor.rb
|
67
|
+
- app/dicts/reject_type.rb
|
67
68
|
- app/dicts/rent_skip_type.rb
|
68
69
|
- app/dicts/role.rb
|
70
|
+
- app/forms/application_form.rb
|
71
|
+
- app/forms/rent_form.rb
|
69
72
|
- app/getboat/schemas/base.rb
|
70
73
|
- app/getboat/schemas/base_boat_schema.rb
|
71
74
|
- app/getboat/schemas/central_agent/save_boat_schema.rb
|
72
75
|
- app/getboat/schemas/site/lease/create_personal_inquiry_schema.rb
|
76
|
+
- app/getboat/schemas/site/register_boat_schema.rb
|
73
77
|
- app/helpers/custom/currency_helper.rb
|
74
78
|
- app/helpers/custom/dimension_helper.rb
|
75
79
|
- app/helpers/custom/price_helper.rb
|
@@ -77,6 +81,7 @@ files:
|
|
77
81
|
- app/helpers/site/time_helper.rb
|
78
82
|
- app/repositories/accounts/central_agent_account_repository.rb
|
79
83
|
- app/repositories/accounts/client_account_repository.rb
|
84
|
+
- app/repositories/events/rejects_repository.rb
|
80
85
|
- app/serializers/account_serializer.rb
|
81
86
|
- app/serializers/boat_location_serializer.rb
|
82
87
|
- app/serializers/boat_price_serializer.rb
|
@@ -95,6 +100,7 @@ files:
|
|
95
100
|
- app/serializers/lib/boats/rent_price_per_season.rb
|
96
101
|
- app/serializers/lib/boats/sale_price.rb
|
97
102
|
- app/services/abstract_prices_service.rb
|
103
|
+
- app/services/boat_register_service.rb
|
98
104
|
- app/services/boats/boat_prices_save_service.rb
|
99
105
|
- app/services/boats/boat_sale_prices_save_service.rb
|
100
106
|
- app/services/central_agent/save_boat_service.rb
|
@@ -112,6 +118,8 @@ files:
|
|
112
118
|
- config/locales/boat/ru.yml
|
113
119
|
- config/locales/dicts/account_type/en.yml
|
114
120
|
- config/locales/dicts/account_type/ru.yml
|
121
|
+
- config/locales/dicts/business/en.yml
|
122
|
+
- config/locales/dicts/business/ru.yml
|
115
123
|
- config/locales/dicts/charter_category/en.yml
|
116
124
|
- config/locales/dicts/charter_category/ru.yml
|
117
125
|
- config/locales/dicts/exterior_color/en.yml
|
@@ -133,6 +141,7 @@ files:
|
|
133
141
|
- lib/c80_shared.rb
|
134
142
|
- lib/c80_shared/aasm/handle_event.rb
|
135
143
|
- lib/c80_shared/abstract_serializer.rb
|
144
|
+
- lib/c80_shared/dates_now_validator.rb
|
136
145
|
- lib/c80_shared/dict.rb
|
137
146
|
- lib/c80_shared/engine.rb
|
138
147
|
- lib/c80_shared/geo/distance.rb
|