Class: Decidim::Proposals::ProposalType

Inherits:
Api::Types::BaseObject show all
Includes:
ActiveSupport::NumberHelper
Defined in:
decidim-proposals/lib/decidim/api/proposal_type.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Api::Types::BaseObject

allowed_to?, determine_subject_name, local_admin_context, local_context, permission_chain

Class Method Details

.authorized?(object, context) ⇒ Boolean

Returns:

  • (Boolean)


91
92
93
94
95
96
97
98
99
100
101
102
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 91

def self.authorized?(object, context)
  context[:proposal] = object

  chain = [
    allowed_to?(:read, :proposal, object, context),
    object.published?
  ].all?

  super && chain
rescue Decidim::PermissionAction::PermissionNotSetError
  false
end

Instance Method Details

#answerObject



56
57
58
59
60
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 56

def answer
  return unless object.published_state?

  object.answer
end

#answered_atObject



50
51
52
53
54
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 50

def answered_at
  return unless object.published_state?

  object.answered_at
end

#costObject



80
81
82
83
84
85
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 80

def cost
  return unless object.published_state?
  return unless proposal_has_costs? && current_settings.answers_with_costs?

  number_to_currency(object.cost, unit: Decidim.currency_unit)
end

#cost_reportObject



66
67
68
69
70
71
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 66

def cost_report
  return unless object.published_state?
  return unless proposal_has_costs? && current_settings.answers_with_costs?

  object.cost_report
end

#execution_periodObject



73
74
75
76
77
78
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 73

def execution_period
  return unless object.published_state?
  return unless proposal_has_costs? && current_settings.answers_with_costs?

  object.execution_period
end

#meetingObject



62
63
64
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 62

def meeting
  object.authors.first if object.official_meeting?
end

#urlObject



46
47
48
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 46

def url
  Decidim::ResourceLocatorPresenter.new(object).url
end

#vote_countObject



87
88
89
# File 'decidim-proposals/lib/decidim/api/proposal_type.rb', line 87

def vote_count
  object.proposal_votes_count unless current_settings.votes_hidden?
end