class VisitorCompareLoginWorker
  	include Sidekiq::Worker
	def perform(vd_id)
		puts "eeeeeeeeeeeeeeeeeeeeeeeeeeeee"
	  	rt = RouterLocation.find vd_id rescue return
   		vd = rt.visitor_details.includes(:user_details)
   		vd.each do |y|
	  		ud = y.user_details
		  	hs = {}
		  	device_id = y.device_id.gsub!(":","-")
		  	created_at = ud.blank? ? "" : ud.last.created_at
		  	condition  = date_range_cond(device_id,created_at) unless created_at.blank?
		  	fb_lists = OwnerFacebookFriend.fetch_user_details(condition) rescue []
	 		tw_lists = TwitterAccess.fetch_user_details(condition) rescue []
	 		email_lists = OfflineAccessCode.fetch_user_details(condition) rescue []
		 	hs["facebook"] = facebook(fb_lists) unless fb_lists.blank?
		 	hs["twitter"] = twitter(tw_lists) unless tw_lists.blank?
		 	hs["email"] = emails(email_lists) unless email_lists.blank?
	  		y.user_details.create(hs) unless hs.blank?
		end
	end

	def date_range_cond(device_id,created_at)
        {created_at: {:$gte => created_at, :$lte => Time.now.utc}, device_id: device_id} unless created_at.blank?
        {device_id: device_id} if created_at.blank?
    end
	# def date_range_cond(device_id,created_at)
	# 	{:$gte => created_at, :$lte => Time.now.utc}
	# end
    def facebook(fb_lists)
	 	email=[];birthday=[];sex=[];ids=[];created_at=""
	 	(fb_lists || []).each do |x|
	 		ids.push(x.id)
	 		email.push(x.email)
	 		sex.push(x.sex)
	 		birthday.push(x.birthday)
	 	end
	 	created_at =  fb_lists.last.created_at unless fb_lists.blank?
	 	return {"email"=>email,"sex"=>sex,"birthday"=>birthday,"ids"=>ids, "created_at"=>created_at}
	end

	def twitter(tw_lists)
		ids=[];created_at=""
		(tw_lists || []).each do |x|
			ids.push(x.id)
		end
		created_at = tw_lists.last.created_at unless tw_lists.blank?
		return {"ids"=>ids, "created_at"=>created_at}
	end

	def emails(email_lists)
		email=[];birthday=[];sex=[];ids=[];created_at="";access_type=[]
		(email_lists || []).each do |x|
			ids.push(x.id)
			email.push(x.access_code)
			sex.push(x.gender)
			birthday.push(x.age)
			access_type.push(x.access_type)
		end
		created_at =  email_lists.last.created_at unless email_lists.blank?
		return {"email"=>email,"sex"=>sex,"birthday"=>birthday,"ids"=>ids, "created_at"=>created_at, "access_type"=>access_type}
	end
end