From c7e5ae8ab0ce7b8bd7bc23442c6f7eb5651f7346 Mon Sep 17 00:00:00 2001 From: phyusin Date: Tue, 10 Apr 2018 15:21:49 +0630 Subject: [PATCH] order reservation api --- .../order_reservation_controller.rb | 17 ------ .../order_reservation_controller.rb | 52 +++++++++++++++++++ app/models/delivery.rb | 16 ++++++ app/models/order_reservation.rb | 47 +++++++++++++++++ app/models/order_reservation_item.rb | 32 ++++++++++++ .../api/order_reservation/index.json.jbuilder | 0 config/routes.rb | 3 +- 7 files changed, 149 insertions(+), 18 deletions(-) delete mode 100644 app/controllers/api/order_reservation/order_reservation_controller.rb create mode 100644 app/controllers/api/order_reserve/order_reservation_controller.rb create mode 100644 app/models/delivery.rb create mode 100644 app/models/order_reservation.rb create mode 100644 app/models/order_reservation_item.rb delete mode 100644 app/views/api/order_reservation/index.json.jbuilder diff --git a/app/controllers/api/order_reservation/order_reservation_controller.rb b/app/controllers/api/order_reservation/order_reservation_controller.rb deleted file mode 100644 index 43b9c597..00000000 --- a/app/controllers/api/order_reservation/order_reservation_controller.rb +++ /dev/null @@ -1,17 +0,0 @@ -class Api::OrderReservation::OrderReservationController < Api::ApiController - # skip_before_action :authenticate - - def check_customer - customer_id = 0 - - check_customer = Customer.find_by_email_and_contact_no_and_membership_id(params[:email],params[:contact_no],params[:membership_id]) - if !check_customer.nil? - customer_id = check_customer.customer_id - else - customer = Customer.addCustomer(params) - customer_id = customer.id - end - - render :json => { :status => true, :data => { :customer_id => customer_id} } - end -end diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb new file mode 100644 index 00000000..0093409c --- /dev/null +++ b/app/controllers/api/order_reserve/order_reservation_controller.rb @@ -0,0 +1,52 @@ +class Api::OrderReserve::OrderReservationController < Api::ApiController + # skip_before_action :authenticate + ORDER = "order" + RESERVATION = "reservation" + ORDER_RESERVATION = "order and reservation" + + def check_customer + customer_id = 0 + + check_customer = Customer.find_by_email_and_contact_no_and_membership_id(params[:email],params[:contact_no],params[:membership_id]) + if !check_customer.nil? + customer_id = check_customer.customer_id + else + customer = Customer.addCustomer(params) + customer_id = customer.id + end + + render :json => { :status => true, :data => { :customer_id => customer_id} } + end + + def create + status = false + if !params[:cus_info] + render :json => { :status => false, :message => "cus_info is required!" } + elsif !params[:requested_time] + render :json => { :status => false, :message => "requested_time is required!" } + elsif !params[:order_type] + render :json => { :status => false, :message => "order_type is required!" } + elsif params[:order_type] == ORDER || params[:order_type] == ORDER_RESERVATION + if !params[:order_info] + render :json => { :status => false, :message => "order_info is required!" } + else + status = true + end + elsif !params[:payment_info] + render :json => { :status => false, :message => "payment_info is required!" } + elsif !params[:delivery_info] + render :json => { :status => false, :message => "delivery_info is required!" } + elsif params[:order_type] == RESERVATION || params[:order_type] == ORDER_RESERVATION + if !params[:reservation_info] + render :json => { :status => false, :message => "reservation_info is required!" } + else + status = true + end + end + + if status == true + OrderReservation.addOrderReservationInfo(params) + render :json => { :status => true, :message => "Order reservation is successfully created!" } + end + end +end diff --git a/app/models/delivery.rb b/app/models/delivery.rb new file mode 100644 index 00000000..d2273d8d --- /dev/null +++ b/app/models/delivery.rb @@ -0,0 +1,16 @@ +class Delivery < ApplicationRecord + belongs_to :order_reservation + + def self.addDeliveryInfo(params,order_reservation_id) + delivery = Delivery.new + delivery.order_reservation_id = order_reservation_id + delivery.provider = params[:provider] + delivery.delivery_type = params[:delivery_type] + delivery.township = params[:township] + delivery.address = params[:address] + delivery.direction_address = params[:address_direction] + delivery.delivery_fee = params[:delivery_fee] + delivery.remark = params[:delivery_note] + delivery.save! + end +end diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb new file mode 100644 index 00000000..0be5e4c8 --- /dev/null +++ b/app/models/order_reservation.rb @@ -0,0 +1,47 @@ +class OrderReservation < ApplicationRecord + self.primary_key = "order_reservation_id" + + #primary key - need to be unique generated for multiple shops + before_create :generate_custom_id + + has_many :order_reservation_items + belongs_to :delivery + + def self.addOrderReservationInfo(params) + order_reservation = OrderReservation.new + order_reservation.order_reservation_type = params[:order_type] + order_reservation.customer_id = params[:cus_info] + order_reservation.requested_time = Time.parse(params[:requested_time]).utc.strftime("%Y-%m-%d %H:%M:%S") + if params[:order_info] + order_reservation.item_count = params[:order_info][:items].count + order_reservation.payment_type = params[:payment_info][:payment_type] + order_reservation.payment_status = params[:payment_info][:payment_status] + order_reservation.payment_ref = params[:payment_info][:payment_ref] + order_reservation.total_amount = params[:payment_info][:sub_total] + order_reservation.total_tax = params[:payment_info][:total_tax] + order_reservation.discount_amount = params[:payment_info][:discount_amount] + order_reservation.grand_total = params[:payment_info][:grand_total] + order_reservation.order_remark = params[:payment_info][:order_remark] + end + if params[:reservation_info] + order_reservation.total_customer = params[:reservation_info][:total_user] + order_reservation.reservation_remark = params[:reservation_info][:reservation_note] + end + order_reservation.save! + if params[:order_info][:items] + params[:order_info][:items].each do |oritem| + OrderReservationItem.process_order_reservation_item(oritem[:product_code],oritem[:item_instance_code],oritem[:product_name],oritem[:product_alt_name], + oritem[:account_id],oritem[:qty],oritem[:price],oritem[:unit_price], + oritem[:options],nil,order_reservation.id) + end + end + if params[:delivery_info] + Delivery.addDeliveryInfo(params[:delivery_info],order_reservation.id) + end + end + + private + def generate_custom_id + self.order_reservation_id = SeedGenerator.generate_id(self.class.name, "ODRS") + end +end diff --git a/app/models/order_reservation_item.rb b/app/models/order_reservation_item.rb new file mode 100644 index 00000000..0d932f92 --- /dev/null +++ b/app/models/order_reservation_item.rb @@ -0,0 +1,32 @@ +class OrderReservationItem < ApplicationRecord + self.primary_key = "order_reservation_items_id" + + #primary key - need to be unique + before_create :generate_custom_id + + belongs_to :order_reservation, autosave: true + + def self.process_order_reservation_item (item_code, instance_code, menu_name, alt_name, account_id, qty, price, unit_price, options, set_menu_items, order_reservation_id) + orderreservationitem = OrderReservationItem.create do |oitem| + oitem.order_reservation_id = order_reservation_id + oitem.item_code = item_code + oitem.item_instance_code = instance_code + oitem.item_name = menu_name + oitem.alt_name = alt_name ? alt_name : "" + oitem.account_id = account_id + oitem.qty = qty + oitem.unit_price = unit_price + oitem.price = price + oitem.options = options + oitem.set_menu_items = set_menu_items + end + + #logger.debug orderitem.to_yml + orderreservationitem.save! + end + + private + def generate_custom_id + self.order_reservation_items_id = SeedGenerator.generate_id(self.class.name, "ODRSI") + end +end diff --git a/app/views/api/order_reservation/index.json.jbuilder b/app/views/api/order_reservation/index.json.jbuilder deleted file mode 100644 index e69de29b..00000000 diff --git a/config/routes.rb b/config/routes.rb index 7c224dfa..cec8057f 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -83,8 +83,9 @@ scope "(:locale)", locale: /en|mm/ do end #order and reservation api - namespace :order_reservation do + namespace :order_reserve do post "customer" => "order_reservation#check_customer" + post "order" => "order_reservation#create" end end