class HomeController < ApplicationController # layout "application", except: [:index, :show] 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() render "layouts/login_dashboard", layout: false end def show @login_form = LoginForm.new() @login_form.emp_id = params[:emp_id] render "layouts/login", layout: false 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 today = DateTime.now.strftime('%Y-%m-%d') @orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count() @sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count() @top_products = Sale.top_products(today) @hourly_sales = Sale.hourly_sales(today) # .group_by_hour(:created_at, :time_zone => 'Asia/Rangoon',format: '%I:%p') # .sum(:grand_total) @employee_sales = Sale.employee_sales(today).sum(:grand_total) @inventories = StockJournal.inventory_balances(today).sum(:balance) 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