2016-11-15 08:51:04 +00:00
|
|
|
<?php
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
|
|
use App\Models\Event;
|
|
|
|
|
use App\Models\Sponsor;
|
|
|
|
|
use File;
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
use Image;
|
|
|
|
|
use Validator;
|
|
|
|
|
|
|
|
|
|
class EventSponsorController extends MyBaseController
|
|
|
|
|
{
|
2016-11-15 09:13:49 +00:00
|
|
|
/* TODO: PROTECT THE SPONSORS FROM DELETION BY UNAUTHORIZED USERS */
|
|
|
|
|
|
2016-11-15 08:51:04 +00:00
|
|
|
/**
|
|
|
|
|
* Show the Sponsor Overview Page
|
|
|
|
|
*
|
|
|
|
|
* @param int $event_id
|
|
|
|
|
*
|
|
|
|
|
* @return \Illuminate\View\View
|
|
|
|
|
*/
|
|
|
|
|
public function showSponsors($event_id)
|
|
|
|
|
{
|
|
|
|
|
$data = $this->getEventViewData($event_id);
|
|
|
|
|
|
|
|
|
|
return view('ManageEvent.Sponsors', $data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return the Sponsor Create Modal
|
|
|
|
|
*
|
|
|
|
|
* @param $event_id
|
|
|
|
|
*
|
|
|
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
|
|
|
|
*/
|
|
|
|
|
public function showCreateSponsor($event_id)
|
|
|
|
|
{
|
|
|
|
|
return view('ManageEvent.Modals.CreateSponsor', [
|
|
|
|
|
'event' => Event::scope()->find($event_id),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Persist a new Sponsor to the Database
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
|
* @param $event_id
|
|
|
|
|
*
|
|
|
|
|
* @return \Illuminate\Http\JsonResponse
|
|
|
|
|
*/
|
|
|
|
|
public function postCreateSponsor(Request $request, $event_id)
|
|
|
|
|
{
|
|
|
|
|
$this->persistSponsor($request, null, $event_id);
|
|
|
|
|
|
|
|
|
|
return response()->json([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'The sponsor has been created',
|
2016-11-15 09:13:49 +00:00
|
|
|
'redirectUrl' => route('showEventSponsors', [
|
|
|
|
|
'event_id' => $event_id,
|
|
|
|
|
]),
|
2016-11-15 08:51:04 +00:00
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Shows 'Manage Sponsor' modal
|
|
|
|
|
*
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @param int $event_id
|
|
|
|
|
* @param int $sponsor_id
|
|
|
|
|
*
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function showEditSponsor(Request $request, $event_id, $sponsor_id)
|
|
|
|
|
{
|
|
|
|
|
$data = [
|
2016-11-15 09:13:49 +00:00
|
|
|
'sponsor' => Sponsor::find($sponsor_id),
|
2016-11-15 08:51:04 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
return view('ManageEvent.Modals.ManageSponsor', $data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Persist Sponsor Changes to the Database
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
|
*
|
|
|
|
|
* @param $event_id
|
|
|
|
|
* @param $sponsor_id
|
|
|
|
|
*
|
|
|
|
|
* @return \Illuminate\Http\JsonResponse
|
|
|
|
|
*/
|
|
|
|
|
public function postEditSponsor(Request $request, $event_id, $sponsor_id)
|
|
|
|
|
{
|
|
|
|
|
$this->persistSponsor($request, $sponsor_id);
|
|
|
|
|
|
|
|
|
|
return response()->json([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'The sponsor has been updated',
|
2016-11-15 09:13:49 +00:00
|
|
|
'redirectUrl' => route('showEventSponsors', [
|
|
|
|
|
'event_id' => $event_id,
|
|
|
|
|
]),
|
2016-11-15 08:51:04 +00:00
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Delete a Sponsor
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
|
*
|
|
|
|
|
* @param $event_id
|
|
|
|
|
* @param $sponsor_id
|
|
|
|
|
*
|
|
|
|
|
* @return \Illuminate\Http\JsonResponse
|
|
|
|
|
*/
|
|
|
|
|
public function postDeleteSponsor(Request $request, $event_id, $sponsor_id)
|
|
|
|
|
{
|
2016-11-15 09:13:49 +00:00
|
|
|
Sponsor::where('id', $sponsor_id)->delete();
|
2016-11-15 08:51:04 +00:00
|
|
|
|
|
|
|
|
return response()->json([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'The sponsor has been deleted',
|
2016-11-15 09:13:49 +00:00
|
|
|
'redirectUrl' => route('showEventSponsors', [
|
|
|
|
|
'event_id' => $event_id,
|
|
|
|
|
]),
|
2016-11-15 08:51:04 +00:00
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Persist a Sponsor to the Database
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Http\Request $request
|
|
|
|
|
* @param null|int $sponsor_id
|
|
|
|
|
* @param null|int $event_id
|
|
|
|
|
*
|
|
|
|
|
* @return \Illuminate\Http\JsonResponse
|
|
|
|
|
*/
|
|
|
|
|
private function persistSponsor(Request $request, $sponsor_id = null, $event_id = null)
|
|
|
|
|
{
|
|
|
|
|
$rules = [
|
|
|
|
|
'name' => 'required|max:250',
|
|
|
|
|
'sponsor_logo' => 'image',
|
|
|
|
|
'on_ticket' => 'boolean',
|
2016-11-28 12:43:28 +00:00
|
|
|
'is_active' => 'boolean',
|
2016-11-15 08:51:04 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$validator = Validator::make($request->all(), $rules);
|
|
|
|
|
|
|
|
|
|
if ($validator->fails()) {
|
|
|
|
|
return response()->json([
|
|
|
|
|
'status' => 'error',
|
|
|
|
|
'messages' => $validator->messages()->toArray(),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($sponsor_id) {
|
2016-11-15 09:13:49 +00:00
|
|
|
$sponsor = Sponsor::findOrFail($sponsor_id);
|
2016-11-15 08:51:04 +00:00
|
|
|
} else {
|
|
|
|
|
$sponsor = new Sponsor;
|
|
|
|
|
|
|
|
|
|
/* TODO: Protect this by checking which events the authenticated users can manage */
|
|
|
|
|
$sponsor->event_id = $event_id;
|
|
|
|
|
}
|
|
|
|
|
|
2016-11-15 09:13:49 +00:00
|
|
|
if ($request->hasFile('sponsor_logo')) {
|
2016-11-15 08:51:04 +00:00
|
|
|
$file = $request->file('sponsor_logo');
|
|
|
|
|
$name = md5_file($file->path()) . md5(time()) . '.' . $file->guessExtension();
|
|
|
|
|
$path = 'user_content/sponsors/';
|
|
|
|
|
|
|
|
|
|
$file->move(public_path($path), $name);
|
|
|
|
|
$sponsor->logo_path = $path . $name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sponsor->on_ticket = $request->has('on_ticket');
|
2016-11-28 12:43:28 +00:00
|
|
|
$sponsor->is_active = $request->has('is_active');
|
2016-11-15 08:51:04 +00:00
|
|
|
$sponsor->name = $request->get('name');
|
|
|
|
|
|
|
|
|
|
$sponsor->save();
|
|
|
|
|
}
|
|
|
|
|
}
|