diff --git a/app/controllers/api/restaurant/rooms_controller.rb b/app/controllers/api/restaurant/rooms_controller.rb index 9c5108be..f9c9eb82 100644 --- a/app/controllers/api/restaurant/rooms_controller.rb +++ b/app/controllers/api/restaurant/rooms_controller.rb @@ -1,6 +1,8 @@ class Api::Restaurant::RoomsController < ActionController::API + before_action :set_room, only: [:show] + def index - render json: SeatTable.order("order_by") + render json: Room.active.order("order_by") end # Description @@ -11,11 +13,15 @@ class Api::Restaurant::RoomsController < ActionController::API end - #Input Params - # table_id: table_id - # Output - # status: error | success, error_message: - def update + def bill + end + def move + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_room + @table = Room.find(params[:id]) end end diff --git a/app/controllers/api/restaurant/seatings_controller.rb b/app/controllers/api/restaurant/seatings_controller.rb index e1bce119..bef5b5c2 100644 --- a/app/controllers/api/restaurant/seatings_controller.rb +++ b/app/controllers/api/restaurant/seatings_controller.rb @@ -1,6 +1,8 @@ class Api::Restaurant::SeatingsController < ActionController::API + before_action :set_table, only: [:show] + def index - render json: Zone.order("order_by") + render json: Table.active.order("order_by") end # Description @@ -8,14 +10,19 @@ class Api::Restaurant::SeatingsController < ActionController::API # Output # status: {available, cleaning, occupied, reserved}, order_id : def show - - end - - #Input Params - # table_id: table_id - # Output - # status: error | success, error_message: - def update end + + def bill + end + + def move + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_table + @table = Table.find(params[:id]) + end + end diff --git a/app/controllers/api/restaurant/zones_controller.rb b/app/controllers/api/restaurant/zones_controller.rb index e96a8ff2..5349df94 100644 --- a/app/controllers/api/restaurant/zones_controller.rb +++ b/app/controllers/api/restaurant/zones_controller.rb @@ -1,6 +1,7 @@ class Api::Restaurant::ZonesController < ActionController::API def index - render json: Zone.where("is_active = true") + render json: Zone.includes([:tables, :rooms]).where("is_active = true") end + end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ddbcca66..cfdf857a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,4 +1,4 @@ -JSONclass ApplicationController < ActionController::Base +class ApplicationController < ActionController::Base #before_action :check_installation protect_from_forgery with: :exception diff --git a/app/controllers/settings/employees_controller.rb b/app/controllers/settings/employees_controller.rb index e44517a5..31e93d97 100644 --- a/app/controllers/settings/employees_controller.rb +++ b/app/controllers/settings/employees_controller.rb @@ -28,11 +28,9 @@ class Settings::EmployeesController < ApplicationController respond_to do |format| if @employee.save - format.html { redirect_to @employee, notice: 'Employee was successfully created.' } - format.json { render :show, status: :created, location: @employee } + format.html { redirect_to settings_employees_path, notice: 'Employee was successfully created.' } else format.html { render :new } - format.json { render json: @employee.errors, status: :unprocessable_entity } end end end @@ -42,11 +40,9 @@ class Settings::EmployeesController < ApplicationController def update respond_to do |format| if @employee.update(employee_params) - format.html { redirect_to @employee, notice: 'Employee was successfully updated.' } - format.json { render :show, status: :ok, location: @employee } + format.html { redirect_to settings_employee_path(@employee), notice: 'Employee was successfully updated.' } else format.html { render :edit } - format.json { render json: @employee.errors, status: :unprocessable_entity } end end end @@ -56,8 +52,7 @@ class Settings::EmployeesController < ApplicationController def destroy @employee.destroy respond_to do |format| - format.html { redirect_to employees_url, notice: 'Employee was successfully destroyed.' } - format.json { head :no_content } + format.html { redirect_to settings_employees_url, notice: 'Employee was successfully destroyed.' } end end @@ -69,6 +64,6 @@ class Settings::EmployeesController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def employee_params - params.require(:employee).permit(:name, :role, :password) + params.require(:employee).permit(:name, :role, :emp_id, :password) end end diff --git a/app/helpers/employees_helper.rb b/app/helpers/employees_helper.rb deleted file mode 100644 index 2455a971..00000000 --- a/app/helpers/employees_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module EmployeesHelper -end diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb deleted file mode 100644 index 23de56ac..00000000 --- a/app/helpers/home_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module HomeHelper -end diff --git a/app/helpers/install_helper.rb b/app/helpers/install_helper.rb deleted file mode 100644 index 89b1f445..00000000 --- a/app/helpers/install_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module InstallHelper -end diff --git a/app/models/booking.rb b/app/models/booking.rb index de3aa78b..c6a6452e 100644 --- a/app/models/booking.rb +++ b/app/models/booking.rb @@ -1,7 +1,8 @@ class Booking < ApplicationRecord - belongs_to :dining_facility + belongs_to :dining_facility, :optional => true belongs_to :sale, :optional => true + has_many :booking_orders end diff --git a/app/models/booking_order.rb b/app/models/booking_order.rb new file mode 100644 index 00000000..c0883967 --- /dev/null +++ b/app/models/booking_order.rb @@ -0,0 +1,4 @@ +class BookingOrder < ApplicationRecord + belongs_to :booking + belongs_to :order +end diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index dfcc53f1..b4cd09c4 100644 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -1,3 +1,6 @@ class DiningFacility < ApplicationRecord belongs_to :zone + + scope :active, -> {where(is_active: true)} + end diff --git a/app/models/employee.rb b/app/models/employee.rb index 50cb7a22..7f7fc776 100644 --- a/app/models/employee.rb +++ b/app/models/employee.rb @@ -1,17 +1,55 @@ class Employee < ApplicationRecord - include BCrypt + has_secure_password - #attr_accessor :password - - validates_presence_of :name, :role, :password + validates_presence_of :name, :role + validates_presence_of :password, :on => [:create] + validates :emp_id, uniqueness: true, numericality: true, length: {in: 1..4}, allow_blank: true + validates :password, numericality: true, length: {in: 3..9}, allow_blank: true - def password - @password ||= Password.new(password_hash) + def self.login(emp_id, password) + user = Employee.find_by_emp_id(emp_id).authenticate(password) + + Rails.logger.debug user + + if (user) + user.generate_token + user.session_expiry = DateTime.now.utc + 30.minutes + user.session_last_login = DateTime.now.utc + user.save + + return user + end + return nil + end - def password=(new_password) - @password = Password.create(new_password) - self.encrypted_access_code = @password + def self.authenticate_by_token(session_token) + user = Employee.find_by_token_session(session_token) + if user && user.session_expiry.utc > DateTime.now.utc + #Extend the login time each time authenticatation take place + user.session_expiry = DateTime.now.utc + 30.minutes + user.save + return true + else + return false + end end + + def self.logout(session_token) + user = Employee.find_by_token_session(session_token) + if user + user.token_session = nil + user.session_expiry = nil + user.save + end + end + + def generate_token + update_column :token_session, SecureRandom.hex(10) + rescue ActiveRecord::RecordNotUnique + retry + end + + end diff --git a/app/models/room_booking_order.rb b/app/models/room_booking_order.rb deleted file mode 100644 index 61ca3d18..00000000 --- a/app/models/room_booking_order.rb +++ /dev/null @@ -1,4 +0,0 @@ -class RoomBookingOrder < ApplicationRecord - belongs_to :room_booking - belongs_to :order -end diff --git a/app/models/table_booking_order.rb b/app/models/table_booking_order.rb deleted file mode 100644 index 0a9294b8..00000000 --- a/app/models/table_booking_order.rb +++ /dev/null @@ -1,4 +0,0 @@ -class TableBookingOrder < ApplicationRecord - belongs_to :table_booking - belongs_to :order -end diff --git a/app/views/settings/employees/_employee.json.jbuilder b/app/views/settings/employees/_employee.json.jbuilder deleted file mode 100644 index c185493c..00000000 --- a/app/views/settings/employees/_employee.json.jbuilder +++ /dev/null @@ -1,2 +0,0 @@ -json.extract! employee, :id, :name, :role, :encrypted_access_code, :created_at, :updated_at -json.url employee_url(employee, format: :json) diff --git a/app/views/settings/employees/_form.html.erb b/app/views/settings/employees/_form.html.erb index c01342f6..7a0b64f0 100644 --- a/app/views/settings/employees/_form.html.erb +++ b/app/views/settings/employees/_form.html.erb @@ -4,6 +4,7 @@
<%= f.input :name %> <%= f.input :role, :collection => Lookup.collection_of("employee_roles") %> + <%= f.input :emp_id, :as => :integer, :label => "Employee Numberic ID (*Unique)" %> <%= f.input :password %>
diff --git a/app/views/settings/employees/edit.html.erb b/app/views/settings/employees/edit.html.erb index 2855b5ae..6948734c 100644 --- a/app/views/settings/employees/edit.html.erb +++ b/app/views/settings/employees/edit.html.erb @@ -1,6 +1,11 @@ -

