diff --git a/app/Http/Controllers/EventAttendeesController.php b/app/Http/Controllers/EventAttendeesController.php index 641e1922..aa1da85f 100644 --- a/app/Http/Controllers/EventAttendeesController.php +++ b/app/Http/Controllers/EventAttendeesController.php @@ -358,6 +358,9 @@ class EventAttendeesController extends MyBaseController */ 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) { $excel->setTitle('Attendees List'); @@ -368,6 +371,7 @@ class EventAttendeesController extends MyBaseController $excel->sheet('attendees_sheet_1', function ($sheet) use ($event_id) { + DB::connection()->setFetchMode(\PDO::FETCH_ASSOC); $data = DB::table('attendees') ->where('attendees.event_id', '=', $event_id) @@ -376,12 +380,21 @@ class EventAttendeesController extends MyBaseController ->join('events', 'events.id', '=', 'attendees.event_id') ->join('orders', 'orders.id', '=', 'attendees.order_id') ->join('tickets', 'tickets.id', '=', 'attendees.ticket_id') - ->select( - 'attendees.first_name', 'attendees.last_name', 'attendees.email', 'attendees.reference', 'orders.order_reference', 'tickets.title', 'orders.created_at', DB::raw("(CASE WHEN attendees.has_arrived = 1 THEN 'YES' ELSE 'NO' END) AS `attendees.has_arrived`"), 'attendees.arrival_time')->get(); - //DB::raw("(CASE WHEN UNIX_TIMESTAMP(`attendees.arrival_time`) = 0 THEN '---' ELSE 'd' END) AS `attendees.arrival_time`")) + ->select([ + 'attendees.first_name', + 'attendees.last_name', + 'attendees.email', + 'attendees.reference', + 'orders.order_reference', + 'tickets.title', + 'orders.created_at', + DB::raw("(CASE WHEN attendees.has_arrived = 1 THEN 'YES' ELSE 'NO' END) AS `attendees.has_arrived`"), + 'attendees.arrival_time', + 'question_answers.answer_text' + ])->get(); $sheet->fromArray($data); - + $event = Event::scope()->findOrFail($event_id); $sheet->row(1, [ 'First Name', 'Last Name', 'Email', 'Ticket Reference', 'Order Reference', 'Ticket Type', 'Purchase Date', 'Has Arrived', 'Arrival Time', ]); diff --git a/app/Http/Controllers/EventSurveyController.php b/app/Http/Controllers/EventSurveyController.php index f672165d..11ff7e83 100644 --- a/app/Http/Controllers/EventSurveyController.php +++ b/app/Http/Controllers/EventSurveyController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Http\Requests\StoreEventQuestionRequest; use App\Models\Event; +use App\Models\Attendee; use App\Models\Question; use App\Models\QuestionType; use Illuminate\Http\Request; @@ -14,8 +15,14 @@ use Illuminate\Http\Request; class EventSurveyController extends MyBaseController { - - + + /** + * Show the event survey page + * + * @param Request $request + * @param $event_id + * @return mixed + */ public function showEventSurveys(Request $request, $event_id) { $event = Event::scope()->findOrFail($event_id); @@ -99,6 +106,14 @@ class EventSurveyController extends MyBaseController } + /** + * Show the Edit Question Modal + * + * @param Request $request + * @param $event_id + * @param $question_id + * @return mixed + */ public function showEditEventQuestion(Request $request, $event_id, $question_id) { $question = Question::scope()->findOrFail($question_id); @@ -115,6 +130,14 @@ class EventSurveyController extends MyBaseController } + /** + * Edits a question + * + * @param Request $request + * @param $event_id + * @param $question_id + * @return mixed + */ public function postEditEventQuestion(Request $request, $event_id, $question_id) { // Get the event or display a 'not found' warning. @@ -159,6 +182,13 @@ class EventSurveyController extends MyBaseController } + /** + * Delete a question + * + * @param Request $request + * @param $event_id + * @return mixed + */ public function postDeleteEventQuestion(Request $request, $event_id) { $question_id = $request->get('question_id'); @@ -183,4 +213,25 @@ class EventSurveyController extends MyBaseController ]); } + /** + * Show all attendees answers to questions + * + * @param Request $request + * @param $event_id + * @param $question_id + * @return mixed + */ + public function showEventQuestionAnswers(Request $request, $event_id, $question_id) + { + + $attendees = Attendee::scope()->where('event_id', $event_id)->get(); + + $data = [ + 'attendees' => $attendees, + 'modal_id' => $request->get('modal_id'), + ]; + + return view('ManageEvent.Modals.ViewAnswers', $data); + } + } diff --git a/app/Http/Controllers/EventWidgetsController.php b/app/Http/Controllers/EventWidgetsController.php new file mode 100644 index 00000000..5dfba7d5 --- /dev/null +++ b/app/Http/Controllers/EventWidgetsController.php @@ -0,0 +1,32 @@ +findOrFail($event_id); + + $data = [ + 'event' => $event, + ]; + + return view('ManageEvent.Widgets', $data); + } + + + +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 6069bd98..0d35d10c 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -540,6 +540,16 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { ]); + /* + * ------- + * Event Widget page + * ------- + */ + Route::get('{event_id}/widgets', [ + 'as' => 'showEventWidgets', + 'uses' => 'EventWidgetsController@showEventWidgets', + ]); + /* * ------- * Event Survey page @@ -575,6 +585,11 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { 'uses' => 'EventSurveyController@postDeleteEventQuestion' ]); + Route::get('{event_id}/question/{question_id}/answers', [ + 'as' => 'showEventQuestionAnswers', + 'uses' => 'EventSurveyController@showEventQuestionAnswers', + ]); + /* * ------- diff --git a/app/Models/EventStats.php b/app/Models/EventStats.php index 2a59c3eb..a8798862 100644 --- a/app/Models/EventStats.php +++ b/app/Models/EventStats.php @@ -33,7 +33,7 @@ class EventStats extends \Illuminate\Database\Eloquent\Model $amount = $amount * -1; } - $ticket->ticket_revenue = $ticket->ticket_revenue + $amount; + $ticket->sales_volume = $ticket->sales_volume + $amount; return $ticket->save(); } diff --git a/app/Models/Question.php b/app/Models/Question.php index 31b734e1..8075d92a 100644 --- a/app/Models/Question.php +++ b/app/Models/Question.php @@ -35,6 +35,11 @@ class Question extends MyBaseModel return $this->belongsTo('\App\Models\QuestionType'); } + public function answers() + { + return $this->hasMany('\App\Models\Answers'); + } + /** * The options associated with the question. * diff --git a/app/Models/QuestionAnswer.php b/app/Models/QuestionAnswer.php index 063d8796..827e22c9 100644 --- a/app/Models/QuestionAnswer.php +++ b/app/Models/QuestionAnswer.php @@ -24,11 +24,11 @@ class QuestionAnswer extends MyBaseModel } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function question() { return $this->belongsTo('\App\Models\Question'); } - + } diff --git a/public/assets/stylesheet/frontend.css b/public/assets/stylesheet/frontend.css index 4307427b..fcd81f8a 100644 --- a/public/assets/stylesheet/frontend.css +++ b/public/assets/stylesheet/frontend.css @@ -100,4 +100,4 @@ body { opacity: 0.7; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); } -body{font-family:'Open Sans',sans-serif}table{margin:0}@media (min-width:1200px){.container{width:960px}}section.container{padding:40px;background-color:#fff;margin-bottom:25px}.section_head{border:none !important;font-size:35px;text-align:center;margin:0;margin-bottom:30px;letter-spacing:.2em;font-weight:200}.section_head h1{margin:0;font-weight:100;text-align:center}section{color:#666}#organiser_page_wrap #intro{position:relative;text-align:center;font-weight:100;padding:20px 0 20px 0;border:none;margin-bottom:0;margin-top:20px;color:#fff;background-color:#af5050}#organiser_page_wrap .organiser_logo{max-width:150px;margin:0 auto}#organiser_page_wrap .organiser_logo .thumbnail{background-color:transparent;border:none}#event_page_wrap{background:rgba(0,0,0,0.4)}#event_page_wrap #organiserHead{text-align:center;color:#fff;border:none;font-size:15px;opacity:.6;transition:all .15s ease-in-out;background:rgba(0,0,0,0.4);line-height:30px;cursor:pointer}#event_page_wrap #organiserHead:hover{opacity:1}#event_page_wrap #intro{position:relative;text-align:center;font-weight:100;padding:20px 0 20px 0;color:#fff;border:none;background-color:transparent;margin-bottom:0}#event_page_wrap #intro h1{position:relative;padding:10px 10px;margin:0;font-weight:400;font-size:60px;margin-bottom:10px}#event_page_wrap #intro .event_date{font-size:15px;padding:10px;font-weight:500}#event_page_wrap #intro .event_venue{font-size:19px}#event_page_wrap #intro .event_buttons{margin-top:30px;margin-bottom:30px}#event_page_wrap #intro .event_buttons .btn-event-link{line-height:35px;font-size:17px;text-transform:uppercase;letter-spacing:5px;border:1px solid;border-color:rgba(255,255,255,0.2);text-decoration:none;color:#fff;padding:0 15px;transition:all .15s ease-in-out;width:100%;background:rgba(0,0,0,0.3)}#event_page_wrap #intro .event_buttons .btn-event-link:hover{border-color:rgba(255,255,255,0.6)}#event_page_wrap #tickets .input-group-addon{background:none;border:none}#event_page_wrap #tickets table tr:first-child td{border-top:none}#event_page_wrap #tickets table tr td{padding:20px 0}#event_page_wrap #details .event_poster img{border:4px solid #f6f6f6;max-width:100%;min-width:100%}#event_page_wrap #details .event_details iframe,#event_page_wrap #details .event_details img{max-width:100%}#event_page_wrap #details .event_details h1,#event_page_wrap #details .event_details h2,#event_page_wrap #details .event_details h3,#event_page_wrap #details .event_details h4,#event_page_wrap #details .event_details h5,#event_page_wrap #details .event_details h6{margin-top:0;margin-bottom:15px;font-weight:100}#event_page_wrap #details .event_details h1{font-size:28px}#event_page_wrap #details .event_details h2{font-size:24px}#event_page_wrap #details .event_details h3{font-size:20px}#event_page_wrap #details .event_details h4{font-size:17px}#event_page_wrap #share .btn{margin-bottom:20px}#event_page_wrap #location{padding:0}#event_page_wrap #location .google-maps{position:relative;overflow:hidden}#event_page_wrap #location .google-maps iframe{width:100% !important;height:100% !important;min-height:500px}#footer{background-color:#888;background-color:rgba(0,0,0,0.4);min-height:60px;line-height:60px;color:#fff;text-align:center}#organiser{text-align:center}#organiser .contact_form{display:none;padding:20px;margin-top:25px;text-align:left}.totop{border-radius:0;background-color:#888;background-color:rgba(0,0,0,0.4)}.totop:hover{background-color:#fff;background-color:rgba(255,255,255,0.4);color:#000}@media (min-width:100px) and (max-width:767px){.row{margin:0}section.container{margin-bottom:0;padding:10px}.section_head{padding:10px;font-size:30px}.main_content{padding:0;background:#fff}#organiser_page_wrap #intro{padding:30px}#organiser_page_wrap #intro h1{font-size:2.236em;padding:15px}#event_page_wrap #intro{padding:30px}#event_page_wrap #intro .event_date h2{font-size:20px}#event_page_wrap #intro .event_date h4{font-size:11px}#event_page_wrap #intro h1{font-size:2.236em;padding:15px}#event_page_wrap #intro .event_venue{color:#fff;font-size:20px;margin-top:10px}#event_page_wrap #intro .event_buttons{margin-top:50px}#event_page_wrap #intro .event_buttons .btn-event-link{padding:5px 0;font-size:18px;margin-bottom:5px;line-height:30px}#event_page_wrap #tickets .btn-checkout{width:100%}#event_page_wrap #location .google-maps iframe{min-height:290px}.content{padding:15px}}.rrssb-buttons.large-format li a{border-radius:0}.event-listing .event .panel{min-height:140px}.event-listing .event_flyer{text-align:center}.event-listing .event_flyer img{max-height:140px;max-width:100%} \ No newline at end of file +body{font-family:'Open Sans',sans-serif}table{margin:0}label.required::after{content:'*';color:red;padding-left:3px;font-size:9px}@media (min-width:1200px){.container{width:960px}}section.container{padding:40px;background-color:#fff;margin-bottom:25px}.section_head{border:none !important;font-size:35px;text-align:center;margin:0;margin-bottom:30px;letter-spacing:.2em;font-weight:200}.section_head h1{margin:0;font-weight:100;text-align:center}section{color:#666}#organiser_page_wrap #intro{position:relative;text-align:center;font-weight:100;padding:20px 0 20px 0;border:none;margin-bottom:0;margin-top:20px;color:#fff;background-color:#af5050}#organiser_page_wrap .organiser_logo{max-width:150px;margin:0 auto}#organiser_page_wrap .organiser_logo .thumbnail{background-color:transparent;border:none}#event_page_wrap{background:rgba(0,0,0,0.4)}#event_page_wrap #organiserHead{text-align:center;color:#fff;border:none;font-size:15px;opacity:.6;transition:all .15s ease-in-out;background:rgba(0,0,0,0.4);line-height:30px;cursor:pointer}#event_page_wrap #organiserHead:hover{opacity:1}#event_page_wrap #intro{position:relative;text-align:center;font-weight:100;padding:20px 0 20px 0;color:#fff;border:none;background-color:transparent;margin-bottom:0}#event_page_wrap #intro h1{position:relative;padding:10px 10px;margin:0;font-weight:400;font-size:60px;margin-bottom:10px}#event_page_wrap #intro .event_date{font-size:15px;padding:10px;font-weight:500}#event_page_wrap #intro .event_venue{font-size:19px}#event_page_wrap #intro .event_buttons{margin-top:30px;margin-bottom:30px}#event_page_wrap #intro .event_buttons .btn-event-link{line-height:35px;font-size:17px;text-transform:uppercase;letter-spacing:5px;border:1px solid;border-color:rgba(255,255,255,0.2);text-decoration:none;color:#fff;padding:0 15px;transition:all .15s ease-in-out;width:100%;background:rgba(0,0,0,0.3)}#event_page_wrap #intro .event_buttons .btn-event-link:hover{border-color:rgba(255,255,255,0.6)}#event_page_wrap #tickets .input-group-addon{background:none;border:none}#event_page_wrap #tickets table tr:first-child td{border-top:none}#event_page_wrap #tickets table tr td{padding:20px 0}#event_page_wrap #details .event_poster img{border:4px solid #f6f6f6;max-width:100%;min-width:100%}#event_page_wrap #details .event_details iframe,#event_page_wrap #details .event_details img{max-width:100%}#event_page_wrap #details .event_details h1,#event_page_wrap #details .event_details h2,#event_page_wrap #details .event_details h3,#event_page_wrap #details .event_details h4,#event_page_wrap #details .event_details h5,#event_page_wrap #details .event_details h6{margin-top:0;margin-bottom:15px;font-weight:100}#event_page_wrap #details .event_details h1{font-size:28px}#event_page_wrap #details .event_details h2{font-size:24px}#event_page_wrap #details .event_details h3{font-size:20px}#event_page_wrap #details .event_details h4{font-size:17px}#event_page_wrap #share .btn{margin-bottom:20px}#event_page_wrap #location{padding:0}#event_page_wrap #location .google-maps{position:relative;overflow:hidden}#event_page_wrap #location .google-maps iframe{width:100% !important;height:100% !important;min-height:500px}#footer{background-color:#888;background-color:rgba(0,0,0,0.4);min-height:60px;line-height:60px;color:#fff;text-align:center}#organiser{text-align:center}#organiser .contact_form{display:none;padding:20px;margin-top:25px;text-align:left}.totop{border-radius:0;background-color:#888;background-color:rgba(0,0,0,0.4)}.totop:hover{background-color:#fff;background-color:rgba(255,255,255,0.4);color:#000}@media (min-width:100px) and (max-width:767px){.row{margin:0}section.container{margin-bottom:0;padding:10px}.section_head{padding:10px;font-size:30px}.main_content{padding:0;background:#fff}#organiser_page_wrap #intro{padding:30px}#organiser_page_wrap #intro h1{font-size:2.236em;padding:15px}#event_page_wrap #intro{padding:30px}#event_page_wrap #intro .event_date h2{font-size:20px}#event_page_wrap #intro .event_date h4{font-size:11px}#event_page_wrap #intro h1{font-size:2.236em;padding:15px}#event_page_wrap #intro .event_venue{color:#fff;font-size:20px;margin-top:10px}#event_page_wrap #intro .event_buttons{margin-top:50px}#event_page_wrap #intro .event_buttons .btn-event-link{padding:5px 0;font-size:18px;margin-bottom:5px;line-height:30px}#event_page_wrap #tickets .btn-checkout{width:100%}#event_page_wrap #location .google-maps iframe{min-height:290px}.content{padding:15px}}.rrssb-buttons.large-format li a{border-radius:0}.event-listing .event .panel{min-height:140px}.event-listing .event_flyer{text-align:center}.event-listing .event_flyer img{max-height:140px;max-width:100%} \ No newline at end of file diff --git a/public/assets/stylesheet/public.less b/public/assets/stylesheet/public.less index ce3fbae1..1d0033e6 100644 --- a/public/assets/stylesheet/public.less +++ b/public/assets/stylesheet/public.less @@ -9,6 +9,13 @@ table { margin: 0; } +label.required::after { + content: '*'; + color: red; + padding-left: 3px; + font-size: 9px; +} + @media (min-width: 1200px) { .container { width: 960px; diff --git a/resources/views/ManageEvent/Customize.blade.php b/resources/views/ManageEvent/Customize.blade.php index 1751ddfb..f459969b 100644 --- a/resources/views/ManageEvent/Customize.blade.php +++ b/resources/views/ManageEvent/Customize.blade.php @@ -206,9 +206,7 @@
  • Ticket Design
  • -
  • Website Embed - Code
  • + @@ -596,35 +594,6 @@ -
    - -
    -
    -

    HTML Embed Code

    - -
    -
    -

    Instructions

    - -

    - Simply copy and paste the HTML provided onto your website where you would like the - widget to appear and the widget will appear. -

    - -
    - Embed Preview -
    - -
    - {!! $event->embed_html_code !!} -
    - -
    -
    - -
    - diff --git a/resources/views/ManageEvent/Modals/ViewAnswers.blade.php b/resources/views/ManageEvent/Modals/ViewAnswers.blade.php new file mode 100644 index 00000000..ab6d1ba3 --- /dev/null +++ b/resources/views/ManageEvent/Modals/ViewAnswers.blade.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/resources/views/ManageEvent/Modals/ViewQuestions.blade.php b/resources/views/ManageEvent/Modals/ViewQuestions.blade.php deleted file mode 100644 index fa42d574..00000000 --- a/resources/views/ManageEvent/Modals/ViewQuestions.blade.php +++ /dev/null @@ -1,169 +0,0 @@ - diff --git a/resources/views/ManageEvent/Partials/Sidebar.blade.php b/resources/views/ManageEvent/Partials/Sidebar.blade.php index 1c708d38..1c7e1c83 100644 --- a/resources/views/ManageEvent/Partials/Sidebar.blade.php +++ b/resources/views/ManageEvent/Partials/Sidebar.blade.php @@ -62,8 +62,8 @@ Surveys -
  • - +
  • + Widgets diff --git a/resources/views/ManageEvent/Surveys.blade.php b/resources/views/ManageEvent/Surveys.blade.php index 2b3435e5..27d7a696 100644 --- a/resources/views/ManageEvent/Surveys.blade.php +++ b/resources/views/ManageEvent/Surveys.blade.php @@ -27,10 +27,13 @@ Event Surveys
    @endforeach \ No newline at end of file