42 lines
1.2 KiB
Ruby
42 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module ImportExport
|
|
module Project
|
|
module Sample
|
|
class RelationFactory < Project::RelationFactory
|
|
DATE_MODELS = %i[issues milestones].freeze
|
|
|
|
def initialize(date_calculator:, **args)
|
|
super(**args)
|
|
|
|
@date_calculator = date_calculator
|
|
end
|
|
|
|
private
|
|
|
|
def setup_models
|
|
super
|
|
|
|
# Override due date attributes in data hash for Sample Data templates
|
|
# Dates are moved by taking the closest one to average and moving that (and rest around it) to the date of import
|
|
override_date_attributes
|
|
end
|
|
|
|
def override_date_attributes
|
|
return unless DATE_MODELS.include?(@relation_name)
|
|
|
|
@relation_hash['start_date'] = calculate_by_closest_date(@relation_hash['start_date']&.to_time)
|
|
@relation_hash['due_date'] = calculate_by_closest_date(@relation_hash['due_date']&.to_time)
|
|
end
|
|
|
|
def calculate_by_closest_date(date)
|
|
return unless date
|
|
|
|
@date_calculator.calculate_by_closest_date_to_average(date)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|