Class: Decidim::Accountability::Admin::ResultImportProjectsForm

Inherits:
Form show all
Defined in:
decidim-accountability/app/forms/decidim/accountability/admin/result_import_projects_form.rb

Overview

A form object to be used when admin users want to import a collection of projects 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 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

#origin_componentObject



16
17
18
# File 'decidim-accountability/app/forms/decidim/accountability/admin/result_import_projects_form.rb', line 16

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

#origin_componentsObject



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

def origin_components
  @budgets_component ||= current_participatory_space.components.where(manifest_name: "budgets")
end

#origin_components_collectionObject



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

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:



37
38
39
40
41
# File 'decidim-accountability/app/forms/decidim/accountability/admin/result_import_projects_form.rb', line 37

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

#selected_projects_count(component) ⇒ Object



30
31
32
33
34
35
# File 'decidim-accountability/app/forms/decidim/accountability/admin/result_import_projects_form.rb', line 30

def selected_projects_count(component)
  projects = Decidim::Budgets::Project.joins(:budget).selected.where(
    budget: { component: }
  )
  projects.reject { |project| project_already_copied?(project) }.count
end