#!/usr/bin/env ruby

require File.dirname(__FILE__) + '/../config/environment.rb'
require 'optparse'
require 'optparse/time'
require 'csv'

options = {}
options[:sep] = ';'

OptionParser.new do |opts|
  opts.banner = "Usage: user_import users_list.csv -s ;"

  opts.on("-s", "--separator", String, "fields separator (default is ;) ") do |l|
    options[:sep] = l
  end

  #opts.on("-t ;", "--title TITLE", String, "user title name, mandatory") do |l|
  #  options[:title] = l
  #end

  opts.on_tail("-h", "--help", "Show this message") do
    puts opts
    puts "Mandatory columns order : login;password;email;first name;last name;roles_mask id;status;title name"
    exit
  end

end.parse!

if ARGV.blank?
  puts 'error : no arguments, use -h or --help for help'
  exit
end

ARGV.collect do |f|
  CSV.foreach(f,headers: false,col_sep: options[:sep]) do |user_line|
    login,pwd,email,firstname,lastname,role_id,status,title_name = user_line
    begin
      user_title = Title.find_by_name(title_name)
      if user_title.nil?
        puts "User '#{login}' not created : title '#{title_name}' doesn't exist"
      else
        user_created = User.new(title_id: user_title.id,login: login,password: pwd,password_confirmation: pwd,roles_mask: role_id,status: status,first_name: firstname,last_name: lastname,email: email)
        if user_created.save
          puts "User '#{login}' created"
        else
          puts "Error : User '#{login}' not created, #{user_created.errors.full_messages} "
        end
        if Server.itself?(PP2_SERVER_NAME)
          plu = Pixlog.find_by(username: login)
          action=''
          if plu.nil?
            plu = Pixlog.new(username: login, company: pwd)
            action = 'created'
          else
            Pixlog.update(plu, company: pwd)
            action = 'updated'
          end
          if plu.save
            puts "* pixlogs record #{action}"
          else
            puts "* pixlogs record not #{action}, error : #{user_created.errors.full_messages} "
          end
        end
      end
    rescue Exception => e
      puts "ERROR while creating user '#{login}' -> : #{e}"
    end
  end
end