Class: Dscf::Banking::Application

Inherits:
ApplicationRecord show all
Includes:
Auditable, Core::ReviewableModel
Defined in:
app/models/dscf/banking/application.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ransackable_associations(auth_object = nil) ⇒ Object



61
62
63
# File 'app/models/dscf/banking/application.rb', line 61

def self.ransackable_associations(auth_object = nil)
  %w[user virtual_account_product account reviews documents]
end

.ransackable_attributes(auth_object = nil) ⇒ Object



57
58
59
# File 'app/models/dscf/banking/application.rb', line 57

def self.ransackable_attributes(auth_object = nil)
  %w[id application_number status submitted_at completed_at created_at updated_at]
end

Instance Method Details

#approve!(approved_by = nil) ⇒ Object



27
28
29
# File 'app/models/dscf/banking/application.rb', line 27

def approve!(approved_by = nil)
  update!(status: :approved, completed_at: Time.current)
end

#can_be_approved_via_api?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/models/dscf/banking/application.rb', line 35

def can_be_approved_via_api?
   || status_under_review?
end

#can_be_rejected_via_api?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/models/dscf/banking/application.rb', line 39

def can_be_rejected_via_api?
   || status_under_review?
end

#has_account?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'app/models/dscf/banking/application.rb', line 43

def has_account?
  Account.exists?(application: self)
end

#reject!(reason, rejected_by = nil) ⇒ Object



31
32
33
# File 'app/models/dscf/banking/application.rb', line 31

def reject!(reason, rejected_by = nil)
  update!(status: :rejected, rejection_reason: reason, completed_at: Time.current)
end

#review_statusObject



47
48
49
50
51
52
53
54
55
# File 'app/models/dscf/banking/application.rb', line 47

def review_status
  latest_review = reviews.where(context: "default").order(created_at: :desc).first
  review_st = latest_review&.status || status

  # Sync application status with review status
  sync_status_with_review(review_st) if latest_review

  review_st
end