Module: Gluttonberg::Membership::Import::ClassMethods

Defined in:
lib/gluttonberg/membership/import.rb

Instance Method Summary collapse

Instance Method Details

#contains_user?(user, list) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
56
# File 'lib/gluttonberg/membership/import.rb', line 51

def contains_user?(user , list)
  list.each do |record|
    return true if record.id == user.id || record.email == user.email
  end
  false
end

#importCSV(file_path, invite, group_ids) ⇒ Object

takes complete path to csv file. and returns successfull_users , failed_users and updated_users arrays that contains user objects if user exist with given email then update its information otherwise create a new user for it returns [successfull_users , failed_users , updated_users , ] if csv format is incorrect then it will return a string “CSV file format is invalid”



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
44
45
46
47
48
49
# File 'lib/gluttonberg/membership/import.rb', line 14

def importCSV(file_path , invite , group_ids )
  begin
    require 'csv'
    csv_table = CSV.read(file_path)
  rescue => e
    return "Please provide a valid CSV file with correct column names."
  end

  known_columns = PrivateMethods.find_known_columns(csv_table)
  other_columns = PrivateMethods.find_other_columns(csv_table)

  successfull_users = []
  failed_users = []
  updated_users = []

  if PrivateMethods.known_columns_valid?(known_columns)
    csv_table.each_with_index do |row , index |
      if index > 0 # ignore first row because its meta data row
         = PrivateMethods.read_data_row(row, known_columns, other_columns)

        #attach user to an group if its valid
        PrivateMethods.attach_user_to_group(, row, known_columns, other_columns, group_ids)

        user = where(:email => row[known_columns[:email]]).first
        if user.blank?
          PrivateMethods.create_member(, invite, row, successfull_users , failed_users , updated_users)
        else
          PrivateMethods.update_member(user, , successfull_users , failed_users , updated_users)
        end
      end # if csv row index > 0
    end #loop
  else
    return "Please provide a valid CSV file with correct column names"
  end #if
  [successfull_users , failed_users , updated_users ]
end