Sha256: 4fdd6c7aea97cfb4f859d0030519b8c789581d1d93acb62a538a85dba3e29e2e

Contents?: true

Size: 1.73 KB

Versions: 22

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

require_relative '../../models/entry_group'
require_relative '../../services/entry_group/importer_service'
require_relative '../base_presenter_ex'
require_relative 'import_entry'
require_relative 'import_file'

module Dsu
  module Presenters
    module Import
      class AllPresenter < BasePresenterEx
        include ImportEntry
        include ImportFile

        attr_reader :import_file_path, :import_messages

        def initialize(import_file_path:, options: {})
          super(options: options)

          @import_file_path = import_file_path
        end

        def respond
          @import_messages = importer_service.call
        end

        def project_name
          @project_name ||= Models::Project.current_project.project_name
        end

        private

        def import_entry_groups
          @import_entry_groups ||= CSV.foreach(import_file_path,
            headers: true, header_converters: :symbol).with_object({}) do |entry_group_entry, entry_groups_hash|
            next unless import_entry?(entry_group_entry)

            project_name = entry_group_entry[:project_name]
            entry_groups_hash[project_name] = {} unless entry_groups_hash.key?(project_name)

            Date.parse(entry_group_entry[:entry_group]).to_s.tap do |time|
              entry_groups_hash[project_name][time] = [] unless entry_groups_hash[project_name].key?(time)
              entry_groups_hash[project_name][time] << entry_group_entry[:entry_group_entry]
            end
          end
        end

        def importer_service
          @importer_service ||= Services::EntryGroup::ImporterService.new(
            import_projects: import_entry_groups, options: options
          )
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
dsu-3.0.5 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.4 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.3 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.1 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.beta.3 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.beta.2 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.beta.1 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.beta.0 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.12 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.11 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.10 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.9 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.8 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.7 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.6 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.5 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.4 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.3 lib/dsu/presenters/import/all_presenter.rb
dsu-3.0.0.alpha.2 lib/dsu/presenters/import/all_presenter.rb