Class: Decidim::Accountability::Admin::ImportComponentForm

Inherits:
Form show all
Includes:
HasTaxonomyFormAttributes, TranslatableAttributes
Defined in:
decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb

Overview

A form object to be used when admin users want to import results from another component into Accountability component.

Constant Summary

Constants included from Decidim::AttributeObject::TypeMap

Decidim::AttributeObject::TypeMap::Boolean, Decidim::AttributeObject::TypeMap::Decimal

Instance Attribute Summary

Attributes inherited from Decidim::AttributeObject::Form

#context

Instance Method Summary collapse

Methods included from TranslatableAttributes

#attachment?, #default_locale?

Methods inherited from Decidim::AttributeObject::Form

ensure_hash, from_model, from_params, hash_from, infer_model_name, #map_model, mimic, mimicked_model_name, model_name, #persisted?, #to_key, #to_model, #to_param, #valid?, #with_context

Methods included from Decidim::AttributeObject::Model

#[], #[]=, #attributes, #attributes_with_values, #initialize, #to_h

Instance Method Details

#filtered_itemsObject



40
41
42
43
44
45
46
47
48
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 40

def filtered_items
  if origin_component.manifest_name == "budgets"
    filtered_budget_projects
  elsif origin_component.manifest_name == "proposals"
    filtered_proposals
  else
    raise "Invalid component"
  end
end

#origin_componentObject



18
19
20
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 18

def origin_component
  @origin_component ||= origin_components.find_by(id: origin_component_id)
end

#origin_componentsObject



22
23
24
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 22

def origin_components
  @origin_components ||= current_participatory_space.components.where(manifest_name: %w(budgets proposals))
end

#origin_components_collectionObject



26
27
28
29
30
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 26

def origin_components_collection
  origin_components.map do |component|
    [component.name[I18n.locale.to_s], component.id]
  end
end

#project_already_copied?(original_project) ⇒ Boolean

Returns:



50
51
52
53
54
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 50

def project_already_copied?(original_project)
  original_project.linked_resources(:results, "included_projects").any? do |result|
    result.component == current_component
  end
end

#proposal_already_copied?(original_proposal) ⇒ Boolean

Returns:



56
57
58
59
60
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 56

def proposal_already_copied?(original_proposal)
  original_proposal.linked_resources(:results, "included_proposals").any? do |result|
    result.component == current_component
  end
end

#proposal_states_collectionObject



32
33
34
35
36
# File 'decidim-accountability/app/forms/decidim/accountability/admin/import_component_form.rb', line 32

def proposal_states_collection
  Decidim::Proposals::ProposalState.where(component: origin_component).map do |state|
    [translated_attribute(state.title), state.id]
  end
end