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
This commit is contained in:
JapSeyz 2016-11-26 22:38:54 +01:00
parent 56556bf05e
commit 477ae5c105
6 changed files with 155 additions and 0 deletions

View File

@ -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([

View File

@ -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
*

View File

@ -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',

View File

@ -79,6 +79,7 @@
</td>
<td>
{{{$attendee->ticket->title}}}
{{{$order->order_reference}}}-{{{$attendee->reference_index}}}
</td>
</tr>
@endforeach

View File

@ -0,0 +1,49 @@
<div role="dialog" class="modal fade" style="display: none;">
<style>
.well.nopad {
padding: 0px;
}
.modal-body .row{
margin-top:2rem;
}
</style>
<div class="modal-dialog">
<div class="modal-content">
{!! Form::open(array('url' => route('postOrderEdit', array('order_id' => $order->id)), 'class' => 'ajax reset closeModalAfter')) !!}
<div class="modal-header text-center">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h3 class="modal-title">
<i class="ico-cart"></i>
Order: <b>{{$order->order_reference}}</b></h3>
</div>
<div class="modal-body">
<h3>Order Details</h3>
<div class="row">
<div class="col-xs-12">
<label for="first_name" class="form-control-label">First Name</label>
<input type="text" name="first_name" class="form-control" value="{{ $order->first_name }}">
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label for="last_name" class="form-control-label">Last Name</label>
<input type="text" name="last_name" class="form-control" value="{{ $order->last_name }}">
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label for="email" class="form-control-label">Email</label>
<input type="text" name="email" class="form-control" value="{{ $order->email }}">
</div>
</div>
</div> <!-- /end modal body-->
<div class="modal-footer">
{!! Form::button('Close', ['class'=>"btn modal-close btn-danger",'data-dismiss'=>'modal']) !!}
{!! Form::submit('Update Order', ['class'=>"btn btn-success"]) !!}
</div>
{!! Form::close() !!}
</div><!-- /end modal content-->
</div>
</div>

View File

@ -177,6 +177,7 @@
</td>
<td>
{{{$attendee->ticket->title}}}
{{{$order->order_reference}}}-{{{$attendee->reference_index}}}
</td>
</tr>
@endforeach
@ -187,6 +188,11 @@
</div> <!-- /end modal body-->
<div class="modal-footer">
<a href="javascript:void(0);" data-modal-id="edit-order-{{ $order->id }}" data-href="{{route('showEditOrder', ['order_id'=>$order->id])}}" title="Edit Order" class="btn btn-info loadModal">
Edit
</a>
<a class="btn btn-primary" target="_blank" href="{{route('showOrderTickets', ['order_reference' => $order->order_reference])}}?download=1">Print Tickets</a>
<span class="pauseTicketSales btn btn-success" data-id="{{$order->id}}" data-route="{{route('resendOrder', ['order_id'=>$order->id])}}">Resend Tickets</span>
{!! Form::button('Close', ['class'=>"btn modal-close btn-danger",'data-dismiss'=>'modal']) !!}
</div>
</div><!-- /end modal content-->