/** * Create the event * @param string $id ID of the event if doing an update * @return view View with session message */ public function doCreate($id = null) { // Set defailt meta $data['meta'] = []; $data = Request::all(); \Input::flash(); // Instantiate the APIHelper $api = new \App\Helpers\ApiHelper(); $userEmail = ['email' => \Auth::user()->email]; if (isset($data['billing'])) { $data['billing'] = array_merge($data['billing'], $userEmail); } if (!isset($data['isIndoor'])) { $data['isIndoor'] = '0'; } if (!isset($data['isOutdoor'])) { $data['isOutdoor'] = '0'; } if (!isset($data['isAge0'])) { $data['isAge0'] = '0'; } if (!isset($data['isAge13'])) { $data['isAge13'] = '0'; } if (!isset($data['isAge16'])) { $data['isAge16'] = '0'; } if (!isset($data['isAge18'])) { $data['isAge18'] = '0'; } if (!isset($data['isAge21'])) { $data['isAge21'] = '0'; } if (!isset($data['startMeridian'])) { $data['startMeridian'] = null; } if (!isset($data['endMeridian'])) { $data['endMeridian'] = null; } if (!isset($data['endFinalMeridian'])) { $data['endFinalMeridian'] = null; } // Checks if user has selected to choose an end date for recurring if (isset($data['finalDateSet'])) { // Final time for recurring event $finalEndTime = $data['endFinalTime'] . $data['endFinalMeridian']; // End in recurring refers to the overall end date of an event with recurring schedule $recurring = ['repeats' => isset($data['repeats']) ? $data['repeats'] : null, 'every' => isset($data['repeatEvery']) ? $data['repeatEvery'] : 0, 'end' => ['date' => date('Y-m-d', strtotime($data['endFinalDate'])), 'time' => date('H:i:00', strtotime($finalEndTime))], 'repeatsBy' => isset($data['repeatsBy']) ? $data['repeatsBy'] : null, 'weekdays' => isset($data['weekdays']) ? $data['weekdays'] : null]; } else { $recurring = ['repeats' => isset($data['repeats']) ? $data['repeats'] : null, 'every' => isset($data['repeatEvery']) ? $data['repeatEvery'] : 0, 'end' => null, 'repeatsBy' => isset($data['repeatsBy']) ? $data['repeatsBy'] : null, 'weekdays' => isset($data['weekdays']) ? $data['weekdays'] : null]; } $start = $data['startTime'] . $data['startMeridian']; $end = $data['endTime'] . $data['endMeridian']; if (isset($data['billing'])) { $data['meta'] = array_merge($data['billing'], isset($data['meta']) ? $data['meta'] : []); } $data['meta'] = json_encode(['schedules' => [['timeZoneId' => isset($data['timeZoneId']) ? $data['timeZoneId'] : '6', 'daysOfWeek' => isset($data['daysOfWeek']) ? $data['daysOfWeek'] : '', 'start' => ['date' => date('Y-m-d', strtotime($data['startDate'])), 'time' => date('H:i:00', strtotime($start))], 'end' => ['date' => date('Y-m-d', strtotime($data['endDate'])), 'time' => date('H:i:00', strtotime($end))], 'repeat' => isset($data['recurring']) ? $recurring : null]], 'tickets' => ['ticketNme' => isset($data['meta']['tickets']['ticketNme']) ? $data['meta']['tickets']['ticketNme'] : null, 'ticket_pric' => isset($data['meta']['ticketPric']) ? $data['meta']['ticketPric'] : 0, 'enabled' => isset($data['meta']['tickets']['enabled']) ? (bool) $data['meta']['tickets']['enabled'] : true], 'comments' => ['enabled' => isset($data['meta']['comments']['enabled']) ? (bool) $data['meta']['comments']['enabled'] : true], 'map' => ['enabled' => isset($data['meta']['map']['enabled']) ? (bool) $data['meta']['map']['enabled'] : true], 'transportation' => ['enabled' => isset($data['meta']['transportation']['enabled']) ? (bool) $data['meta']['transportation']['enabled'] : true], 'reviews' => ['enabled' => isset($data['meta']['reviews']['enabled']) ? (bool) $data['meta']['reviews']['enabled'] : true], 'rsvp' => ['enabled' => isset($data['meta']['rsvp']['enabled']) ? (bool) $data['meta']['rsvp']['enabled'] : true], 'guest_list' => ['enabled' => isset($data['meta']['guestList']['enabled']) ? (bool) $data['meta']['guestList']['enabled'] : true], 'guest_pictures' => ['enabled' => isset($data['meta']['guestPictures']['enabled']) ? (bool) $data['meta']['guestPictures']['enabled'] : true], 'guest_video' => ['enabled' => isset($data['meta']['guestVideo']['enabled']) ? (bool) $data['meta']['guestVideo']['enabled'] : true], 'tos_acceptance' => ['date' => isset($data['meta']['tos_acceptance']['date']) ? $data['meta']['tos_acceptance']['date'] : null, 'ip' => isset($data['meta']['tos_acceptance']['ip']) ? $data['meta']['tos_acceptance']['ip'] : null]]); if ($id !== null) { $data['user_id'] = \Auth::user()->id; // Show event associated the ID. $event = $api->update('events', $id . '?auth_user_id=' . $data['user_id'], $data); } else { $data['user_id'] = \Auth::user()->id; // Store Event $event = $api->store('events?auth_user_id=' . $data['user_id'], $data); if ($event['success'] !== true) { // Check if errors are in an array if (is_array($event['error'])) { // Iterate through each error foreach ($event['error'] as $error => $message) { for ($i = 0; $i < count($event['error']); $i++) { if (isset($message[$i])) { $errorMessage[] = $message[$i]; } } } // Implode error $errorMessage = implode(' ', $errorMessage); } else { $errorMessage = $event['error']; } return Redirect::to(route('events.create', ['id' => null, 'tab' => 'summary']))->with('fail_message', $errorMessage); } } // TODO: Duplicate charging!! Charge is being handled on the API pm first event create // if (isset($data['cardId']) || (isset($data['billing']['number']) && ! empty($data['billing']['number']))) { // // If is premium or a card is saved // if (isset($data['cardId'])) { // // Preimum data with remembered card // $premiumCharge = [ // 'userId' => \Auth::user()->id, // 'email' => \Auth::user()->email, // 'cardId' => isset($data['cardId']) ? $data['cardId'] : null, // 'token' => isset($data['token']) ? $data['token'] : null, // 'eventId' => isset($event['data']['event']['id']) ? $event['data']['event']['id'] : null // ]; // } else { // // Preimum data with card // $premiumCharge = [ // 'userId' => \Auth::user()->id, // 'email' => isset($data['billing']['email']) ? $data['billing']['email'] : null, // 'name' => isset($data['billing']['name']) ? $data['billing']['name'] : null, // 'number' => isset($data['billing']['number']) ? $data['billing']['number'] : null, // 'cvc' => isset($data['billing']['cvc']) ? $data['billing']['cvc'] : null, // 'month' => isset($data['billing']['month']) ? $data['billing']['month'] : null, // 'year' => isset($data['billing']['year']) ? $data['billing']['year'] : null, // 'address' => isset($data['billing']['address']) ? $data['billing']['address'] : null, // 'city' => isset($data['billing']['city']) ? $data['billing']['city'] : null, // 'state' => isset($data['billing']['state']) ? $data['billing']['state'] : null, // 'zip' => isset($data['billing']['zip']) ? $data['billing']['zip'] : null, // 'eventId' => isset($event['data']['event']['id']) ? $event['data']['event']['id'] : null // ]; // } // // Unset null // foreach ($premiumCharge as $key => $value) { // if (is_null($value)) { // unset($premiumCharge[$key]); // } // } // // Create the users account and charge premium // $customerCreate = $api->store('ticketsorders/purchase', $premiumCharge); // if ($customerCreate['success'] !== true) { // // Check if errors are in an array // if (is_array($customerCreate['error'])) { // // Iterate through each error // foreach ($customerCreate['error'] as $error => $message) { // for ($i=0; $i < count($customerCreate['error']); $i++) { // if (isset($message[$i])) { // $errorMessage[] = $message[$i]; // } // } // } // $errorMessage = implode(' ', $errorMessage); // } else { // $errorMessage = $customerCreate['error']; // } // return Redirect::to(route('events.create', ['id' => null, 'tab' => 'freemium']))->with('fail_message', $errorMessage); // } // } if ($event['success'] !== true) { // Check if errors are in an array if (is_array($event['error'])) { // Iterate through each error foreach ($event['error'] as $error => $message) { for ($i = 0; $i < count($event['error']); $i++) { if (isset($message[$i])) { $errorMessage[] = $message[$i]; } } } $errorMessage = implode(' ', $errorMessage); } else { $errorMessage = $event['error']; } return Redirect::to(route('events.create', ['id' => null, 'tab' => 'summary']))->with('fail_message', $errorMessage); } $id = $event['data']['event']['slug']; // Return false if ($event['success'] !== true) { return Redirect::back()->with('fail_message', 'Error occurred. Please try again later.'); } // If id is nulled if ($id !== null) { // Encodes message to get sent with url $message = urlencode('Please wait while your event is being created'); // Will redirect to loader with message, then load event $url = "time=4000&url=/events/" . $id . "&message=" . $message; return Redirect::to(route('pages.loader', (string) $url)); } else { // Update event return Redirect::to(route('events.show', ['id' => $id]))->with('success_message', 'Your event is successfully updated!'); } }
/** * Allow the user to add/update their profile picture * @return [type] [description] */ public function updateProfilePhoto() { $user = Auth::user(); // Initiate API helper $api = new \App\Helpers\ApiHelper(); // Save updated details to the API $user = $api->update('users', $user->id . '?auth_user_id=' . \Auth::user()->id, []); if ($user['success'] === true) { \Session::flash('success_message', 'Profile pic updated successfully.'); } return $user; }