Class: Eco::API::UseCases::DefaultCases::ToCsvCase

Inherits:
Common::Loaders::UseCase show all
Defined in:
lib/eco/api/usecases/default_cases/to_csv_case.rb

Instance Method Summary collapse

Methods inherited from Common::Loaders::UseCase

#initialize, type, #type

Methods inherited from Common::BaseLoader

<=>, created_at, #initialize, #name, name_only_once!, set_created_at!

Methods included from Common::ClassHelpers

#class_resolver, #descendants, #descendants?, #new_class, #resolve_class, #to_constant

Constructor Details

This class inherits a constructor from Eco::API::Common::Loaders::UseCase

Instance Method Details

#main(people, session, options, usecase) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/eco/api/usecases/default_cases/to_csv_case.rb', line 5

def main(people, session, options, usecase)
  unless people && !people.empty?
    session.logger.warn("No source people to create the file... aborting!")
    return false
  end

  unless file = options[:file] || options.dig(:export, :file, :name)
    session.logger.error("Destination file not specified")
    return false
  end

  session.logger.info("going to create file: #{file}")
  CSV.open(file, "w") do |csv|
    deps   = {"supervisor_id" => {people: people}}
    entry  = session.new_entry(people.first, dependencies: deps)
    header = entry.external_entry.keys

    if options.dig(:nice_header) || options.dig(:export, :options, :nice_header)
      name_maps = session.schema.fields_by_alt_id.transform_values do |fld|
        fld.name
      end.merge({
        "policy_group_ids" => "User Group(s)",
        "email"            => "Email",
        "name"             => "Name",
        "supervisor_id"    => "Manager ID",
        "filter_tags"      => "Locations",
        "default_tag"      => "Default Location",
        "id"               => "ecoPortal ID"
      })
      header = header.map {|name| name_maps[name] ? name_maps[name] : name}
    end

    csv << header
    people.each do |person|
      csv << session.new_entry(person, dependencies: deps).external_entry.values
    end
  end
  exit(0)
end