diff --git a/app/controllers/api/sync_controller.rb b/app/controllers/api/sync_controller.rb new file mode 100644 index 00000000..3d5e971c --- /dev/null +++ b/app/controllers/api/sync_controller.rb @@ -0,0 +1,10 @@ +class Api::SyncController < Api::ApiController + + def sync_data + # Here comes to save the sync records. + Order.sync_order_records(params[:orders]) + OrderItem.sync_order_item_records(params[:order_items]) + + return true + end +end \ No newline at end of file diff --git a/app/controllers/reports/receipt_no_controller.rb b/app/controllers/reports/receipt_no_controller.rb index d966a00f..f7c34594 100755 --- a/app/controllers/reports/receipt_no_controller.rb +++ b/app/controllers/reports/receipt_no_controller.rb @@ -69,5 +69,48 @@ authorize_resource :class => false format.json { render json: out } end end + + def sync_data + @orders, @order_items = Booking.get_sync_data(params[:sale_id]) + + # Here comes to call the sync api + url = "http://192.168.1.187:3000/api/sync_records" + + begin + @result = HTTParty.post(url.to_str, + :body => { :orders => @orders, + :order_items => @order_items + }.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Authorization' => 'bearer 88fa8a47ba8b52a43cbc' + }, :timeout => 10, + :verify_ssl => OpenSSL::SSL::VERIFY_NONE, + :verify => false ) + + rescue HTTParty::Error + response = { status: false, message: "Can't open membership server "} + rescue Net::OpenTimeout + response = { status: false, message: "Can't open membership server "} + rescue OpenURI::HTTPError + puts "Fire in here" + response = { status: false, message: "Can't open membership server "} + rescue SocketError + response = { status: false, message: "Can't open server "} + rescue Errno::EHOSTDOWN + response = { status: false, message: "Can't open server "} + rescue Errno::ECONNREFUSED, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError + response = { status: false, message: "Can't open membership server"} + end + + puts url + puts response + puts '########################' + puts @result + + respond_to do |format| + format.html { redirect_to '/en/reports/receipt_no/', notice: 'Sync Record Completed.'} + end + end end \ No newline at end of file diff --git a/app/models/booking.rb b/app/models/booking.rb index 46c098b7..f2a9af36 100755 --- a/app/models/booking.rb +++ b/app/models/booking.rb @@ -60,6 +60,20 @@ class Booking < ApplicationRecord .order("sale_id DESC") end + def self.get_sync_data(sale_id) + @orders = Order.select('orders.*') + .joins('left join booking_orders on booking_orders.order_id = orders.order_id') + .joins('left join bookings on bookings.booking_id = booking_orders.booking_id') + .where('bookings.sale_id=?', sale_id) + + @order_items = OrderItem.select('order_items.*') + .joins('left join booking_orders on booking_orders.order_id = order_items.order_id') + .joins('left join bookings on bookings.booking_id = booking_orders.booking_id') + .where('bookings.sale_id=?', sale_id) + + return @orders, @order_items + end + private def generate_custom_id self.booking_id = SeedGenerator.generate_id(self.class.name, "BKI") diff --git a/app/models/order.rb b/app/models/order.rb index af5887e6..e8743187 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -560,4 +560,25 @@ class Order < ApplicationRecord self.date = Time.now.utc end + def self.sync_order_records(orders) + if !orders.nil? + orders.each do |o| + unless Order.exists?(o.order_id) + order = Order.new() + order.order_id = o.order_id + order.date = o.date + order.source = o.source + order.order_type = o.order_type + order.customer_id = o.customer_id + order.item_count = o.item_count + order.quantity_count = o.quantity_count + order.status = o.status + order.waiters = o.waiters + order.guest_info = o.guest_info + order.save + end + end + end + end + end diff --git a/app/models/order_item.rb b/app/models/order_item.rb index 87d60e63..6468d2f1 100755 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -65,6 +65,33 @@ class OrderItem < ApplicationRecord return order_details end + def self.sync_order_item_records(order_items) + if !order_items.nil? + order_items.each do |item| + unless OrderItem.exists?(item.order_items_id) + order_item = OrderItem.new() + order_item.order_items_id = item.order_items_id + order_item.order_id = item.order_id + order_item.order_item_status = item.order_item_status + order_item.item_order_by = item.item_order_by + order_item.item_code = item.item_code + order_item.item_instance_code = item.item_instance_code + order_item.item_name = item.item_name + order_item.alt_name = item.alt_name + order_item.account_id = item.account_id + order_item.qty = item.qty + order_item.price = item.price + order_item.remark = item.remark + order_item.options = item.options + order_item.set_menu_items = item.set_menu_items + order_item.taxable = item.taxable + order_item.completed_by = item.completed_by + order_item.save + end + end + end + end + private def generate_custom_id self.order_items_id = SeedGenerator.generate_id(self.class.name, "ODI") diff --git a/app/views/api/sync/sync_data.json.jbuilder b/app/views/api/sync/sync_data.json.jbuilder new file mode 100644 index 00000000..736432ed --- /dev/null +++ b/app/views/api/sync/sync_data.json.jbuilder @@ -0,0 +1,2 @@ +json.status = true +json.message = 'Data successfully Sync' \ No newline at end of file diff --git a/app/views/reports/receipt_no/index.html.erb b/app/views/reports/receipt_no/index.html.erb index 6ce18cb3..5bfdeba8 100755 --- a/app/views/reports/receipt_no/index.html.erb +++ b/app/views/reports/receipt_no/index.html.erb @@ -56,6 +56,7 @@