trabajo-afectivo/lib/sequencer/unit/import/exchange/folder_contacts/total.rb

49 lines
1.2 KiB
Ruby
Raw Normal View History

class Sequencer
class Unit
module Import
module Exchange
module FolderContacts
class Total < Sequencer::Unit::Base
include ::Sequencer::Unit::Exchange::Folders::Mixin::Folder
include ::Sequencer::Unit::Import::Common::Model::Statistics::Mixin::Common
uses :ews_folder_ids
provides :statistics_diff
def process
state.provide(:statistics_diff, diff)
end
private
def diff
result = empty_diff.merge(
folders: {},
)
folder_total_map.each do |display_path, total|
result[:folders][display_path] = empty_diff.merge(
total: total
)
result[:total] += total
end
result
end
def folder_total_map
ews_folder_ids.collect do |folder_id|
folder = ews_folder.find(folder_id)
display_path = ews_folder.display_path(folder)
[display_path, folder.total_count]
end.to_h
end
end
end
end
end
end
end