From 7a09ed01080b80ab6b726bfc012871a24814bb4f Mon Sep 17 00:00:00 2001 From: yarzar_code Date: Thu, 30 Jan 2020 11:57:28 +0630 Subject: [PATCH] Menu Item Groups --- .../javascripts/api/menu_item_groups.coffee | 3 + .../settings/menu_item_groups.coffee | 3 + .../stylesheets/api/menu_item_groups.scss | 3 + .../settings/menu_item_groups.scss | 3 + .../api/menu_item_groups_controller.rb | 8 +++ .../settings/menu_item_groups_controller.rb | 59 ++++++++++++++++ app/helpers/api/menu_item_groups_helper.rb | 2 + .../settings/menu_item_groups_helper.rb | 2 + .../api/menu_item_groups/index.json.jbuilder | 2 + .../settings/menu_item_groups/edit.html.erb | 70 +++++++++++++++++++ .../settings/menu_item_groups/index.html.erb | 69 ++++++++++++++++++ .../settings/menu_item_groups/new.html.erb | 70 +++++++++++++++++++ config/routes.rb | 4 +- .../api/menu_item_groups_controller_spec.rb | 5 ++ .../menu_item_groups_controller_spec.rb | 5 ++ .../api/menu_item_groups_helper_spec.rb | 15 ++++ .../settings/menu_item_groups_helper_spec.rb | 15 ++++ 17 files changed, 337 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/api/menu_item_groups.coffee create mode 100644 app/assets/javascripts/settings/menu_item_groups.coffee create mode 100644 app/assets/stylesheets/api/menu_item_groups.scss create mode 100644 app/assets/stylesheets/settings/menu_item_groups.scss create mode 100644 app/controllers/api/menu_item_groups_controller.rb create mode 100644 app/controllers/settings/menu_item_groups_controller.rb create mode 100644 app/helpers/api/menu_item_groups_helper.rb create mode 100644 app/helpers/settings/menu_item_groups_helper.rb create mode 100644 app/views/api/menu_item_groups/index.json.jbuilder create mode 100755 app/views/settings/menu_item_groups/edit.html.erb create mode 100644 app/views/settings/menu_item_groups/index.html.erb create mode 100644 app/views/settings/menu_item_groups/new.html.erb create mode 100644 spec/controllers/api/menu_item_groups_controller_spec.rb create mode 100644 spec/controllers/settings/menu_item_groups_controller_spec.rb create mode 100644 spec/helpers/api/menu_item_groups_helper_spec.rb create mode 100644 spec/helpers/settings/menu_item_groups_helper_spec.rb diff --git a/app/assets/javascripts/api/menu_item_groups.coffee b/app/assets/javascripts/api/menu_item_groups.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/api/menu_item_groups.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/settings/menu_item_groups.coffee b/app/assets/javascripts/settings/menu_item_groups.coffee new file mode 100644 index 00000000..fad9c6c6 --- /dev/null +++ b/app/assets/javascripts/settings/menu_item_groups.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ \ No newline at end of file diff --git a/app/assets/stylesheets/api/menu_item_groups.scss b/app/assets/stylesheets/api/menu_item_groups.scss new file mode 100644 index 00000000..90b85063 --- /dev/null +++ b/app/assets/stylesheets/api/menu_item_groups.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the api/menu_item_groups controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/settings/menu_item_groups.scss b/app/assets/stylesheets/settings/menu_item_groups.scss new file mode 100644 index 00000000..297b27f5 --- /dev/null +++ b/app/assets/stylesheets/settings/menu_item_groups.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the settings/menu_item_groups controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/api/menu_item_groups_controller.rb b/app/controllers/api/menu_item_groups_controller.rb new file mode 100644 index 00000000..6041ec14 --- /dev/null +++ b/app/controllers/api/menu_item_groups_controller.rb @@ -0,0 +1,8 @@ +class Api::MenuItemGroupsController < ApplicationController + def index + # @groups = Lookup.where(lookup_type:'menu_item_groups') + # @group = @groups.group_by(&:name).map { |k, v| { k => v.map { |l| m = eval(l.value); { m[:menu_category] => m[:menu_items] } }.inject({}) { |h, v| p h; h.merge!(v) } } } + @group = Lookup.where(lookup_type:'menu_item_groups') + @group = @group.group_by(&:name).map{|k ,v| { k => v.map{|k, v| JSON.parse(k.value)}.inject({}) { |h, v| p h; h.merge!(v) }}}.inject({}) { |h, v| p h; h.merge!(v) } + end +end diff --git a/app/controllers/settings/menu_item_groups_controller.rb b/app/controllers/settings/menu_item_groups_controller.rb new file mode 100644 index 00000000..538d8d94 --- /dev/null +++ b/app/controllers/settings/menu_item_groups_controller.rb @@ -0,0 +1,59 @@ +class Settings::MenuItemGroupsController < ApplicationController + def index + @menu_item_group = Lookup.where(lookup_type:'menu_item_groups') + end + def new + @settings_menu_item_group = Lookup.new + @menu_category = MenuCategory.order(:name) + end + def create + @settings_menu_item_group = Lookup.new(settings_lookup_params) + menu_item = settings_lookup_params[:value].reject(&:empty?) + menu_category = "{\"#{settings_lookup_params[:lookup_type]}\" : #{menu_item} }" + @settings_menu_item_group.lookup_type = "menu_item_groups" + @settings_menu_item_group.value = menu_category + respond_to do |format| + if @settings_menu_item_group.save + format.html { redirect_to settings_menu_item_groups_path, notice: 'Menu item group was successfully created.' } + format.json { render :show, status: :created, location: @settings_menu_item_group } + else + format.html { render :new } + format.json { render json: settings_menu_item_groups_path.errors, status: :unprocessable_entity } + end + end + end + def edit + @settings_menu_item_group = Lookup.find(params[:id]) + @menu_category = MenuCategory.order(:name) + end + def update + @settings_menu_item_group = Lookup.find(params[:id]) + menu_item = settings_lookup_params[:value].reject(&:empty?) + menu_category = "{\"#{settings_lookup_params[:lookup_type]}\" : #{menu_item} }" + @settings_menu_item_group.lookup_type = "menu_item_groups" + @settings_menu_item_group.value = menu_category + @settings_menu_item_group.name = settings_lookup_params[:name] + respond_to do |format| + if @settings_menu_item_group.save + format.html { redirect_to settings_menu_item_groups_path, notice: 'Menu item group was successfully updated.' } + format.json { render :show, status: :ok, location: @settings_menu_item_group } + else + format.html { render :edit } + format.json { render json: settings_menu_item_groups_path.errors, status: :unprocessable_entity } + end + end + end + def destroy + @settings_menu_item_group = Lookup.find(params[:id]) + if @settings_menu_item_group.destroy + flash[:notice] = 'Menu item group was successfully deleted.' + redirect_to settings_menu_item_groups_path + end + end + private + + # Never trust parameters from the scary internet, only allow the white list through. + def settings_lookup_params + params.require(:lookup).permit(:lookup_type, :name, :value=>[]) + end +end diff --git a/app/helpers/api/menu_item_groups_helper.rb b/app/helpers/api/menu_item_groups_helper.rb new file mode 100644 index 00000000..5c7ab225 --- /dev/null +++ b/app/helpers/api/menu_item_groups_helper.rb @@ -0,0 +1,2 @@ +module Api::MenuItemGroupsHelper +end diff --git a/app/helpers/settings/menu_item_groups_helper.rb b/app/helpers/settings/menu_item_groups_helper.rb new file mode 100644 index 00000000..6b689f13 --- /dev/null +++ b/app/helpers/settings/menu_item_groups_helper.rb @@ -0,0 +1,2 @@ +module Settings::MenuItemGroupsHelper +end diff --git a/app/views/api/menu_item_groups/index.json.jbuilder b/app/views/api/menu_item_groups/index.json.jbuilder new file mode 100644 index 00000000..20b29060 --- /dev/null +++ b/app/views/api/menu_item_groups/index.json.jbuilder @@ -0,0 +1,2 @@ +json.status true +json.data @group \ No newline at end of file diff --git a/app/views/settings/menu_item_groups/edit.html.erb b/app/views/settings/menu_item_groups/edit.html.erb new file mode 100755 index 00000000..8d285d49 --- /dev/null +++ b/app/views/settings/menu_item_groups/edit.html.erb @@ -0,0 +1,70 @@ + + +
+
+ <%= simple_form_for ([:settings,@settings_menu_item_group]), :url => settings_menu_item_group_path do |f| %> + <%= f.error_notification %> +
+ <%= f.input :name, :label => "Group Name" ,input_html: {required: true }%> + <%= f.label :lookup_type, label: 'Menu Category', :class => "control-label string optional bmd-label-static" %> + <%= f.collection_select :lookup_type, @menu_category, :id, :name, {}, {:class =>"form-control"} %> + <%= f.label :value, label: 'Menu Items', :class => "control-label string optional bmd-label-static" %> + <%= f.grouped_collection_select :value, @menu_category, :menu_items, :name, :item_code, :name, {}, {:class =>"form-control", :multiple=> true} %> +
+ +
+ <%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %> +
+ <% end %> +
+
+
+
+
view_headline <%= t("views.right_panel.header.page_detail") %>
+

