diff --git a/app/Handlers/QueueHandler.php b/app/Handlers/QueueHandler.php index b01d55df..19e2be52 100644 --- a/app/Handlers/QueueHandler.php +++ b/app/Handlers/QueueHandler.php @@ -41,8 +41,11 @@ class QueueHandler exit($pdf_file); PDF::setOutputMode('F'); // force to file - PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $pdf_file); - + if(count($this->event->ticket_sponsors)) { + PDF::html('Public.ViewEvent.Partials.PDFSponsorTicket', $data, $pdf_file); + } else { + PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $pdf_file); + } //1 $this->orderMailer->sendOrderNotification($order); //2 diff --git a/app/Http/Controllers/EventAttendeesController.php b/app/Http/Controllers/EventAttendeesController.php index 4ab53545..eeb66496 100644 --- a/app/Http/Controllers/EventAttendeesController.php +++ b/app/Http/Controllers/EventAttendeesController.php @@ -31,6 +31,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $event_id + * * @return View */ public function showAttendees(Request $request, $event_id) @@ -66,11 +67,11 @@ class EventAttendeesController extends MyBaseController } $data = [ - 'attendees' => $attendees, - 'event' => $event, - 'sort_by' => $sort_by, + 'attendees' => $attendees, + 'event' => $event, + 'sort_by' => $sort_by, 'sort_order' => $sort_order, - 'q' => $searchQuery ? $searchQuery : '', + 'q' => $searchQuery ? $searchQuery : '', ]; return view('ManageEvent.Attendees', $data); @@ -81,6 +82,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $event_id + * * @return string|View */ public function showInviteAttendee(Request $request, $event_id) @@ -96,7 +98,7 @@ class EventAttendeesController extends MyBaseController } return view('ManageEvent.Modals.InviteAttendee', [ - 'event' => $event, + 'event' => $event, 'tickets' => $event->tickets()->lists('title', 'id'), ]); } @@ -106,18 +108,19 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $event_id + * * @return mixed */ public function postInviteAttendee(Request $request, $event_id) { $rules = [ 'first_name' => 'required', - 'ticket_id' => 'required|exists:tickets,id,account_id,' . \Auth::user()->account_id, - 'email' => 'email|required', + 'ticket_id' => 'required|exists:tickets,id,account_id,' . \Auth::user()->account_id, + 'email' => 'email|required', ]; $messages = [ - 'ticket_id.exists' => 'The ticket you have selected does not exist', + 'ticket_id.exists' => 'The ticket you have selected does not exist', 'ticket_id.required' => 'The ticket field is required. ', ]; @@ -125,7 +128,7 @@ class EventAttendeesController extends MyBaseController if ($validator->fails()) { return response()->json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } @@ -203,7 +206,7 @@ class EventAttendeesController extends MyBaseController DB::commit(); return response()->json([ - 'status' => 'success', + 'status' => 'success', 'redirectUrl' => route('showEventAttendees', [ 'event_id' => $event_id, ]), @@ -216,7 +219,7 @@ class EventAttendeesController extends MyBaseController return response()->json([ 'status' => 'error', - 'error' => 'An error occurred while inviting this attendee. Please try again.' + 'error' => 'An error occurred while inviting this attendee. Please try again.', ]); } @@ -227,6 +230,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $event_id + * * @return string|View */ public function showImportAttendee(Request $request, $event_id) @@ -242,7 +246,7 @@ class EventAttendeesController extends MyBaseController } return view('ManageEvent.Modals.ImportAttendee', [ - 'event' => $event, + 'event' => $event, 'tickets' => $event->tickets()->lists('title', 'id'), ]); } @@ -253,12 +257,13 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $event_id + * * @return mixed */ public function postImportAttendee(Request $request, $event_id) { $rules = [ - 'ticket_id' => 'required|exists:tickets,id,account_id,' . \Auth::user()->account_id, + 'ticket_id' => 'required|exists:tickets,id,account_id,' . \Auth::user()->account_id, 'attendees_list' => 'required|mimes:csv,txt|max:5000|', ]; @@ -269,7 +274,7 @@ class EventAttendeesController extends MyBaseController $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return response()->json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); @@ -357,8 +362,8 @@ class EventAttendeesController extends MyBaseController session()->flash('message', $num_added . ' Attendees Successfully Invited'); return response()->json([ - 'status' => 'success', - 'id' => $attendee->id, + 'status' => 'success', + 'id' => $attendee->id, 'redirectUrl' => route('showEventAttendees', [ 'event_id' => $event_id, ]), @@ -369,6 +374,7 @@ class EventAttendeesController extends MyBaseController * Show the printable attendee list * * @param $event_id + * * @return View */ public function showPrintAttendees($event_id) @@ -384,6 +390,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $attendee_id + * * @return View */ public function showMessageAttendee(Request $request, $attendee_id) @@ -392,7 +399,7 @@ class EventAttendeesController extends MyBaseController $data = [ 'attendee' => $attendee, - 'event' => $attendee->event, + 'event' => $attendee->event, ]; return view('ManageEvent.Modals.MessageAttendee', $data); @@ -403,6 +410,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $attendee_id + * * @return mixed */ public function postMessageAttendee(Request $request, $attendee_id) @@ -416,7 +424,7 @@ class EventAttendeesController extends MyBaseController if ($validator->fails()) { return response()->json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } @@ -424,11 +432,11 @@ class EventAttendeesController extends MyBaseController $attendee = Attendee::scope()->findOrFail($attendee_id); $data = [ - 'attendee' => $attendee, + 'attendee' => $attendee, 'message_content' => $request->get('message'), - 'subject' => $request->get('subject'), - 'event' => $attendee->event, - 'email_logo' => $attendee->event->organiser->full_logo_path, + 'subject' => $request->get('subject'), + 'event' => $attendee->event, + 'email_logo' => $attendee->event->organiser->full_logo_path, ]; //@todo move this to the SendAttendeeMessage Job @@ -450,7 +458,7 @@ class EventAttendeesController extends MyBaseController } return response()->json([ - 'status' => 'success', + 'status' => 'success', 'message' => 'Message Successfully Sent', ]); } @@ -459,12 +467,13 @@ class EventAttendeesController extends MyBaseController * Shows the 'Message Attendees' modal * * @param $event_id + * * @return View */ public function showMessageAttendees(Request $request, $event_id) { $data = [ - 'event' => Event::scope()->find($event_id), + 'event' => Event::scope()->find($event_id), 'tickets' => Event::scope()->find($event_id)->tickets()->lists('title', 'id')->toArray(), ]; @@ -476,13 +485,14 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $event_id + * * @return mixed */ public function postMessageAttendees(Request $request, $event_id) { $rules = [ - 'subject' => 'required', - 'message' => 'required', + 'subject' => 'required', + 'message' => 'required', 'recipients' => 'required', ]; @@ -490,7 +500,7 @@ class EventAttendeesController extends MyBaseController if ($validator->fails()) { return response()->json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } @@ -508,7 +518,7 @@ class EventAttendeesController extends MyBaseController $this->dispatch(new SendMessageToAttendees($message)); return response()->json([ - 'status' => 'success', + 'status' => 'success', 'message' => 'Message Successfully Sent', ]); } @@ -603,6 +613,7 @@ class EventAttendeesController extends MyBaseController * @param Request $request * @param $event_id * @param $attendee_id + * * @return View */ public function showEditAttendee(Request $request, $event_id, $attendee_id) @@ -611,8 +622,8 @@ class EventAttendeesController extends MyBaseController $data = [ 'attendee' => $attendee, - 'event' => $attendee->event, - 'tickets' => $attendee->event->tickets->lists('title', 'id'), + 'event' => $attendee->event, + 'tickets' => $attendee->event->tickets->lists('title', 'id'), ]; return view('ManageEvent.Modals.EditAttendee', $data); @@ -624,18 +635,19 @@ class EventAttendeesController extends MyBaseController * @param Request $request * @param $event_id * @param $attendee_id + * * @return mixed */ public function postEditAttendee(Request $request, $event_id, $attendee_id) { $rules = [ 'first_name' => 'required', - 'ticket_id' => 'required|exists:tickets,id,account_id,' . Auth::user()->account_id, - 'email' => 'required|email', + 'ticket_id' => 'required|exists:tickets,id,account_id,' . Auth::user()->account_id, + 'email' => 'required|email', ]; $messages = [ - 'ticket_id.exists' => 'The ticket you have selected does not exist', + 'ticket_id.exists' => 'The ticket you have selected does not exist', 'ticket_id.required' => 'The ticket field is required. ', ]; @@ -643,7 +655,7 @@ class EventAttendeesController extends MyBaseController if ($validator->fails()) { return response()->json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } @@ -654,8 +666,8 @@ class EventAttendeesController extends MyBaseController session()->flash('message', 'Successfully Updated Attendee'); return response()->json([ - 'status' => 'success', - 'id' => $attendee->id, + 'status' => 'success', + 'id' => $attendee->id, 'redirectUrl' => '', ]); } @@ -666,6 +678,7 @@ class EventAttendeesController extends MyBaseController * @param Request $request * @param $event_id * @param $attendee_id + * * @return View */ public function showCancelAttendee(Request $request, $event_id, $attendee_id) @@ -674,8 +687,8 @@ class EventAttendeesController extends MyBaseController $data = [ 'attendee' => $attendee, - 'event' => $attendee->event, - 'tickets' => $attendee->event->tickets->lists('title', 'id'), + 'event' => $attendee->event, + 'tickets' => $attendee->event->tickets->lists('title', 'id'), ]; return view('ManageEvent.Modals.CancelAttendee', $data); @@ -687,6 +700,7 @@ class EventAttendeesController extends MyBaseController * @param Request $request * @param $event_id * @param $attendee_id + * * @return mixed */ public function postCancelAttendee(Request $request, $event_id, $attendee_id) @@ -696,7 +710,7 @@ class EventAttendeesController extends MyBaseController if ($attendee->is_cancelled) { return response()->json([ - 'status' => 'success', + 'status' => 'success', 'message' => 'Attendee Already Cancelled', ]); } @@ -714,7 +728,7 @@ class EventAttendeesController extends MyBaseController } $data = [ - 'attendee' => $attendee, + 'attendee' => $attendee, 'email_logo' => $attendee->event->organiser->full_logo_path, ]; @@ -742,7 +756,7 @@ class EventAttendeesController extends MyBaseController $request = $gateway->refund([ 'transactionReference' => $attendee->order->transaction_id, - 'amount' => $refund_amount, + 'amount' => $refund_amount, 'refundApplicationFee' => false, ]); @@ -778,7 +792,7 @@ class EventAttendeesController extends MyBaseController if ($error_message) { return response()->json([ - 'status' => 'error', + 'status' => 'error', 'message' => $error_message, ]); } @@ -786,8 +800,8 @@ class EventAttendeesController extends MyBaseController session()->flash('message', 'Successfully Cancelled Attenddee'); return response()->json([ - 'status' => 'success', - 'id' => $attendee->id, + 'status' => 'success', + 'id' => $attendee->id, 'redirectUrl' => '', ]); } @@ -797,6 +811,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $attendee_id + * * @return View */ public function showResendTicketToAttendee(Request $request, $attendee_id) @@ -805,7 +820,7 @@ class EventAttendeesController extends MyBaseController $data = [ 'attendee' => $attendee, - 'event' => $attendee->event, + 'event' => $attendee->event, ]; return view('ManageEvent.Modals.ResendTicketToAttendee', $data); @@ -816,6 +831,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $attendee_id + * * @return mixed */ public function postResendTicketToAttendee(Request $request, $attendee_id) @@ -825,7 +841,7 @@ class EventAttendeesController extends MyBaseController $this->dispatch(new SendAttendeeTicket($attendee)); return response()->json([ - 'status' => 'success', + 'status' => 'success', 'message' => 'Ticket Successfully Resent', ]); } @@ -836,6 +852,7 @@ class EventAttendeesController extends MyBaseController * * @param Request $request * @param $attendee_id + * * @return bool */ public function showAttendeeTicket(Request $request, $attendee_id) @@ -843,19 +860,28 @@ class EventAttendeesController extends MyBaseController $attendee = Attendee::scope()->findOrFail($attendee_id); $data = [ - 'order' => $attendee->order, - 'event' => $attendee->event, - 'tickets' => $attendee->ticket, + 'order' => $attendee->order, + 'event' => $attendee->event, + 'tickets' => $attendee->ticket, 'attendees' => [$attendee], - 'css' => file_get_contents(public_path('assets/stylesheet/ticket.css')), - 'image' => base64_encode(file_get_contents(public_path($attendee->event->organiser->full_logo_path))), + 'css' => file_get_contents(public_path('assets/stylesheet/ticket.css')), + 'image' => base64_encode(file_get_contents(public_path($attendee->event->organiser->full_logo_path))), ]; if ($request->get('download') == '1') { - return PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, 'Tickets'); + if (count($this->event->ticket_sponsors)) { + return PDF::html('Public.ViewEvent.Partials.PDFSponsorTicket', $data, 'Tickets'); + } else { + return PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, 'Tickets'); + } + } + + if (count($this->event->ticket_sponsors)) { + return view('Public.ViewEvent.Partials.PDFSponsorTicket', $data); + } else { + return view('Public.ViewEvent.Partials.PDFTicket', $data); } - return view('Public.ViewEvent.Partials.PDFTicket', $data); } } diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php index e3a41534..40b8aa49 100644 --- a/app/Http/Controllers/EventCheckoutController.php +++ b/app/Http/Controllers/EventCheckoutController.php @@ -741,9 +741,18 @@ class EventCheckoutController extends Controller ]; if ($request->get('download') == '1') { - return PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, 'Tickets'); + if(count($order->event->ticket_sponsors)) { + PDF::html('Public.ViewEvent.Partials.PDFSponsorTicket', $data, 'Tickets'); + } else { + PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, 'Tickets'); + } + } + + if(count($this->event->ticket_sponsors)) { + return view('Public.ViewEvent.Partials.PDFSponsorTicket', $data); + } else { + return view('Public.ViewEvent.Partials.PDFTicket', $data); } - return view('Public.ViewEvent.Partials.PDFTicket', $data); } } diff --git a/app/Http/Controllers/EventSponsorController.php b/app/Http/Controllers/EventSponsorController.php new file mode 100644 index 00000000..2c752ad2 --- /dev/null +++ b/app/Http/Controllers/EventSponsorController.php @@ -0,0 +1,182 @@ +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', + 'redirectUrl' => route('showEventSponsors', [ + 'event_id' => $event_id, + ]), + ]); + } + + + /** + * 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 = [ + 'sponsor' => Sponsor::find($sponsor_id), + ]; + + 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', + 'redirectUrl' => route('showEventSponsors', [ + 'event_id' => $event_id, + ]), + ]); + } + + + /** + * 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) + { + Sponsor::where('id', $sponsor_id)->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'The sponsor has been deleted', + 'redirectUrl' => route('showEventSponsors', [ + 'event_id' => $event_id, + ]), + ]); + } + + /** + * 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', + 'is_active' => 'boolean', + ]; + + $validator = Validator::make($request->all(), $rules); + + if ($validator->fails()) { + return response()->json([ + 'status' => 'error', + 'messages' => $validator->messages()->toArray(), + ]); + } + + if ($sponsor_id) { + $sponsor = Sponsor::findOrFail($sponsor_id); + } else { + $sponsor = new Sponsor; + + /* TODO: Protect this by checking which events the authenticated users can manage */ + $sponsor->event_id = $event_id; + } + + if ($request->hasFile('sponsor_logo')) { + $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'); + $sponsor->is_active = $request->has('is_active'); + $sponsor->name = $request->get('name'); + + $sponsor->save(); + } +} \ No newline at end of file diff --git a/app/Http/routes.php b/app/Http/routes.php index 4d7bdebe..40067816 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -596,6 +596,43 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { 'uses' => 'EventWidgetsController@showEventWidgets', ]); + + /* + * --------- + * Sponsors + * --------- + */ + Route::get('{event_id}/sponsors', [ + 'as' => 'showEventSponsors', + 'uses' => 'EventSponsorController@showSponsors', + ]); + + Route::get('{event_id}/sponsors/create', [ + 'as' => 'showCreateSponsor', + 'uses' => 'EventSponsorController@showCreateSponsor', + ]); + + Route::post('{event_id}/sponsors/create', [ + 'as' => 'postCreateSponsor', + 'uses' => 'EventSponsorController@postCreateSponsor' + ]); + + Route::get('{event_id}/sponsors/{sponsor_id}/edit', [ + 'as' => 'showEditSponsor', + 'uses' => 'EventSponsorController@showEditSponsor' + ]); + + Route::post('{event_id}/sponsors/{sponsor_id}/edit', [ + 'as' => 'postEditSponsor', + 'uses' => 'EventSponsorController@postEditSponsor' + ]); + + Route::post('{event_id}/sponsors/{sponsor_id}/delete', [ + 'as' => 'postDeleteSponsor', + 'uses' => 'EventSponsorController@postDeleteSponsor' + ]); + + /* * ------- * Event Survey page diff --git a/app/Jobs/GenerateTicket.php b/app/Jobs/GenerateTicket.php index 81ee0893..415f3cf6 100644 --- a/app/Jobs/GenerateTicket.php +++ b/app/Jobs/GenerateTicket.php @@ -73,7 +73,11 @@ class GenerateTicket extends Job implements ShouldQueue ]; PDF::setOutputMode('F'); // force to file - PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $file_path); + if(count($event->ticket_sponsors)) { + PDF::html('Public.ViewEvent.Partials.PDFSponsorTicket', $data, $file_path); + } else { + PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $file_path); + } Log::info("Ticket generated!"); } diff --git a/app/Models/Event.php b/app/Models/Event.php index 8ab98f43..de0ff1a2 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -51,6 +51,26 @@ class Event extends MyBaseModel return $this->belongsToMany(\App\Models\Question::class, 'event_question'); } + /** + * The sponsors associated with the event. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function sponsors() + { + return $this->hasMany(Sponsor::class); + } + + /** + * The ticket_sponsors associated with the event. + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function ticket_sponsors() + { + return $this->hasMany(Sponsor::class)->where('on_ticket', 1); + } + /** * The questions associated with the event. * diff --git a/app/Models/Order.php b/app/Models/Order.php index 188b40e1..b74aaf00 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -159,7 +159,12 @@ class Order extends MyBaseModel } PDF::setOutputMode('F'); // force to file - PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $pdf_file_path); + + if(count($this->event->ticket_sponsors)) { + PDF::html('Public.ViewEvent.Partials.PDFSponsorTicket', $data, $pdf_file_path); + } else { + PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $pdf_file_path); + } $this->ticket_pdf_path = config('attendize.event_pdf_tickets_path') . '/' . $this->order_reference . '.pdf'; $this->save(); diff --git a/app/Models/Sponsor.php b/app/Models/Sponsor.php new file mode 100644 index 00000000..d6bd6160 --- /dev/null +++ b/app/Models/Sponsor.php @@ -0,0 +1,27 @@ +logo_path && (file_exists(config('attendize.cdn_url_user_assets') . '/' . $this->logo_path) || file_exists(public_path($this->logo_path)))) { + return config('attendize.cdn_url_user_assets') . '/' . $this->logo_path; + } + + return config('attendize.fallback_organiser_logo_url'); + } + + public function scopeActive($query) + { + return $query->where('is_active', 1); + } +} \ No newline at end of file diff --git a/config/app.php b/config/app.php index 1fa1cf8f..0e4796a5 100644 --- a/config/app.php +++ b/config/app.php @@ -92,7 +92,7 @@ return [ */ 'key' => env('APP_KEY', 'SomeRandomString'), - 'cipher' => MCRYPT_RIJNDAEL_128, + 'cipher' => 'AES-256-CBC', /* |-------------------------------------------------------------------------- @@ -232,7 +232,6 @@ return [ 'Purifier' => Mews\Purifier\Facades\Purifier::class, 'Markdown' => MaxHoffmann\Parsedown\ParsedownFacade::class, 'Omnipay' => Omnipay\Omnipay::class, - // 'Omnipay' => Omnipay\Omnipay::class, ], ]; diff --git a/database/migrations/2016_11_15_080611_create_sponsors_table.php b/database/migrations/2016_11_15_080611_create_sponsors_table.php new file mode 100644 index 00000000..10870ebc --- /dev/null +++ b/database/migrations/2016_11_15_080611_create_sponsors_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('name'); + $table->integer('event_id')->unsigned()->index(); + $table->string('logo_path')->nullable()->default(null); + $table->boolean('on_ticket'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('sponsors'); + } +} diff --git a/database/migrations/2016_11_28_133604_add_active_to_sponsors.php b/database/migrations/2016_11_28_133604_add_active_to_sponsors.php new file mode 100644 index 00000000..8d2c7166 --- /dev/null +++ b/database/migrations/2016_11_28_133604_add_active_to_sponsors.php @@ -0,0 +1,31 @@ +boolean('is_active')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('sponsors', function($table){ + $table->dropColumn('is_active'); + }); + } +} diff --git a/public/assets/stylesheet/ticket.css b/public/assets/stylesheet/ticket.css index fd3710b6..f29e80ca 100644 --- a/public/assets/stylesheet/ticket.css +++ b/public/assets/stylesheet/ticket.css @@ -1,19 +1,20 @@ -.ticket { - /*page-break-after: always;*/ - padding: 10px; - border: 1px solid #000; - width: 700px; - margin: 0 auto; - margin-top: 20px; - background: #000; - position: relative; - height: 330px; - font-size: 12px; - color: #999; - border-left-width: 3px; - border-left-color: #000; - overflow: hidden; +/* +* --------- +* Variables +* --------- +*/ +.color-primary { + color: #662483!important; } +.color-alt { + color: #f39200!important; +} + +/* +* --------- +* Global +* --------- +*/ .ticket table { width: 100%; @@ -24,13 +25,46 @@ margin-top: 0px; } +.ticket h4 { + font-size: 17px; + margin: 6px auto; + text-transform: uppercase; + color: #999; + +} + .ticket hr { border: none; border-bottom: 1px solid #ccc; margin: 5px 0; } -.ticket .barcode { +.ticket .b-l-2{ + border-left: 2px solid #000; +} + + +/* +* --------- +* No-Sponsors +* --------- +*/ +.ticket.no-sponsors { + padding: 10px; + border: 1px solid #000; + width: 700px; + margin: 0 auto; + margin-top: 20px; + position: relative; + height: 330px; + font-size: 12px; + color: #999; + border-left-width: 3px; + border-left-color: #000; + overflow: hidden; +} + +.ticket.no-sponsors .barcode { width: 150px; height: 150px; position: absolute; @@ -43,7 +77,7 @@ background-color: #fdfdfd; } -.ticket .barcode_vertical { +.ticket.no-sponsors .barcode_vertical { display: block; -moz-transform: rotate(-90deg); -ms-transform: rotate(-90deg); @@ -57,24 +91,12 @@ background: #fff; } -.ticket .top_barcode { - margin-bottom: 15px; -} - -.ticket h4 { - font-size: 17px; - margin: 6px auto; - text-transform: uppercase; - color: #999; - -} - -.ticket .event_details, .ticket .attendee_details { +.ticket.no-sponsors .event_details, .ticket.no-sponsors .attendee_details { position: absolute; top: 15px; } -.ticket .event_details { +.ticket.no-sponsors .event_details { left: 175px; overflow: hidden; max-width: 210px; @@ -83,7 +105,7 @@ top: 50px; } -.ticket .attendee_details { +.ticket.no-sponsors .attendee_details { left: 390px; overflow: hidden; max-width: 195px; @@ -92,7 +114,7 @@ top: 50px; } -.ticket .logo { +.ticket.no-sponsors .logo { position: absolute; right: 0px; top: 0px; @@ -103,6 +125,104 @@ text-align: center; } -.ticket .logo img { +.ticket.no-sponsors .logo img { max-width: 110px; +} + + +/* +* --------- +* Sponsors +* --------- +*/ + +.ticket.sponsors h4{ + margin-top: 4rem; + color:#000; + font-weight:800; +} + +.ticket.sponsors span, .ticket.sponsors p{ + margin:0; +} + +.ticket.sponsors { + page-break-after: always; + margin: 0 auto; + background: #fff; + position: relative; + height: auto; + font-size: 14px; + color:#000; + overflow: hidden; +} + +.ticket.sponsors .header { + height: 150px; + position: relative; + margin-bottom:20px; + font-size: 7rem; + line-height: 75px; + font-weight:300; +} + +.ticket.sponsors .ticket-type{ + font-size:3rem; + margin-bottom:0; +} + +.ticket.sponsors .event-title{ + line-height:30px; + font-weight:500; +} + +.ticket.sponsors .barcode { + margin-top: 30px; + text-align: center; + color: #000; +} + +.ticket.sponsors .body { + position: relative; + padding-bottom: 5rem; +} + +.ticket.sponsors .body h4, +.ticket.sponsors .body span +.ticket.sponsors .body p{ + line-height:.3rem; +} + +.ticket.sponsors .ticket-data{ + padding-bottom: 2rem; + padding-left: 3rem; +} + +.ticket.sponsors .logo{ + text-align: center; +} + +.ticket.sponsors .logo img { + height: 200px; +} + +.ticket.sponsors .footer { + text-align: center; + vertical-align: top; + position: relative; +} + +.ticket.sponsors .sponsor{ + height: 10rem; +} + +.ticket.sponsors .sponsor:nth-child(1), +.ticket.sponsors .sponsor:nth-child(2){ + margin:30px 0; +} + +.ticket.sponsors .footer img { + max-width: 100%; + max-height: 100%; + height:auto; } \ No newline at end of file diff --git a/resources/views/ManageEvent/Modals/CreateSponsor.blade.php b/resources/views/ManageEvent/Modals/CreateSponsor.blade.php new file mode 100644 index 00000000..df122e53 --- /dev/null +++ b/resources/views/ManageEvent/Modals/CreateSponsor.blade.php @@ -0,0 +1,52 @@ +
\ No newline at end of file diff --git a/resources/views/ManageEvent/Modals/ManageSponsor.blade.php b/resources/views/ManageEvent/Modals/ManageSponsor.blade.php new file mode 100644 index 00000000..f7a70412 --- /dev/null +++ b/resources/views/ManageEvent/Modals/ManageSponsor.blade.php @@ -0,0 +1,62 @@ + \ No newline at end of file diff --git a/resources/views/ManageEvent/Partials/Sidebar.blade.php b/resources/views/ManageEvent/Partials/Sidebar.blade.php index 1c7e1c83..ba05ea31 100644 --- a/resources/views/ManageEvent/Partials/Sidebar.blade.php +++ b/resources/views/ManageEvent/Partials/Sidebar.blade.php @@ -41,6 +41,12 @@ Promote +| Name | +On Ticket | +Active | +|
|---|---|---|---|
| + {{ $sponsor->name }} + | +{{ $sponsor->on_ticket ? 'Yes' : 'No' }} | +{{ $sponsor->is_active ? 'Yes' : 'No' }} | ++ {!! Form::open(array('url' => route('postDeleteSponsor', ['event_id' => $event->id, 'sponsor_id' => $sponsor->id]), 'class' => 'ajax text-right')) !!} + {!! Form::submit('Delete Sponsor', ['class'=>"btn btn-danger"]) !!} + {!! Form::close() !!} + | +
{{$attendee->ticket->title}}
+ {{ $event->title }} +{{ $event->venue_name }}
+{{ $event->location_address }}
+{{ $event->location_address_line_1 }}
+