Class: Dscf::Marketplace::Supplier

Inherits:
ApplicationRecord show all
Includes:
Core::ReviewableModel
Defined in:
app/models/dscf/marketplace/supplier.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ransackable_associations(_auth_object = nil) ⇒ Object



35
36
37
# File 'app/models/dscf/marketplace/supplier.rb', line 35

def self.ransackable_associations(_auth_object = nil)
  %w[business supplier_products addresses reviews]
end

.ransackable_attributes(_auth_object = nil) ⇒ Object



31
32
33
# File 'app/models/dscf/marketplace/supplier.rb', line 31

def self.ransackable_attributes(_auth_object = nil)
  %w[id name code address contact_phone business_type business_id created_at updated_at]
end

Instance Method Details

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



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

def approve!(reviewer, reason = nil)
  Dscf::Core::Review.create!(
    reviewable: self,
    context: :default,
    status: "approved",
    reviewed_by: reviewer,
    reviewed_at: Time.current,
    feedback: reason.present? ? {reason: reason} : nil
  )
end

#document_urlsObject



80
81
82
83
84
85
86
# File 'app/models/dscf/marketplace/supplier.rb', line 80

def document_urls
  return [] unless documents.attached?

  documents.map do |doc|
    Rails.application.routes.url_helpers.rails_blob_url(doc, only_path: true)
  end
end

#modify!(reviewer, reason) ⇒ Object

Raises:

  • (ArgumentError)


63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/models/dscf/marketplace/supplier.rb', line 63

def modify!(reviewer, reason)
  raise ArgumentError, "Reason is required for modification request" if reason.blank?

  Dscf::Core::Review.create!(
    reviewable: self,
    context: :default,
    status: "modify",
    reviewed_by: reviewer,
    reviewed_at: Time.current,
    feedback: {reason: reason}
  )
end

#reject!(reviewer, reason) ⇒ Object

Raises:

  • (ArgumentError)


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

def reject!(reviewer, reason)
  raise ArgumentError, "Reason is required for rejection" if reason.blank?

  Dscf::Core::Review.create!(
    reviewable: self,
    context: :default,
    status: "rejected",
    reviewed_by: reviewer,
    reviewed_at: Time.current,
    feedback: {reason: reason}
  )
end

#review_status(context = :default) ⇒ Object



76
77
78
# File 'app/models/dscf/marketplace/supplier.rb', line 76

def review_status(context = :default)
  current_status_for(context)
end