From 477ae5c1057e1386b2fe74d2f9d3af56c5d5e88e Mon Sep 17 00:00:00 2001 From: JapSeyz Date: Sat, 26 Nov 2016 22:38:54 +0100 Subject: [PATCH] Edit an order Edit an order [firstname, lastname and Email] Resend an entrire order (especially useful if someone entered a wrong email which has then beed edited) Show ticket reference in the order refund modal, so you can quickly refund/cancel multiple tickets in an order --- .../Controllers/EventAttendeesController.php | 1 + .../Controllers/EventOrdersController.php | 83 +++++++++++++++++++ app/Http/routes.php | 15 ++++ .../ManageEvent/Modals/CancelOrder.blade.php | 1 + .../ManageEvent/Modals/EditOrder.blade.php | 49 +++++++++++ .../ManageEvent/Modals/ManageOrder.blade.php | 6 ++ 6 files changed, 155 insertions(+) create mode 100644 resources/views/ManageEvent/Modals/EditOrder.blade.php diff --git a/app/Http/Controllers/EventAttendeesController.php b/app/Http/Controllers/EventAttendeesController.php index ecedfc88..6184ada4 100644 --- a/app/Http/Controllers/EventAttendeesController.php +++ b/app/Http/Controllers/EventAttendeesController.php @@ -692,6 +692,7 @@ class EventAttendeesController extends MyBaseController public function postCancelAttendee(Request $request, $event_id, $attendee_id) { $attendee = Attendee::scope()->findOrFail($attendee_id); + $error_message = false; //Prevent "variable doesn't exist" error message if ($attendee->is_cancelled) { return response()->json([ diff --git a/app/Http/Controllers/EventOrdersController.php b/app/Http/Controllers/EventOrdersController.php index 8f8d5430..5a0c39c1 100644 --- a/app/Http/Controllers/EventOrdersController.php +++ b/app/Http/Controllers/EventOrdersController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; +use App\Jobs\SendOrderTickets; use App\Models\Attendee; use App\Models\Event; use App\Models\Order; @@ -83,6 +84,27 @@ class EventOrdersController extends MyBaseController return view('ManageEvent.Modals.ManageOrder', $data); } + /** + * Shows 'Edit Order' modal + * + * @param Request $request + * @param $order_id + * @return mixed + */ + public function showEditOrder(Request $request, $order_id) + { + $order = Order::scope()->find($order_id); + + $data = [ + 'order' => $order, + 'event' => $order->event(), + 'attendees' => $order->attendees()->withoutCancelled()->get(), + 'modal_id' => $request->get('modal_id'), + ]; + + return view('ManageEvent.Modals.EditOrder', $data); + } + /** * Shows 'Cancel Order' modal * @@ -104,6 +126,67 @@ class EventOrdersController extends MyBaseController return view('ManageEvent.Modals.CancelOrder', $data); } + /** + * Resend an entire order + * + * @param $order_id + * + * @return \Illuminate\Http\JsonResponse + */ + public function resendOrder($order_id) + { + $order = Order::scope()->find($order_id); + + $this->dispatch(new SendOrderTickets($order)); + + return response()->json([ + 'status' => 'success', + 'redirectUrl' => '', + ]); + } + + /** + * Cancels an order + * + * @param Request $request + * @param $order_id + * @return mixed + */ + public function postEditOrder(Request $request, $order_id) + { + $rules = [ + 'first_name' => ['required'], + 'last_name' => ['required'], + 'email' => ['required', 'email'], + ]; + + $validator = Validator::make($request->all(), $rules); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'messages' => $validator->messages()->toArray(), + ]); + } + + $order = Order::scope()->findOrFail($order_id); + + $order->first_name = $request->get('first_name'); + $order->last_name = $request->get('last_name'); + $order->email = $request->get('email'); + + $order->update(); + + + \Session::flash('message', 'The order has been updated'); + + return response()->json([ + 'status' => 'success', + 'redirectUrl' => '', + ]); + } + + /** * Cancels an order * diff --git a/app/Http/routes.php b/app/Http/routes.php index 5af70514..4d7bdebe 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -494,6 +494,21 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { 'uses' => 'EventOrdersController@manageOrder', ]); + Route::post('order/{order_id}/resend', [ + 'as' => 'resendOrder', + 'uses' => 'EventOrdersController@resendOrder', + ]); + + Route::get('order/{order_id}/show/edit', [ + 'as' => 'showEditOrder', + 'uses' => 'EventOrdersController@showEditOrder', + ]); + + Route::post('order/{order_id}/edit', [ + 'as' => 'postOrderEdit', + 'uses' => 'EventOrdersController@postEditOrder', + ]); + Route::get('order/{order_id}/cancel', [ 'as' => 'showCancelOrder', 'uses' => 'EventOrdersController@showCancelOrder', diff --git a/resources/views/ManageEvent/Modals/CancelOrder.blade.php b/resources/views/ManageEvent/Modals/CancelOrder.blade.php index cac519b6..d41b4883 100644 --- a/resources/views/ManageEvent/Modals/CancelOrder.blade.php +++ b/resources/views/ManageEvent/Modals/CancelOrder.blade.php @@ -79,6 +79,7 @@ {{{$attendee->ticket->title}}} + {{{$order->order_reference}}}-{{{$attendee->reference_index}}} @endforeach diff --git a/resources/views/ManageEvent/Modals/EditOrder.blade.php b/resources/views/ManageEvent/Modals/EditOrder.blade.php new file mode 100644 index 00000000..d14629f4 --- /dev/null +++ b/resources/views/ManageEvent/Modals/EditOrder.blade.php @@ -0,0 +1,49 @@ + diff --git a/resources/views/ManageEvent/Modals/ManageOrder.blade.php b/resources/views/ManageEvent/Modals/ManageOrder.blade.php index 35586623..b89c8603 100644 --- a/resources/views/ManageEvent/Modals/ManageOrder.blade.php +++ b/resources/views/ManageEvent/Modals/ManageOrder.blade.php @@ -177,6 +177,7 @@ {{{$attendee->ticket->title}}} + {{{$order->order_reference}}}-{{{$attendee->reference_index}}} @endforeach @@ -187,6 +188,11 @@