From 90af6bd22da73ec64d053ce2c5935a3f8d991dfa Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Wed, 29 Jun 2022 11:24:21 +0200 Subject: [PATCH] Handle note saving with a new action on existing API controller --- .../admin/spree/orders/shipments.js.erb | 20 ++++++++++++++++++- app/controllers/api/v0/orders_controller.rb | 11 ++++++++++ config/routes/api.rb | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/spree/orders/shipments.js.erb b/app/assets/javascripts/admin/spree/orders/shipments.js.erb index 317df0d0d7..d122365e3d 100644 --- a/app/assets/javascripts/admin/spree/orders/shipments.js.erb +++ b/app/assets/javascripts/admin/spree/orders/shipments.js.erb @@ -43,7 +43,7 @@ $(document).ready(function() { $('a.edit-tracking').click(toggleTrackingEdit); $('a.cancel-tracking').click(toggleTrackingEdit); - $('a.edit-note').click(toggleNoteEdit); + $('a.edit-note.icon-edit').click(toggleNoteEdit); $('a.cancel-note').click(toggleNoteEdit); handle_tracking_save = function(){ @@ -62,5 +62,23 @@ $(document).ready(function() { console.log(msg); }); } + + handle_note_save = function(){ + var link = $(this); + var note = link.parents('tbody').find('#note').val(); + var url = Spree.url( Spree.routes.orders_api + "/" + order_number); + + $.ajax({ + type: "PUT", + url: url, + data: { note: note } + }).done(function( msg ) { + window.location.reload(); + }).error(function( msg ) { + console.log(msg); + }); + } + $('[data-hook=admin_order_edit_form] a.save-tracking').click(handle_tracking_save); + $('[data-hook=admin_order_edit_form] a.save-note').click(handle_note_save); }); diff --git a/app/controllers/api/v0/orders_controller.rb b/app/controllers/api/v0/orders_controller.rb index 81e425d571..3f23a32e40 100644 --- a/app/controllers/api/v0/orders_controller.rb +++ b/app/controllers/api/v0/orders_controller.rb @@ -26,6 +26,13 @@ module Api } end + def update + authorize! :admin, order + + order.update!(order_params) + render json: order, serializer: Api::OrderDetailedSerializer, current_order: order + end + def ship authorize! :admin, order @@ -72,6 +79,10 @@ module Api includes(line_items: { variant: [:product, :stock_items, :default_price] }). first! end + + def order_params + params.permit(:note) + end end end end diff --git a/config/routes/api.rb b/config/routes/api.rb index 748c4ac563..f7bc47085e 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -18,7 +18,7 @@ Openfoodnetwork::Application.routes.draw do resources :variants, :only => [:index] - resources :orders, only: [:index, :show] do + resources :orders, only: [:index, :show, :update] do member do put :capture put :ship