Class: Events::RejectsRepository

Inherits:
Object
  • Object
show all
Defined in:
app/repositories/events/rejects_repository.rb

Constant Summary collapse

FILTERS =
TODO

IN PROGRESS..

[]

Class Method Summary collapse

Class Method Details

.create(reject_type_id, language_id, params, error_messages, current_user = nil) ⇒ Object

Raises:

  • (ArgumentError)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/repositories/events/rejects_repository.rb', line 4

def self.create(reject_type_id, language_id, params, error_messages, current_user = nil)
  raise ArgumentError, '`error_messages` must be String' unless error_messages.class.eql? String
  raise ArgumentError, '`params` must be Hash' unless params.class.eql? Hash
  raise ArgumentError, '`current_user` должен быть подан, когда создаётся лодка в кабинете' if current_user.nil? && reject_type_id == ::Dicts::RejectType::CREATE_BOAT.id
  raise ArgumentError, '`current_user` должен быть подан, когда обновляется лодка в кабинете' if current_user.nil? && reject_type_id == ::Dicts::RejectType::UPDATE_BOAT.id

  event    = ::Event.new type_id: ::Dicts::EventType::REJECT.id
  r_event  = ::Events::Reject.new event: event

  r_event.reject_type_id = reject_type_id
  r_event.language_id    = language_id
  r_event.params         = params.to_json
  r_event.error_messages = error_messages

  case reject_type_id
    when ::Dicts::RejectType::LEASE_INQUIRY.id
      r_event.email = params['email']
    when ::Dicts::RejectType::LIST_YOR_BOAT.id
      r_event.email = params['users_attributes']['0']['email'] rescue ''
    when ::Dicts::RejectType::CREATE_BOAT.id
      r_event.email = current_user.email
    when ::Dicts::RejectType::UPDATE_BOAT.id
      r_event.email = current_user.email
    else
      r_event.email = ''
  end

  event.transaction do
    event.save
    r_event.save
  end

  r_event
end

.fetch(params) ⇒ Object



42
43
44
45
46
47
# File 'app/repositories/events/rejects_repository.rb', line 42

def self.fetch(params)
  rejects = ::Events::Reject
  FILTERS.each { |filter| rejects = filter.call rejects, params }
  rejects_count = rejects.distinct.except(:select).group('%s.%s' % [::Events::Reject.table_name, ::Events::Reject.primary_key]).count.size
  rejects.includes(:event).paginate(page: params[:page], per_page: params[:per_page], total_entries: rejects_count).order('%s.created_at DESC' % Event.table_name)
end