59 lines
1.7 KiB
Ruby
Executable File
59 lines
1.7 KiB
Ruby
Executable File
class Menu < ApplicationRecord
|
|
has_many :menu_categories, dependent: :destroy
|
|
|
|
validates_presence_of :name, :valid_days, :valid_time_from, :valid_time_to
|
|
# validates_format_of :valid_days, :with => /\A([0-7]{1}(,[0-7]{1})*)?\Z/i
|
|
#Default Scope to pull the active version only
|
|
default_scope { where(is_active: true).order("created_at asc") }
|
|
|
|
def self.current_menu
|
|
today = DateTime.now
|
|
day_of_week = today.wday
|
|
menus = Menu.where("is_active = true and '#{today.strftime("%H:%M")}' between TIME(valid_time_from) and TIME(valid_time_to)")
|
|
current_menu = nil
|
|
|
|
#Loop through the menu which is valid days - get the first menu out and return result
|
|
menus.each do |menu|
|
|
if menu.valid_days.include?(day_of_week.to_s)
|
|
current_menu = menu
|
|
break
|
|
end
|
|
end
|
|
|
|
return current_menu
|
|
end
|
|
|
|
def self.destroyMenu(menu)
|
|
cats = MenuCategory.where("menu_id=?",menu.id)
|
|
cats.each do |cat|
|
|
abc = MenuCategory.destroyCategory(cat)
|
|
end
|
|
menu.destroy
|
|
return false
|
|
end
|
|
|
|
def self.to_csv
|
|
m_attributes = %w{id name is_active valid_days valid_time_from valid_time_to created_by created_at updated_at}
|
|
CSV.generate(headers: true) do |csv|
|
|
csv << m_attributes
|
|
menu = Menu.all
|
|
menu.each do |user|
|
|
puts user
|
|
csv << m_attributes.map{ |attr| user.send(attr)}
|
|
end
|
|
end
|
|
|
|
# mc_attributes = %w{id menu_id code name alt_name order_by created_by menu_category_id is_available created_at updated_at}
|
|
# CSV.generate(headers: true) do |csv|
|
|
# csv << m_attributes
|
|
|
|
# csv << mc_attributes
|
|
# MenuCategory.all.each do |user|
|
|
# puts user
|
|
# csv << mc_attributes.map{ |attr| user.send(attr)}
|
|
# end
|
|
# end
|
|
|
|
end
|
|
|
|
end |