From fc2927b341a7a55d8bd24f1bbbbaaa6a5ce51468 Mon Sep 17 00:00:00 2001 From: Phyo Date: Wed, 16 Aug 2017 18:36:23 +0630 Subject: [PATCH] Promotion CRUD --- .../settings/promotions_controller.rb | 76 +++++++++++++++++++ app/helpers/settings/promotions_helper.rb | 2 + app/models/promotion.rb | 2 + app/views/layouts/_header.html.erb | 2 + app/views/settings/promotions/_form.html.erb | 48 ++++++++++++ .../promotions/_promotion.json.jbuilder | 2 + app/views/settings/promotions/edit.html.erb | 10 +++ app/views/settings/promotions/index.html.erb | 58 ++++++++++++++ .../settings/promotions/index.json.jbuilder | 1 + app/views/settings/promotions/new.html.erb | 17 +++++ app/views/settings/promotions/show.html.erb | 4 + .../settings/promotions/show.json.jbuilder | 1 + db/migrate/20170815044557_create_promotion.rb | 4 +- 13 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 app/controllers/settings/promotions_controller.rb create mode 100644 app/helpers/settings/promotions_helper.rb create mode 100644 app/models/promotion.rb create mode 100644 app/views/settings/promotions/_form.html.erb create mode 100644 app/views/settings/promotions/_promotion.json.jbuilder create mode 100644 app/views/settings/promotions/edit.html.erb create mode 100644 app/views/settings/promotions/index.html.erb create mode 100644 app/views/settings/promotions/index.json.jbuilder create mode 100644 app/views/settings/promotions/new.html.erb create mode 100644 app/views/settings/promotions/show.html.erb create mode 100644 app/views/settings/promotions/show.json.jbuilder diff --git a/app/controllers/settings/promotions_controller.rb b/app/controllers/settings/promotions_controller.rb new file mode 100644 index 00000000..277cf62d --- /dev/null +++ b/app/controllers/settings/promotions_controller.rb @@ -0,0 +1,76 @@ +class Settings::PromotionsController < ApplicationController + before_action :set_promotion, only: [:show, :edit, :update, :destroy] + + # GET /promotions + # GET /promotions.json + def index + @promotions = Promotion.all + end + + # GET /promotions/1 + # GET /promotions/1.json + def show + end + + # GET /promotions/new + def new + @promotion = Promotion.new + @promotion.promo_start_date = DateTime.now + @promotion.promo_end_date = DateTime.now + end + + # GET /promotions/1/edit + def edit + end + + # POST /promotions + # POST /promotions.json + def create + @promotion = Promotion.new(promotion_params) + @promotion.created_by = current_login_employee.id + respond_to do |format| + if @promotion.save + format.html { redirect_to settings_promotions_path, notice: 'Promotion was successfully created.' } + format.json { render :show, status: :created, location: @promotion } + else + format.html { render :new } + format.json { render json: @promotion.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /promotions/1 + # PATCH/PUT /promotions/1.json + def update + respond_to do |format| + if @promotion.update(promotion_params) + format.html { redirect_to settings_promotions_path, notice: 'Promotion was successfully updated.' } + format.json { render :show, status: :ok, location: @promotion } + else + format.html { render :edit } + format.json { render json: @promotion.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /promotions/1 + # DELETE /promotions/1.json + def destroy + @promotion.destroy + respond_to do |format| + format.html { redirect_to settings_promotions_path, notice: 'Promotion was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_promotion + @promotion = Promotion.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def promotion_params + params.require(:promotion).permit(:promo_code, :promo_start_date, :promo_end_date, :promo_start_hour,:promo_end_hour ,:promo_day, :promo_type,:original_product ,:min_qty ,:created_by) + end +end diff --git a/app/helpers/settings/promotions_helper.rb b/app/helpers/settings/promotions_helper.rb new file mode 100644 index 00000000..787c2194 --- /dev/null +++ b/app/helpers/settings/promotions_helper.rb @@ -0,0 +1,2 @@ +module Settings::PromotionsHelper +end diff --git a/app/models/promotion.rb b/app/models/promotion.rb new file mode 100644 index 00000000..9b5c4c12 --- /dev/null +++ b/app/models/promotion.rb @@ -0,0 +1,2 @@ +class Promotion < ApplicationRecord +end diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index bc5ce498..df1e13ce 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -28,6 +28,8 @@
  • <%= link_to "Employees", settings_employees_path, :tabindex =>"-1" %>

  • <%= link_to "Accounts", settings_accounts_path, :tabindex =>"-1" %>
  • +
    +
  • <%= link_to "Promotion", settings_promotions_path, :tabindex =>"-1" %>
  • diff --git a/app/views/settings/promotions/_form.html.erb b/app/views/settings/promotions/_form.html.erb new file mode 100644 index 00000000..98dbb7fe --- /dev/null +++ b/app/views/settings/promotions/_form.html.erb @@ -0,0 +1,48 @@ +<%= simple_form_for([:settings,@promotion]) do |f| %> + <%= f.error_notification %> + +
    +
    +
    +
    <%= f.input :promo_code %>
    +
    +
    +
    +
    + Promo Start Date + <%= f.date_field :promo_start_date, :placeholder => "From Date" , :class => "form-control"%> +
    +
    +
    + Promo End Date + <%= f.date_field :promo_end_date ,:placeholder => "To Date" , :class => "form-control"%> +
    +
    +
    +
    + <%= f.input :promo_start_hour %> + +
    +
    <%= f.input :promo_end_hour %>
    +
    +
    +
    <%= f.input :promo_day %>
    +
    +
    +
    + <%= f.input :promo_type,input_html: { class: "" }, + collection: %w{Quantity Net_off Net_price Percentage},:class => 'form-control' ,:label => "" %> +
    +
    +
    +
    <%= f.input :original_product,collection: MenuItem.order("name desc"),input_html: { selected: 2 } %>
    +
    <%= f.input :min_qty %>
    +
    +
    +
    + +
    + <%= f.button :submit %> +
    +<% end %> diff --git a/app/views/settings/promotions/_promotion.json.jbuilder b/app/views/settings/promotions/_promotion.json.jbuilder new file mode 100644 index 00000000..d9b08aef --- /dev/null +++ b/app/views/settings/promotions/_promotion.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! promotion, :id, :created_at, :updated_at +json.url promotion_url(promotion, format: :json) diff --git a/app/views/settings/promotions/edit.html.erb b/app/views/settings/promotions/edit.html.erb new file mode 100644 index 00000000..47a01b80 --- /dev/null +++ b/app/views/settings/promotions/edit.html.erb @@ -0,0 +1,10 @@ +
    + + <%= render 'form', promotion: @promotion %> +
    diff --git a/app/views/settings/promotions/index.html.erb b/app/views/settings/promotions/index.html.erb new file mode 100644 index 00000000..606b138b --- /dev/null +++ b/app/views/settings/promotions/index.html.erb @@ -0,0 +1,58 @@ +

    <%= notice %>

    + + + + +
    +
    + + + + + + + + + + + + + + + + + + <% @promotions.each do |pro| %> + + + + + + + + + <% if Employee.exists?(pro.created_by) %> + + <% else %> + + <% end %> + + + + + <% end %> + +
    Promotion CodeStart DateEnd DateStart TimeEnd TimePromotion DayOriginal ProductCreated ByCreated At
    <%= link_to pro.promo_code, settings_promotion_path(pro) %><%= pro.promo_start_date %><%= pro.promo_end_date %><%= pro.promo_start_hour.strftime("%I:%M %P") rescue "-" %><%= pro.promo_end_hour.strftime("%I:%M %P") rescue "-" %><%= pro.promo_day %> + <% if MenuItem.exists?(pro.original_product) %> + <%= MenuItem.find(pro.original_product).name %> + <% end %> + <%= Employee.find(pro.created_by).name %><%= pro.created_by %><%= pro.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_promotion_path(pro) %><%= link_to 'Destroy', settings_promotion_path(pro), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    diff --git a/app/views/settings/promotions/index.json.jbuilder b/app/views/settings/promotions/index.json.jbuilder new file mode 100644 index 00000000..1c9c5f97 --- /dev/null +++ b/app/views/settings/promotions/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @promotions, partial: 'promotions/promotion', as: :promotion diff --git a/app/views/settings/promotions/new.html.erb b/app/views/settings/promotions/new.html.erb new file mode 100644 index 00000000..c7748bb6 --- /dev/null +++ b/app/views/settings/promotions/new.html.erb @@ -0,0 +1,17 @@ + +
    + + <%= render 'form', promotion: @promotion %> +
    + diff --git a/app/views/settings/promotions/show.html.erb b/app/views/settings/promotions/show.html.erb new file mode 100644 index 00000000..4dd7e593 --- /dev/null +++ b/app/views/settings/promotions/show.html.erb @@ -0,0 +1,4 @@ +

    <%= notice %>

    + +<%= link_to 'Edit', edit_promotion_path(@promotion) %> | +<%= link_to 'Back', promotions_path %> diff --git a/app/views/settings/promotions/show.json.jbuilder b/app/views/settings/promotions/show.json.jbuilder new file mode 100644 index 00000000..52507108 --- /dev/null +++ b/app/views/settings/promotions/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "promotions/promotion", promotion: @promotion diff --git a/db/migrate/20170815044557_create_promotion.rb b/db/migrate/20170815044557_create_promotion.rb index 124ad8d9..fddf293b 100644 --- a/db/migrate/20170815044557_create_promotion.rb +++ b/db/migrate/20170815044557_create_promotion.rb @@ -3,8 +3,8 @@ class CreatePromotion < ActiveRecord::Migration[5.1] create_table :promotions do |t| t.string :promo_code, :limit => 16 - t.datetime :promo_start_date, :null => false - t.datetime :promo_end_date, :null => false + t.date :promo_start_date, :null => false + t.date :promo_end_date, :null => false t.time :promo_start_hour, :null => false t.time :promo_end_hour, :null => false t.string :promo_day, :null => false, :default => "[0,1,2,3,4,5,6]"