Editing Employee

-<%= render 'form', employee: @employee %> - -<%= link_to 'Show', @employee %> | -<%= link_to 'Back', employees_path %> +
+ + <%= render 'form', employee: @employee %> +
diff --git a/app/views/settings/employees/index.html.erb b/app/views/settings/employees/index.html.erb index ab697927..e680eb91 100644 --- a/app/views/settings/employees/index.html.erb +++ b/app/views/settings/employees/index.html.erb @@ -13,20 +13,19 @@ - - - + + + <% @employees.each do |employee| %> - + - - - + <% end %> diff --git a/app/views/settings/employees/index.json.jbuilder b/app/views/settings/employees/index.json.jbuilder deleted file mode 100644 index 2fdff7f2..00000000 --- a/app/views/settings/employees/index.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.array! @employees, partial: 'employees/employee', as: :employee diff --git a/app/views/settings/employees/show.json.jbuilder b/app/views/settings/employees/show.json.jbuilder deleted file mode 100644 index a585012d..00000000 --- a/app/views/settings/employees/show.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.partial! "employees/employee", employee: @employee diff --git a/config/routes.rb b/config/routes.rb index 4d77a09c..1e85f0e5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,13 +18,24 @@ Rails.application.routes.draw do namespace :restaurant do get 'zones' => "zones#index" - get 'tables' => "#index" + + resources :seatings, only:[:index, :show] do + post 'bill' => "seatings#create" + post 'move' => "seatings#move" + end + + resources :rooms, only:[:index, :show] do + post 'bill' => "seatings#create" + post 'move' => "seatings#move" + end + #Menu Related api resources :menu, only: [:index, :show] do resources :menu_categories, only: [:index] resources :menu_items, only: [:index, :show] resources :menu_sold_out, only: [:index] end + end #Order Controller @@ -40,7 +51,7 @@ Rails.application.routes.draw do #--------- Cashier ------------# namespace :cashier do - + #bookings #orders #invoices diff --git a/db/migrate/20170403155230_create_employees.rb b/db/migrate/20170403155230_create_employees.rb index 72129195..59a15930 100644 --- a/db/migrate/20170403155230_create_employees.rb +++ b/db/migrate/20170403155230_create_employees.rb @@ -3,8 +3,11 @@ class CreateEmployees < ActiveRecord::Migration[5.0] create_table :employees do |t| t.string :name, :null => false t.string :role, :null => false, :default => "cashier" - t.string :encrypted_access_code, :null => false - + t.string :emp_id, :null => false + t.string :password_digest, :null => false + t.string :token_session + t.datetime :session_expiry + t.datetime :session_last_login t.timestamps end end diff --git a/db/migrate/20170404041147_create_table_booking_orders.rb b/db/migrate/20170404041147_create_table_booking_orders.rb deleted file mode 100644 index bed75151..00000000 --- a/db/migrate/20170404041147_create_table_booking_orders.rb +++ /dev/null @@ -1,10 +0,0 @@ -class CreateTableBookingOrders < ActiveRecord::Migration[5.0] - def change - create_table :table_booking_orders do |t| - t.references :table_booking - t.references :order, foreign_key: true - - t.timestamps - end - end -end diff --git a/db/migrate/20170404041218_create_room_booking_orders.rb b/db/migrate/20170404041218_create_room_booking_orders.rb deleted file mode 100644 index 80e32760..00000000 --- a/db/migrate/20170404041218_create_room_booking_orders.rb +++ /dev/null @@ -1,10 +0,0 @@ -class CreateRoomBookingOrders < ActiveRecord::Migration[5.0] - def change - create_table :room_booking_orders do |t| - t.references :room_booking - t.references :order, foreign_key: true - - t.timestamps - end - end -end diff --git a/db/migrate/20170414110918_create_booking_orders.rb b/db/migrate/20170414110918_create_booking_orders.rb new file mode 100644 index 00000000..9a28a5af --- /dev/null +++ b/db/migrate/20170414110918_create_booking_orders.rb @@ -0,0 +1,10 @@ +class CreateBookingOrders < ActiveRecord::Migration[5.0] + def change + create_table :booking_orders do |t| + t.references :booking, foreign_key: true + t.references :order, foreign_key: true + + t.timestamps + end + end +end diff --git a/spec/models/room_booking_order_spec.rb b/spec/models/booking_order_spec.rb similarity index 63% rename from spec/models/room_booking_order_spec.rb rename to spec/models/booking_order_spec.rb index 0786c5d5..abefe0b5 100644 --- a/spec/models/room_booking_order_spec.rb +++ b/spec/models/booking_order_spec.rb @@ -1,5 +1,5 @@ require 'rails_helper' -RSpec.describe RoomBookingOrder, type: :model do +RSpec.describe BookingOrder, type: :model do pending "add some examples to (or delete) #{__FILE__}" end diff --git a/spec/models/table_booking_order_spec.rb b/spec/models/table_booking_order_spec.rb deleted file mode 100644 index d1a5a162..00000000 --- a/spec/models/table_booking_order_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe TableBookingOrder, type: :model do - pending "add some examples to (or delete) #{__FILE__}" -end
NameRoleNameRoleAction
<%= employee.name %><%= link_to employee.name, employee[:setting] %> <%= employee.role %><%= link_to 'Show', employee[:setting] %><%= link_to 'Edit', edit_settings_employee_path(employee) %><%= link_to 'Destroy', employee[:setting], method: :delete, data: { confirm: 'Are you sure?' } %> + <%= link_to 'Edit', edit_settings_employee_path(employee) %> | <%= link_to 'Destroy', employee[:setting], method: :delete, data: { confirm: 'Are you sure?' } %>