+ 1) <%= t("views.right_panel.detail.lookup") + " " + t("views.right_panel.detail.type_txt") %> - <%= t("views.right_panel.detail.write_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+ 2) <%= t("views.right_panel.detail.name") %> - <%= t("views.right_panel.detail.write_txt") %> <%= t("views.right_panel.detail.name_txt2") %>
+ 3) <%= t("views.right_panel.detail.value") %> - <%= t("views.right_panel.detail.write_txt") %> <%= t("views.right_panel.detail.value_txt") %>
+

+
list <%= t("views.right_panel.header.button_lists") %>
+

+ 1) <%= t("views.right_panel.button.submit") %> - <%= t("views.right_panel.detail.submit_btn_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+

+
list <%= t("views.right_panel.header.link_lists") %>
+

+ 1) <%= t("views.right_panel.button.home") %> - <%= t("views.right_panel.detail.home_txt") %>
+ 2) <%= t("views.right_panel.button.back") %> - <%= t("views.right_panel.detail.back_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+

+
+
+
+
+ + + diff --git a/app/views/settings/menu_item_groups/index.html.erb b/app/views/settings/menu_item_groups/index.html.erb new file mode 100644 index 00000000..89ec57e7 --- /dev/null +++ b/app/views/settings/menu_item_groups/index.html.erb @@ -0,0 +1,69 @@ + + + +
+
+
+ <%= link_to t("views.btn.new"),new_settings_menu_item_group_path,:class => 'btn btn-primary btn-lg float-right waves-effect"' %> +
+
+ + + + + + + + + + + + <% @menu_item_group.each do |menu_item_group| %> + + + + + + + <% end %> + +
<%= t("views.right_panel.detail.menu_item_groups") %><%= t("views.right_panel.detail.group_names") %><%= t("views.right_panel.detail.menu_items") %><%= t("views.right_panel.detail.actions") %>
<%= menu_item_group.lookup_type %><%= menu_item_group.name %><%= menu_item_group.value %> + <%= link_to t("views.btn.edit"), edit_settings_menu_item_group_path(menu_item_group),:class => 'btn btn-primary btn-sm waves-effect' %> + <%= link_to t("views.btn.delete"), settings_menu_item_group_path(menu_item_group),:class => 'btn btn-danger btn-sm waves-effect', method: :delete, data: {confirm: 'Are you sure you want to delete this row ?'} %> + +
+
+
+
+
+
+
view_headline <%= t("views.right_panel.header.page_detail") %>
+

+ 1) <%= t("views.right_panel.detail.lookup") + " " + t("views.right_panel.detail.type_txt") %> - <%= t("views.right_panel.detail.type_txt") %> <%= t("views.right_panel.detail.for") %> <%= t("views.right_panel.detail.lookup_txt") %>
+ 2) <%= t("views.right_panel.detail.name") %> - <%= t("views.right_panel.detail.name_txt2") %> <%= t("views.right_panel.detail.for") %> <%= t("views.right_panel.detail.lookup_txt") %>
+ 3) <%= t("views.right_panel.detail.value") %> - <%= t("views.right_panel.detail.value_txt") %> <%= t("views.right_panel.detail.for") %> <%= t("views.right_panel.detail.lookup_txt") %>
+ 4) <%= t("views.right_panel.detail.actions") %> - <%= t("views.right_panel.detail.actions_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+

+
list <%= t("views.right_panel.header.button_lists") %>
+

+ 1) <%= t("views.right_panel.button.new") %> - <%= t("views.right_panel.detail.new_btn_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+ 2) <%= t("views.right_panel.button.edit") %> - <%= t("views.right_panel.detail.edit_btn_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+

+
list <%= t("views.right_panel.header.link_lists") %>
+

+ 1) <%= t("views.right_panel.button.home") %> - <%= t("views.right_panel.detail.home_txt") %>
+ 2) <%= t("views.right_panel.button.back") %> - <%= t("views.right_panel.detail.back_txt") %> <%= t("views.right_panel.detail.dashboard_txt") %>
+

