Class: Dscf::Marketplace::Supplier

Inherits:
ApplicationRecord show all
Includes:
Core::ReviewableModel, AttachmentUrls
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



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

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

.ransackable_attributes(_auth_object = nil) ⇒ Object



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

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



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

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



93
94
95
96
97
# File 'app/models/dscf/marketplace/supplier.rb', line 93

def document_urls
  return [] unless documents.attached?

  documents.map { |doc| attachment_url_for(doc) }
end

#modify!(reviewer, reason) ⇒ Object

Raises:

  • (ArgumentError)


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

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)


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

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

#resubmit!Object

Owner resubmission after a modification request: records a fresh pending review (no reviewer — this is a submission, not an admin review), which moves current_status_for back to "pending" for re-review.



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

def resubmit!
  Dscf::Core::Review.create!(
    reviewable: self,
    context: :default,
    status: "pending",
    reviewed_at: Time.current
  )
end

#review_status(context = :default) ⇒ Object



89
90
91
# File 'app/models/dscf/marketplace/supplier.rb', line 89

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