module Admin
  class UsersController < Admin::ApplicationController
    skip_before_filter :setup_administrator!, only: :test_login
    skip_authorize_resource only: :test_login
    skip_before_filter :set_locale, only: :test_login
    # GET /users
    # GET /users.json
    def index
      @users = User.all

      respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @users }
      end
    end

    # GET /users/1
    # GET /users/1.json
    def show
      @user = User.find(params[:id])

      respond_to do |format|
        format.html # show.html.erb
        format.json { render json: @user }
      end
    end


    def test_login
      if Rails.env.test? and user = User.find_by_email(params[:email])
        sign_in user
        render layout: false
      else
        head :not_found
      end
    end

    # GET /users/new
    # GET /users/new.json
    def new
      @user = User.new

      respond_to do |format|
        format.html # new.html.erb
        format.json { render json: @user }
      end
    end

    # GET /users/1/edit
    def edit
      @user = User.find(params[:id])
    end

    # POST /users
    # POST /users.json
    def create
      @user = User.new(user_params)

      respond_to do |format|
        if @user.save
          format.html { redirect_to [:admin, @user], notice: t('action.create.successfull', model: User.model_name.human) }
          format.json { render json: @user, status: :created, location: @user }
        else
          format.html { render action: "new" }
          format.json { render json: @user.errors, status: :unprocessable_entity }
        end
      end
    end

    # PUT /users/1
    # PUT /users/1.json
    def update
      @user = User.find(params[:id])

      respond_to do |format|
        if @user.update_attributes(user_params)
          format.html { redirect_to [:admin, @user], notice: t('action.update.successfull', model: User.model_name.human) }
          format.json { head :no_content }
        else
          format.html { render action: "edit" }
          format.json { render json: @user.errors, status: :unprocessable_entity }
        end
      end
    end

    # DELETE /users/1
    # DELETE /users/1.json
    def destroy
      @user = User.find(params[:id])
      @user.destroy

      respond_to do |format|
        format.html { redirect_to admin_users_url, notice: t('action.destroy.successfull', model: User.model_name.human) }
        format.json { head :no_content }
      end
    end

    private

    def user_params
      params.require(:user).permit!
    end
  end
end
