- Using more Laravel 5 in the Attendee controller

This commit is contained in:
Dave 2016-03-11 01:03:33 +00:00
parent afaf6b8877
commit 011c67a78b
4 changed files with 201 additions and 95 deletions

View File

@ -13,6 +13,7 @@ use App\Models\Ticket;
use Auth;
use DB;
use Excel;
use Illuminate\Http\Request;
use Input;
use Mail;
use Response;
@ -22,16 +23,22 @@ use View;
class EventAttendeesController extends MyBaseController
{
public function showAttendees($event_id)
/**
* Show the attendees list
*
* @param Request $request
* @param $event_id
* @return View
*/
public function showAttendees(Request $request, $event_id)
{
$allowed_sorts = ['first_name', 'email', 'ticket_id', 'order_reference'];
$searchQuery = Input::get('q');
$sort_order = Input::get('sort_order') == 'asc' ? 'asc' : 'desc';
$sort_by = (in_array(Input::get('sort_by'), $allowed_sorts) ? Input::get('sort_by') : 'created_at');
$searchQuery = $request->get('q');
$sort_order = $request->get('sort_order') == 'asc' ? 'asc' : 'desc';
$sort_by = (in_array($request->get('sort_by'), $allowed_sorts) ? $request->get('sort_by') : 'created_at');
$event = Event::scope()->find($event_id);
//$event = Event::scope()->join('orders', 'orders.event_id', '=', 'attendees.id')->find($event_id);
if ($searchQuery) {
$attendees = $event->attendees()
@ -63,10 +70,17 @@ class EventAttendeesController extends MyBaseController
'q' => $searchQuery ? $searchQuery : '',
];
return View::make('ManageEvent.Attendees', $data);
return view('ManageEvent.Attendees', $data);
}
public function showCreateAttendee($event_id)
/**
* Show the 'Create Attendee' modal
*
* @param Request $request
* @param $event_id
* @return string|View
*/
public function showCreateAttendee(Request $request, $event_id)
{
$event = Event::scope()->find($event_id);
@ -78,14 +92,21 @@ class EventAttendeesController extends MyBaseController
return '<script>showMessage("You need to create a ticket before you can add an attendee.");</script>';
}
return View::make('ManageEvent.Modals.CreateAttendee', [
'modal_id' => \Input::get('modal_id'),
return view('ManageEvent.Modals.CreateAttendee', [
'modal_id' => $request->get('modal_id'),
'event' => $event,
'tickets' => $event->tickets()->lists('title', 'id'),
]);
}
public function postCreateAttendee($event_id)
/**
* Create an attendee
*
* @param Request $request
* @param $event_id
* @return mixed
*/
public function postCreateAttendee(Request $request, $event_id)
{
$rules = [
'first_name' => 'required',
@ -99,21 +120,21 @@ class EventAttendeesController extends MyBaseController
'ticket_id.required' => 'The ticket field is required. ',
];
$validator = Validator::make(Input::all(), $rules, $messages);
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return Response::json([
return response()->json([
'status' => 'error',
'messages' => $validator->messages()->toArray(),
]);
}
$ticket_id = Input::get('ticket_id');
$ticket_price = Input::get('ticket_price');
$attendee_first_name = Input::get('first_name');
$attendee_last_name = Input::get('last_name');
$attendee_email = Input::get('email');
$email_attendee = Input::get('email_ticket');
$ticket_id = $request->get('ticket_id');
$ticket_price = $request->get('ticket_price');
$attendee_first_name =$request->get('first_name');
$attendee_last_name = $request->get('last_name');
$attendee_email = $request->get('email');
$email_attendee = $request->get('email_ticket');
/*
* Create the order
@ -171,9 +192,9 @@ class EventAttendeesController extends MyBaseController
$this->dispatch(new OrderTicketsCommand($order, false));
}
Session::flash('message', 'Attendee Successfully Created');
session()->flash('message', 'Attendee Successfully Created');
return Response::json([
return response()->json([
'status' => 'success',
'id' => $attendee->id,
'redirectUrl' => route('showEventAttendees', [
@ -182,38 +203,58 @@ class EventAttendeesController extends MyBaseController
]);
}
/**
* Show the printable attendee list
*
* @param $event_id
* @return View
*/
public function showPrintAttendees($event_id)
{
$data['event'] = Event::scope()->find($event_id);
$data['attendees'] = $data['event']->attendees()->withoutCancelled()->orderBy('first_name')->get();
return View::make('ManageEvent.PrintAttendees', $data);
return view('ManageEvent.PrintAttendees', $data);
}
public function showMessageAttendee($attendee_id)
/**
* Show the 'Message Attendee' modal
*
* @param Request $request
* @param $attendee_id
* @return View
*/
public function showMessageAttendee(Request $request, $attendee_id)
{
$attendee = Attendee::scope()->findOrFail($attendee_id);
$data = [
'attendee' => $attendee,
'event' => $attendee->event,
'modal_id' => Input::get('modal_id'),
'modal_id' => $request->get('modal_id'),
];
return View::make('ManageEvent.Modals.MessageAttendee', $data);
return view('ManageEvent.Modals.MessageAttendee', $data);
}
public function postMessageAttendee($attendee_id)
/**
* Send a message to an attendee
*
* @param Request $request
* @param $attendee_id
* @return mixed
*/
public function postMessageAttendee(Request $request, $attendee_id)
{
$rules = [
'subject' => 'required',
'message' => 'required',
];
$validator = Validator::make(Input::all(), $rules);
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return Response::json([
return response()->json([
'status' => 'error',
'messages' => $validator->messages()->toArray(),
]);
@ -223,8 +264,8 @@ class EventAttendeesController extends MyBaseController
$data = [
'attendee' => $attendee,
'message_content' => Input::get('message'),
'subject' => Input::get('subject'),
'message_content' => $request->get('message'),
'subject' => $request->get('subject'),
'event' => $attendee->event,
'email_logo' => $attendee->event->organiser->full_logo_path,
];
@ -246,12 +287,18 @@ class EventAttendeesController extends MyBaseController
});
}
return Response::json([
return response()->json([
'status' => 'success',
'message' => 'Message Successfully Sent',
]);
}
/**
* Shows the 'Message Attendees' modal
*
* @param $event_id
* @return View
*/
public function showMessageAttendees($event_id)
{
$data = [
@ -260,10 +307,17 @@ class EventAttendeesController extends MyBaseController
'tickets' => Event::scope()->find($event_id)->tickets()->lists('title', 'id')->toArray(),
];
return View::make('ManageEvent.Modals.MessageAttendees', $data);
return view('ManageEvent.Modals.MessageAttendees', $data);
}
public function postMessageAttendees($event_id)
/**
* Send a message to attendees
*
* @param Request $request
* @param $event_id
* @return mixed
*/
public function postMessageAttendees(Request $request, $event_id)
{
$rules = [
'subject' => 'required',
@ -271,7 +325,7 @@ class EventAttendeesController extends MyBaseController
'recipients' => 'required',
];
$validator = Validator::make(Input::all(), $rules);
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return Response::json([
@ -281,9 +335,9 @@ class EventAttendeesController extends MyBaseController
}
$message = Message::createNew();
$message->message = Input::get('message');
$message->subject = Input::get('subject');
$message->recipients = Input::get('recipients');
$message->message = $request->get('message');
$message->subject = $request->get('subject');
$message->recipients = $request->get('recipients');
$message->event_id = $event_id;
$message->save();
@ -291,12 +345,18 @@ class EventAttendeesController extends MyBaseController
* Add to the queue
*/
return Response::json([
return response()->json([
'status' => 'success',
'message' => 'Message Successfully Sent',
]);
}
/**
* Downloads an export of attendees
*
* @param $event_id
* @param string $export_as (xlsx, xls, csv, html)
*/
public function showExportAttendees($event_id, $export_as = 'xls')
{
Excel::create('attendees-as-of-'.date('d-m-Y-g.i.a'), function ($excel) use ($event_id) {
@ -335,7 +395,15 @@ class EventAttendeesController extends MyBaseController
})->export($export_as);
}
public function showEditAttendee($event_id, $attendee_id)
/**
* Show the 'Edit Attendee' modal
*
* @param Request $request
* @param $event_id
* @param $attendee_id
* @return View
*/
public function showEditAttendee(Request $request, $event_id, $attendee_id)
{
$attendee = Attendee::scope()->findOrFail($attendee_id);
@ -343,13 +411,21 @@ class EventAttendeesController extends MyBaseController
'attendee' => $attendee,
'event' => $attendee->event,
'tickets' => $attendee->event->tickets->lists('title', 'id'),
'modal_id' => Input::get('modal_id'),
'modal_id' => $request->get('modal_id'),
];
return View::make('ManageEvent.Modals.EditAttendee', $data);
return view('ManageEvent.Modals.EditAttendee', $data);
}
public function postEditAttendee($event_id, $attendee_id)
/**
* Updates an attendee
*
* @param Request $request
* @param $event_id
* @param $attendee_id
* @return mixed
*/
public function postEditAttendee(Request $request, $event_id, $attendee_id)
{
$rules = [
'first_name' => 'required',
@ -362,32 +438,36 @@ class EventAttendeesController extends MyBaseController
'ticket_id.required' => 'The ticket field is required. ',
];
$validator = Validator::make(Input::all(), $rules, $messages);
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return Response::json([
return response()->json([
'status' => 'error',
'messages' => $validator->messages()->toArray(),
]);
}
$attendee = Attendee::scope()->findOrFail($attendee_id);
$attendee->update($request->all());
$attendee->first_name = Input::get('first_name');
$attendee->last_name = Input::get('last_name');
$attendee->email = Input::get('email');
$attendee->ticket_id = Input::get('ticket_id');
$attendee->save();
session()->flash('message', 'Successfully Updated Attendee');
return Response::json([
return response()->json([
'status' => 'success',
'id' => $attendee->id,
'message' => 'Refreshing...',
'redirectUrl' => '',
]);
}
public function showCancelAttendee($event_id, $attendee_id)
/**
* Shows the 'Cancel Attendee' modal
*
* @param Request $request
* @param $event_id
* @param $attendee_id
* @return View
*/
public function showCancelAttendee(Request $request, $event_id, $attendee_id)
{
$attendee = Attendee::scope()->findOrFail($attendee_id);
@ -395,13 +475,21 @@ class EventAttendeesController extends MyBaseController
'attendee' => $attendee,
'event' => $attendee->event,
'tickets' => $attendee->event->tickets->lists('title', 'id'),
'modal_id' => Input::get('modal_id'),
'modal_id' => $request->get('modal_id'),
];
return View::make('ManageEvent.Modals.CancelAttendee', $data);
return view('ManageEvent.Modals.CancelAttendee', $data);
}
public function postCancelAttendee($event_id, $attendee_id)
/**
* Cancels an attendee
*
* @param Request $request
* @param $event_id
* @param $attendee_id
* @return mixed
*/
public function postCancelAttendee(Request $request, $event_id, $attendee_id)
{
$attendee = Attendee::scope()->findOrFail($attendee_id);
@ -421,7 +509,7 @@ class EventAttendeesController extends MyBaseController
'email_logo' => $attendee->event->organiser->full_logo_path,
];
if (Input::get('notify_attendee') == '1') {
if ($request->get('notify_attendee') == '1') {
Mail::send('Emails.notifyCancelledAttendee', $data, function ($message) use ($attendee) {
$message->to($attendee->email, $attendee->full_name)
->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name)
@ -430,12 +518,11 @@ class EventAttendeesController extends MyBaseController
});
}
\Session::flash('message', 'Successfully Cancelled Attenddee');
session()->flash('message', 'Successfully Cancelled Attenddee');
return Response::json([
return response()->json([
'status' => 'success',
'id' => $attendee->id,
'message' => 'Refreshing...',
'redirectUrl' => '',
]);
}

View File

@ -17,6 +17,30 @@ class Attendee extends MyBaseModel
{
use SoftDeletes;
protected $fillable = [
'first_name',
'last_name',
'email',
'event_id',
'order_id',
'ticket_id',
'account_id',
'reference',
];
/**
* Generate a private referennce number for the attendee. Use for checking in the attendee.
*/
public static function boot()
{
parent::boot();
static::creating(function ($order) {
$order->private_reference_number = str_pad(rand(0, pow(10, 9) - 1), 9, '0', STR_PAD_LEFT);
});
}
public function order()
{
return$this->belongsTo('\App\Models\Order');
@ -37,30 +61,18 @@ class Attendee extends MyBaseModel
return $query->where('attendees.is_cancelled', '=', 0);
}
public function getFullNameAttribute()
{
return $this->first_name.' '.$this->last_name;
}
//
// public function getReferenceAttribute() {
// return $this->order->order_reference
// }
public function getFullNameAttribute()
{
return $this->first_name.' '.$this->last_name;
}
public function getDates()
{
return ['created_at', 'updated_at', 'arrival_time'];
}
/**
* Generate a private referennce number for the attendee. Use for checking in the attendee.
*/
public static function boot()
{
parent::boot();
static::creating(function ($order) {
$order->private_reference_number = str_pad(rand(0, pow(10, 9) - 1), 9, '0', STR_PAD_LEFT);
});
}
}

View File

@ -13,6 +13,13 @@ namespace App\Models;
*/
class Message extends MyBaseModel
{
protected $fillable = [
'message',
'subject',
'recipients',
];
public function event()
{
return $this->belongsTo('\App\Models\Event');

40
composer.lock generated
View File

@ -9,16 +9,16 @@
"packages": [
{
"name": "aws/aws-sdk-php",
"version": "3.15.7",
"version": "3.15.8",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "9a3af130cbbe0e7bebad03209ee47c0bbc25a36d"
"reference": "94630759de5e55c8e9670ea12b7ded132229696d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9a3af130cbbe0e7bebad03209ee47c0bbc25a36d",
"reference": "9a3af130cbbe0e7bebad03209ee47c0bbc25a36d",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/94630759de5e55c8e9670ea12b7ded132229696d",
"reference": "94630759de5e55c8e9670ea12b7ded132229696d",
"shasum": ""
},
"require": {
@ -85,7 +85,7 @@
"s3",
"sdk"
],
"time": "2016-03-04 05:10:17"
"time": "2016-03-08 23:21:09"
},
{
"name": "barryvdh/laravel-ide-helper",
@ -366,12 +366,12 @@
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
"reference": "e3d1b4fe74ee42c1a0a93e8a3a86fc4bbb3a94c0"
"reference": "eaa6b4f3cb9a779bd9f8ead71bd30427f8e863e1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/eaa6b4f3cb9a779bd9f8ead71bd30427f8e863e1",
"reference": "e3d1b4fe74ee42c1a0a93e8a3a86fc4bbb3a94c0",
"reference": "eaa6b4f3cb9a779bd9f8ead71bd30427f8e863e1",
"shasum": ""
},
"require": {
@ -419,7 +419,7 @@
],
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
"homepage": "https://github.com/dompdf/dompdf",
"time": "2016-03-03 15:02:18"
"time": "2016-03-09 04:08:12"
},
{
"name": "erusev/parsedown",
@ -721,16 +721,16 @@
},
{
"name": "guzzlehttp/promises",
"version": "1.0.3",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea"
"reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea",
"reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea",
"url": "https://api.github.com/repos/guzzle/promises/zipball/bb9024c526b22f3fe6ae55a561fd70653d470aa8",
"reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8",
"shasum": ""
},
"require": {
@ -768,7 +768,7 @@
"keywords": [
"promise"
],
"time": "2015-10-15 22:28:00"
"time": "2016-03-08 01:15:46"
},
{
"name": "guzzlehttp/psr7",
@ -1414,16 +1414,16 @@
},
{
"name": "league/flysystem",
"version": "1.0.17",
"version": "1.0.18",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "02f5b6c9a8b9278c8381e3361e7bd9d641c740ca"
"reference": "b334d6c5f95364948e06d2f620ab93d084074c6e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/02f5b6c9a8b9278c8381e3361e7bd9d641c740ca",
"reference": "02f5b6c9a8b9278c8381e3361e7bd9d641c740ca",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b334d6c5f95364948e06d2f620ab93d084074c6e",
"reference": "b334d6c5f95364948e06d2f620ab93d084074c6e",
"shasum": ""
},
"require": {
@ -1493,7 +1493,7 @@
"sftp",
"storage"
],
"time": "2016-02-19 15:35:38"
"time": "2016-03-07 21:01:43"
},
{
"name": "league/flysystem-aws-s3-v3",
@ -3338,7 +3338,7 @@
},
{
"name": "symfony/polyfill-php56",
"version": "v1.1.0",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
@ -3394,7 +3394,7 @@
},
{
"name": "symfony/polyfill-util",
"version": "v1.1.0",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",