Class: ImportCsv::PreprocessMilestonesService
- Inherits:
-
BaseService
- Object
- BaseService
- ImportCsv::PreprocessMilestonesService
- Defined in:
- app/services/import_csv/preprocess_milestones_service.rb
Constant Summary
Constants inherited from BaseService
Instance Attribute Summary collapse
-
#milestone_errors ⇒ Object
readonly
Returns the value of attribute milestone_errors.
-
#project ⇒ Object
readonly
Returns the value of attribute project.
-
#provided_titles ⇒ Object
readonly
Returns the value of attribute provided_titles.
-
#results ⇒ Object
readonly
Returns the value of attribute results.
-
#user ⇒ Object
readonly
Returns the value of attribute user.
Instance Method Summary collapse
- #execute ⇒ Object
- #find_milestones_by_titles ⇒ Object
-
#initialize(user, project, provided_titles) ⇒ PreprocessMilestonesService
constructor
A new instance of PreprocessMilestonesService.
Methods inherited from BaseService
Constructor Details
#initialize(user, project, provided_titles) ⇒ PreprocessMilestonesService
Returns a new instance of PreprocessMilestonesService.
5 6 7 8 9 10 11 12 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 5 def initialize(user, project, provided_titles) @user = user @project = project @provided_titles = provided_titles @results = { success: 0, errors: nil } @milestone_errors = { missing: { header: {}, titles: [] } } end |
Instance Attribute Details
#milestone_errors ⇒ Object (readonly)
Returns the value of attribute milestone_errors.
14 15 16 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 14 def milestone_errors @milestone_errors end |
#project ⇒ Object (readonly)
Returns the value of attribute project.
14 15 16 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 14 def project @project end |
#provided_titles ⇒ Object (readonly)
Returns the value of attribute provided_titles.
14 15 16 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 14 def provided_titles @provided_titles end |
#results ⇒ Object (readonly)
Returns the value of attribute results.
14 15 16 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 14 def results @results end |
#user ⇒ Object (readonly)
Returns the value of attribute user.
14 15 16 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 14 def user @user end |
Instance Method Details
#execute ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 16 def execute available_milestones = find_milestones_by_titles return ServiceResponse.success if provided_titles.sort == available_milestones.sort milestone_errors[:missing][:header] = 'Milestone' milestone_errors[:missing][:titles] = provided_titles.difference(available_milestones) || [] ServiceResponse.error(message: "", payload: milestone_errors) end |
#find_milestones_by_titles ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'app/services/import_csv/preprocess_milestones_service.rb', line 25 def find_milestones_by_titles # Find if these milestones exist in the project or its group and group ancestors finder_params = { project_ids: [project.id], title: provided_titles } finder_params[:group_ids] = project.group.self_and_ancestors.select(:id) if project.group MilestonesFinder.new(finder_params).execute.map(&:title).uniq end |