65 lines
2.0 KiB
Ruby
Executable File
65 lines
2.0 KiB
Ruby
Executable File
class MenuCategory < ApplicationRecord
|
|
# before_create :generate_menu_category_code
|
|
|
|
belongs_to :menu
|
|
has_many :children, :class_name => "MenuCategory", foreign_key: "menu_category_id"
|
|
belongs_to :parent, :class_name => "MenuCategory", foreign_key: "menu_category_id", optional: true
|
|
has_many :menu_items
|
|
|
|
validates_presence_of :code, :name, :menu, :order_by
|
|
validates_uniqueness_of :code
|
|
|
|
default_scope { order('order_by asc') }
|
|
scope :active, -> {where("is_available = 1")}
|
|
|
|
def self.destroyCategory(menu_category)
|
|
# find the sub menu item of current item
|
|
sub_menu_cat = MenuCategory.where("menu_category_id=?",menu_category.id)
|
|
if sub_menu_cat.length != 0
|
|
sub_menu_cat.each do |sub|
|
|
if destroyCategory(sub)
|
|
end
|
|
end
|
|
# find the items of current menu item
|
|
items = MenuItem.where("menu_category_id=?",menu_category.id)
|
|
items.each do |item|
|
|
abc = MenuItem.deleteRecursive(item)
|
|
end
|
|
menu_category.destroy
|
|
return true
|
|
else
|
|
items = MenuItem.where("menu_category_id=?",menu_category.id)
|
|
items.each do |item|
|
|
abc = MenuItem.deleteRecursive(item)
|
|
end
|
|
menu_category.destroy
|
|
return false
|
|
end
|
|
end
|
|
|
|
def valid_time
|
|
|
|
menu_category = MenuCategory.find(self.id)
|
|
menu = Menu.find(menu_category.menu_id)
|
|
from = menu.valid_time_from.strftime("%H:%M:%S")
|
|
to = menu.valid_time_to.strftime("%H:%M:%S")
|
|
current = Time.now.utc.getlocal.strftime("%H:%M:%S")
|
|
|
|
from = from.split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
|
|
to = to.split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
|
|
current = current.split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
|
|
|
|
if current.between?(from, to)
|
|
return true
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
# def generate_menu_category_code
|
|
# self.code = SeedGenerator.generate_code(self.class.name, "C")
|
|
# end
|
|
end
|