class UsersController < ApplicationController
  layout "authentication"
  def new
  	@user = User.new
  end

  def create
    firstname = {}
    lastname = {}
    @site_valid_locales.each do |locale|
      firstname[locale] = params[:first_name]
      lastname[locale] = params[:last_name]
    end
   
  	@user = User.new(user_params)
    @member = MemberProfile.new(email: params[:email], first_name_translations: firstname, last_name_translations: lastname)
  	if @user.save
      @member.save
      @user.update_attributes(member_profile_id: @member.id)
  		redirect_to users_confirmation_path
      @user.generate_confirmation_token
      url = "#{request.protocol}#{request.host_with_port}/#{locale.to_s}/users/confirm_user?token=#{@user.confirmation_token}"
      email = Email.new(:mail_to => @user.member_profile.email, :mail_subject => "Confirmation email for orbit signup.", :template => "email/user_confirmation_email.html.erb", :template_data => {"url" => url})
      email.deliver
  	else
  		render "new"
  	end
  end

  def confirmation
  end

  def confirm_user
    user = User.confirm_email(params[:token])
    
    redirect_to users_path(:user_id => user[:id])
    if user[:success].eql?("true")
     flash[:notice] = "You have confirmed successfully"
    else
      flash[:notice] = "Error in confirmation please try again." 
    end
  end

  def index
    if params[:user_id].nil?
      redirect_to "/users/sign_up"
    end
    @user = User.find(params[:user_id])
  end

  def form_page
    @user = User.find(params[:user_id])
    @member_profile = @user.member_profile
  end

  def basic_info_update
    @user = User.find(params[:id])
    member_profile = @user.member_profile
    if member_profile.update_attributes(p)
      redirect_to users_role_page_path(:user_id => @user.id.to_s)
    else
      render :action=> "form_page"
    end
  end

  def role_page
    @roles = Role.where(:disabled => false)
    @user_id = params[:user_id]
    @member_profile = User.find(@user_id).member_profile

  end

  def role_update
    user = User.find(params[:id])
    member_profile = user.member_profile
    if member_profile.update_attributes(basic_info_params)
      redirect_to "/sessions/new"
    else
      @roles = Role.where(:disabled => false)
      render :action => "role_page"
    end
  end

  def get_role_statuses
    @role = Role.find(params[:roleId])
    @statuses = @role.role_statuses
    render :layout => false
  end

  def check_availability
    response = {}
    case params[:type]
    when "user_id"
      response["success"] = User.where(:user_name => params[:value]).count > 0 ? false : true
    when "user_email"
      response["success"] = MemberProfile.where(:email => params[:value]).count > 0 ? false : true
    end
    render :json => response.to_json
  end

  private

  # Never trust parameters from the scary internet, only allow the white list through.
  def user_params
 	  params.require(:user).permit(:password, :password_confirmation, :user_name, :member_profile_id, :email, :first_name, :last_name)
  end

  def basic_info_params
    params.require(:member_profile).permit!
  end
end