+
+
+
+
+ diff --git a/app/views/settings/menu_item_groups/new.html.erb b/app/views/settings/menu_item_groups/new.html.erb new file mode 100644 index 00000000..70b137a7 --- /dev/null +++ b/app/views/settings/menu_item_groups/new.html.erb @@ -0,0 +1,70 @@ + + +
+
+ <%= simple_form_for ([:settings,@settings_menu_item_group]), :url => settings_menu_item_groups_path do |f| %> + <%= f.error_notification %> + +
+ <%= f.input :name, :label => "Group Name" ,input_html: {required: true }%> + <%= f.label :lookup_type, label: 'Menu Category', :class => "control-label string optional bmd-label-static" %> + <%= f.collection_select :lookup_type, @menu_category, :id, :name, {}, {:class =>"form-control"} %> + <%= f.label :value, label: 'Menu Items', :class => "control-label string optional bmd-label-static" %> + <%= f.grouped_collection_select :value, @menu_category, :menu_items, :name, :item_code, :name, {}, {:class =>"form-control", :multiple=> true} %> +
+ +
+ <%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %> +
+ <% end %> +
+
+
+
+
view_headline <%= t("views.right_panel.header.page_detail") %>
+

+ 1) <%= t("views.right_panel.detail.lookup") + " " + t("views.right_panel.detail.type_txt") %> - <%= t("views.right_panel.detail.write_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+ 2) <%= t("views.right_panel.detail.name") %> - <%= t("views.right_panel.detail.write_txt") %> <%= t("views.right_panel.detail.name_txt2") %>
+ 3) <%= t("views.right_panel.detail.value") %> - <%= t("views.right_panel.detail.write_txt") %> <%= t("views.right_panel.detail.value_txt") %>
+

