-
-
Notifications
You must be signed in to change notification settings - Fork 572
Expand file tree
/
Copy pathrequests_controller.rb
More file actions
58 lines (48 loc) · 1.95 KB
/
requests_controller.rb
File metadata and controls
58 lines (48 loc) · 1.95 KB
1
2
3
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
module Partners
class RequestsController < BaseController
protect_from_forgery with: :exception
def index
@partner = current_partner
@partner_requests = @partner.requests.order(created_at: :desc).limit(10)
end
def new
@partner_request = Partners::Request.new
@partner_request.item_requests.build
requestable_items = PartnerFetchRequestableItemsService.new(partner_id: current_partner.partner.id).call
@formatted_requestable_items = requestable_items.map do |rt|
[rt.name, rt.id]
end.sort
end
def show
@partner_request = current_partner.requests.find(params[:id])
end
def create
create_service = Partners::RequestCreateService.new(
partner_user_id: current_partner_user.id,
comments: partner_request_params[:comments],
item_requests_attributes: partner_request_params[:item_requests_attributes]&.values || []
)
create_service.call
if create_service.errors.none?
flash[:success] = 'Request was successfully created.'
redirect_to partners_request_path(create_service.partner_request.id)
else
@partner_request = create_service.partner_request
@errors = create_service.errors
@formatted_requestable_items = Organization.find(current_partner.diaper_bank_id).valid_items.map do |item|
[item[:name], item[:id]]
end.sort
Rails.logger.info("[Request Creation Failure] partner_user_id=#{current_partner_user.id} reason=#{@errors.full_messages}")
render :new, status: :unprocessable_entity
end
end
private
def partner_request_params
params.require(:partners_request).permit(:comments, item_requests_attributes: [
:item_id,
:quantity,
:_destroy
])
end
end
end