Class: Mks::Rent::OfferRequestService

Inherits:
Object
  • Object
show all
Defined in:
app/services/mks/rent/offer_request_service.rb

Instance Method Summary collapse

Instance Method Details

#create(params, prepared_by) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/mks/rent/offer_request_service.rb', line 4

def create(params, prepared_by)
  p = params.clone
  id = get_or_create_client(p[:client])
  p.delete(:client)
  items_hash = p.delete(:items)
  offer_request = OfferRequest.new(p)

  unless items_hash
    offer_request.errors.add(:base, 'Request has no items')
    return [offer_request, false]
  end

  offer_request.client_id = id
  offer_request.prepared_by = prepared_by
  offer_request.status = 'DRAFT'

  OfferRequest.transaction do
    offer_request.save!
    items = prepare_items(offer_request.id, items_hash)
    items.each(&:save!)
    return [offer_request, true]
  end
end

#get_or_create_client(client) ⇒ Object



39
40
41
42
# File 'app/services/mks/rent/offer_request_service.rb', line 39

def get_or_create_client(client)
  return client[:id] if client && client[:id]
  Client.create(client).id
end

#prepare_items(id, params) ⇒ Object



44
45
46
47
48
49
50
51
# File 'app/services/mks/rent/offer_request_service.rb', line 44

def prepare_items(id, params)
  obj = []
  params.each do |param|
    param[:offer_request_id] = id
    obj << RequestItem.new(param)
  end
  obj
end

#update(request, params) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'app/services/mks/rent/offer_request_service.rb', line 28

def update(request, params)
  p = params.clone
  if p[:client]
    id = get_or_create_client(p[:client])
    p.delete(:client)
    request.client_id = id
  end
  updated = request.update(p)
  [request, updated]
end