+
list <%= t("views.right_panel.header.button_lists") %>
+

+ 1) <%= t("views.right_panel.button.submit") %> - <%= t("views.right_panel.detail.submit_btn_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+

+
list <%= t("views.right_panel.header.link_lists") %>
+

+ 1) <%= t("views.right_panel.button.home") %> - <%= t("views.right_panel.detail.home_txt") %>
+ 2) <%= t("views.right_panel.button.back") %> - <%= t("views.right_panel.detail.back_txt") %> <%= t("views.right_panel.detail.lookup_txt") %>
+

+
+
+
+
+ + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 933002d9..2d335b80 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -44,7 +44,7 @@ scope "(:locale)", locale: /en|mm/ do #Session Login and Logout post 'authenticate' => "authenticate#create" delete 'authenticate' => "authenticate#destroy" - + get "menu_item_groups" => "menu_item_groups#index" namespace :restaurant do get 'zones' => "zones#index" resources :menu, only: [:index, :show] @@ -461,6 +461,8 @@ scope "(:locale)", locale: /en|mm/ do resources :products #lookups resources :lookups + #menu_item_groups + resources :menu_item_groups #cashier_terminals resources :cashier_terminals #order_job_stations diff --git a/spec/controllers/api/menu_item_groups_controller_spec.rb b/spec/controllers/api/menu_item_groups_controller_spec.rb new file mode 100644 index 00000000..cb965035 --- /dev/null +++ b/spec/controllers/api/menu_item_groups_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Api::MenuItemGroupsController, type: :controller do + +end diff --git a/spec/controllers/settings/menu_item_groups_controller_spec.rb b/spec/controllers/settings/menu_item_groups_controller_spec.rb new file mode 100644 index 00000000..34ae5c89 --- /dev/null +++ b/spec/controllers/settings/menu_item_groups_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Settings::MenuItemGroupsController, type: :controller do + +end diff --git a/spec/helpers/api/menu_item_groups_helper_spec.rb b/spec/helpers/api/menu_item_groups_helper_spec.rb new file mode 100644 index 00000000..0f29393f --- /dev/null +++ b/spec/helpers/api/menu_item_groups_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the Api::MenuItemGroupsHelper. For example: +# +# describe Api::MenuItemGroupsHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe Api::MenuItemGroupsHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/helpers/settings/menu_item_groups_helper_spec.rb b/spec/helpers/settings/menu_item_groups_helper_spec.rb new file mode 100644 index 00000000..8fa377e7 --- /dev/null +++ b/spec/helpers/settings/menu_item_groups_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the Settings::MenuItemGroupsHelper. For example: +# +# describe Settings::MenuItemGroupsHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe Settings::MenuItemGroupsHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end