107 lines
3.1 KiB
Ruby
107 lines
3.1 KiB
Ruby
class HomeController < ApplicationController
|
|
skip_before_action :authenticate, only: [:index, :show, :create, :update, :destroy]
|
|
|
|
def index
|
|
@employees = Employee.all_emp_except_waiter.order("name asc")
|
|
@login_form = LoginForm.new()
|
|
end
|
|
|
|
def show
|
|
@login_form = LoginForm.new()
|
|
@login_form.emp_id = params[:emp_id]
|
|
end
|
|
|
|
def update
|
|
@login_form = LoginForm.new()
|
|
@login_form.emp_id = params[:emp_id]
|
|
@login_form.password = params[:login_form][:password]
|
|
@employee = Employee.login(@login_form.emp_id, @login_form.password)
|
|
|
|
if @employee != nil
|
|
session[:session_token] = @employee.token_session
|
|
route_by_role(@employee)
|
|
else
|
|
flash[:notice] ="Invalid PIN for Employee. Please try again!"
|
|
render :show
|
|
end
|
|
end
|
|
|
|
def create
|
|
@login_form = LoginForm.new()
|
|
@login_form.emp_id = params[:login_form][:emp_id]
|
|
@login_form.password = params[:login_form][:password]
|
|
@employee = Employee.login(@login_form.emp_id, @login_form.password)
|
|
|
|
if @employee != nil
|
|
if @employee.role == "administrator"
|
|
session[:session_token] = @employee.token_session
|
|
redirect_to dashboard_path
|
|
elsif @employee.role == "cashier"
|
|
session[:session_token] = @employee.token_session
|
|
route_by_role(@employee)
|
|
elsif @employee.role == "manager"
|
|
session[:session_token] = @employee.token_session
|
|
redirect_to dashboard_path
|
|
elsif @employee.role == "supervisour"
|
|
session[:session_token] = @employee.token_session
|
|
redirect_to origami_root_path
|
|
elsif @employee.role == "account"
|
|
session[:session_token] = @employee.token_session
|
|
redirect_to reports_dailysale_index_path
|
|
else
|
|
render :index
|
|
end
|
|
else
|
|
redirect_to origami_root_path, :notice => "Username and Password dosn't match!"
|
|
end
|
|
|
|
end
|
|
|
|
def dashboard
|
|
@shop = Shop.first
|
|
end
|
|
|
|
def destroy
|
|
# clear in employee session
|
|
Employee.logout(session[:session_token])
|
|
session[:session_token] = nil
|
|
redirect_to root_path
|
|
end
|
|
|
|
private
|
|
# Never trust parameters from the scary internet, only allow the white list through.
|
|
def settings_home_params
|
|
params.require(:login_form).permit(:emp_id, :password)
|
|
end
|
|
|
|
def route_by_role(employee)
|
|
if employee.role == "administrator"
|
|
# redirect_to dashboard_path
|
|
shift = ShiftSale.current_open_shift(employee.id)
|
|
if !shift.nil?
|
|
redirect_to origami_root_path
|
|
else
|
|
redirect_to dashboard_path
|
|
end
|
|
elsif employee.role == "cashier"
|
|
#check if cashier has existing open cashier
|
|
shift = ShiftSale.current_open_shift(employee.id)
|
|
if !shift.nil?
|
|
redirect_to origami_root_path
|
|
else
|
|
redirect_to new_origami_shift_path
|
|
end
|
|
elsif employee.role == "manager"
|
|
redirect_to dashboard_path
|
|
elsif employee.role == "waiter"
|
|
redirect_to oqs_root_path
|
|
elsif employee.role == "crm"
|
|
redirect_to crm_root_path
|
|
elsif @employee.role == "supervisour"
|
|
redirect_to origami_root_path
|
|
elsif @employee.role == "account"
|
|
redirect_to reports_dailysale_index_path
|
|
end
|
|
end
|
|
end
|