Class: Dscf::Marketplace::ProductInclusionRequestsController

Inherits:
ApplicationController
  • Object
show all
Includes:
Core::Common
Defined in:
app/controllers/dscf/marketplace/product_inclusion_requests_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#bypass_permissions_for_demo?, #pundit_user

Instance Method Details

#approveObject

Approve a pending product inclusion request



39
40
41
42
43
44
45
46
47
48
49
# File 'app/controllers/dscf/marketplace/product_inclusion_requests_controller.rb', line 39

def approve
  set_object
  authorize @obj, :approve?

  @obj.approve!(current_user)
  create_notification(:approved)

  render_success("product_inclusion_requests.success.approve", data: @obj)
rescue StandardError => e
  render_error(errors: e.message, status: :unprocessable_entity)
end

#createObject

Override create to set requested_by from current_user



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
# File 'app/controllers/dscf/marketplace/product_inclusion_requests_controller.rb', line 7

def create
  authorize @clazz.new, :create?

  obj = @clazz.new(model_params)
  obj.requested_by = current_user

  ActiveRecord::Base.transaction do
    if obj.save
      @obj = obj
      after_save_hook(obj) if respond_to?(:after_save_hook, true)

      obj = @clazz.includes(eager_loaded_associations).find(obj.id) if eager_loaded_associations.present?
      @obj = obj

      includes = serializer_includes_for_action(:create)
      options = {}
      options[:include] = includes if includes.present?

      render_success(data: obj, serializer_options: options, status: :created)
    else
      render_error(errors: obj.errors.full_messages[0], status: :unprocessable_entity)
    end
  end
rescue ::Pundit::NotAuthorizedError
  raise
rescue Dscf::Core::FileUploadError => e
  render_error(errors: e.message, status: :unprocessable_entity)
rescue StandardError => e
  render_error(error: e.message)
end

#declineObject

Decline a pending product inclusion request



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'app/controllers/dscf/marketplace/product_inclusion_requests_controller.rb', line 70

def decline
  set_object
  authorize @obj, :decline?

  comment = params[:review_comment]
  raise ArgumentError, "Review comment is required for decline" if comment.blank?

  @obj.decline!(current_user, comment)
  create_notification(:rejection)

  render_success("product_inclusion_requests.success.decline", data: @obj)
rescue ArgumentError => e
  render_error(errors: e.message, status: :unprocessable_entity)
rescue StandardError => e
  render_error(errors: e.message, status: :unprocessable_entity)
end

#modifyObject

Request modification with a review comment



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/controllers/dscf/marketplace/product_inclusion_requests_controller.rb', line 52

def modify
  set_object
  authorize @obj, :modify?

  comment = params[:review_comment]
  raise ArgumentError, "Review comment is required for modification" if comment.blank?

  @obj.modify!(current_user, comment)
  create_notification(:modification)

  render_success("product_inclusion_requests.success.modify", data: @obj)
rescue ArgumentError => e
  render_error(errors: e.message, status: :unprocessable_entity)
rescue StandardError => e
  render_error(errors: e.message, status: :unprocessable_entity)
end