Class: Dscf::Marketplace::ProductInclusionRequest

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
app/models/dscf/marketplace/product_inclusion_request.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ransackable_associations(_auth_object = nil) ⇒ Object



23
24
25
# File 'app/models/dscf/marketplace/product_inclusion_request.rb', line 23

def self.ransackable_associations(_auth_object = nil)
  %w[supplier requested_by reviewer product_images_attachments product_images_blobs]
end

.ransackable_attributes(_auth_object = nil) ⇒ Object



18
19
20
21
# File 'app/models/dscf/marketplace/product_inclusion_request.rb', line 18

def self.ransackable_attributes(_auth_object = nil)
  %w[id supplier_id product_name product_description unit_of_measure status
     requested_by_id reviewer_id review_comment reviewed_at created_at updated_at]
end

Instance Method Details

#approve!(reviewer, comment = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'app/models/dscf/marketplace/product_inclusion_request.rb', line 27

def approve!(reviewer, comment = nil)
  raise "Cannot approve a request that is #{status}" unless pending?

  update!(
    reviewer: reviewer,
    reviewed_at: Time.current,
    review_comment: comment,
    status: :approved
  )
end

#decline!(reviewer, comment) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'app/models/dscf/marketplace/product_inclusion_request.rb', line 50

def decline!(reviewer, comment)
  raise "Cannot decline a request that is #{status}" unless pending?
  raise "Comment is required for decline" if comment.blank?

  update!(
    reviewer: reviewer,
    reviewed_at: Time.current,
    review_comment: comment,
    status: :declined
  )
end

#modify!(reviewer, comment) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/dscf/marketplace/product_inclusion_request.rb', line 38

def modify!(reviewer, comment)
  raise "Cannot modify a request that is #{status}" unless pending?
  raise "Comment is required for modification" if comment.blank?

  update!(
    reviewer: reviewer,
    reviewed_at: Time.current,
    review_comment: comment,
    status: :modified
  )
end