/** * Handles requests for cancelling a reservation. * * @access public * @return response * @since 1.0.0 */ public function reservationCancel() { //echo "<pre>"; print_r(Input::all()); die; $reservationID = $this->request->input('reserv_id'); $reservationType = $this->request->input('reserv_type'); $user_id = $this->request->input('user_id'); $added_by = $this->request->input('added_by'); //echo "reservationID == ".$reservationID." , reservationType == ".$reservationType; die; $arrResponse = ReservationModel::cancelReservation($reservationID, $reservationType); $userID = $user_id; $userData = Profile::getUserProfileWeb($userID); //print_r($userData);die; //for the new db structure support $newDb['attributes']['reservation_status_id'] = 3; $newDb['userdetails']['user_id'] = $userID; $newDb['userdetails']['status'] = 3; $newDb['attributes']['seating_status'] = 3; $newDb['attributes']['closed_on'] = Carbon::now()->toDateTimeString(); //print_r($newDb);die; $reservDetails = new ReservDetailsModel(); $newDbStatus = $reservDetails->updateAttributes($reservationID, $newDb); $tokens = $reservDetails->pushToRestaurant($reservationID); $this->restaurantapp->push($reservationID, $tokens, true); //print_r($newDbStatus);die; /*TODO: Add the status of success check and include added_by and transaction_id attributes */ //die; $rewardsPoints = ''; $type = ''; $bookingsMade = ''; $lastOrderId = ''; $arrReservationDetails = DB::table('reservation_details')->where('id', $reservationID)->select('reservation_date', 'reservation_time', 'no_of_persons', 'product_vendor_location_id', 'vendor_location_id')->get(); //echo "<pre>"; print_r($arrReservationDetails); //die; if ($arrResponse['status'] == 'ok') { if ($reservationType == "experience") { $zoho_data = array('Loyalty_Points_Awarded' => 0, 'Order_completed' => isset($added_by) && $added_by == 'user' ? 'User Cancelled' : 'Admin Cancelled'); $res_data = $this->zoho_edit_booking('E' . sprintf("%06d", $reservationID), $zoho_data); $setBookingKey = 'MERGE11'; $setBookingsValue = $userData['data']['bookings_made']; $arrProductID = DB::table('product_vendor_locations')->where('id', $arrReservationDetails[0]->product_vendor_location_id)->select('product_id', 'vendor_location_id')->get(); $productDetails = $this->experiencesRepository->getByExperienceId($arrProductID[0]->product_id); $outlet = $this->experiences_model->getOutlet($arrReservationDetails[0]->product_vendor_location_id); //$locationDetails = $this->experiences_model->getLocationDetails($arrReservationDetails[0]->product_vendor_location_id); //echo "<br/>---- productdetails---<pre>"; print_r($productDetails); //echo "<br/>---- outlet---<pre>"; print_r($outlet); $rewardsPoints = $productDetails['attributes']['reward_points_per_reservation']; $bookingsMade = $userData['data']['bookings_made'] - 1; $type = "cancel"; $reservationType = "experience"; $lastOrderId = $reservationID; $dataPost = array('reservation_type' => $reservationType, 'reservationID' => $reservationID, 'partySize' => $arrReservationDetails[0]->no_of_persons, 'reservationDate' => $arrReservationDetails[0]->reservation_date, 'reservationTime' => $arrReservationDetails[0]->reservation_time, 'guestName' => $userData['data']['full_name'], 'guestEmail' => $userData['data']['email'], 'guestPhoneNo' => $userData['data']['phone_number'], 'order_id' => "#E" . sprintf("%06d", $reservationID), 'venue' => $outlet->vendor_name); } else { if ($reservationType == "alacarte") { $setBookingKey = 'MERGE26'; $setBookingsValue = $userData['data']['a_la_carte_reservation']; $zoho_data = array('Loyalty_Points_Awarded' => 0, 'Order_completed' => isset($added_by) && $added_by == 'user' ? 'User Cancelled' : 'Admin Cancelled'); $res_data = $this->zoho_edit_booking('A' . sprintf("%06d", $reservationID), $zoho_data); $outlet = $this->alacarte_model->getOutlet($arrReservationDetails[0]->vendor_location_id); $locationDetails = $this->alacarte_model->getLocationDetails($arrReservationDetails[0]->vendor_location_id); $vendorDetails = $this->restaurantLocationsRepository->getByRestaurantLocationId($arrReservationDetails[0]->vendor_location_id); //echo "<br/>---- vendorDetails---<pre>"; print_r($vendorDetails); //echo "<br/>---- outlet---<pre>"; print_r($outlet); $rewardsPoints = $vendorDetails['attributes']['reward_points_per_reservation']; $bookingsMade = $userData['data']['a_la_carte_reservation'] - 1; $type = "cancel"; $reservationType = "alacarte"; $lastOrderId = $reservationID; $dataPost = array('reservation_type' => $reservationType, 'reservationID' => $reservationID, 'partySize' => $arrReservationDetails[0]->no_of_persons, 'reservationDate' => $arrReservationDetails[0]->reservation_date, 'reservationTime' => $arrReservationDetails[0]->reservation_time, 'guestName' => $userData['data']['full_name'], 'guestEmail' => $userData['data']['email'], 'guestPhoneNo' => $userData['data']['phone_number'], 'order_id' => "#A" . sprintf("%06d", $reservationID), 'venue' => $outlet->vendor_name); } } if (!empty($userData)) { $merge_vars = array($setBookingKey => $setBookingsValue - 1, 'GROUPINGS' => array(array('id' => 9713, 'groups' => [$userData['data']['location']]))); //$email = ["email"["email":]]; $this->mailchimp->lists->subscribe($this->listId, ["email" => $userData['data']['email']], $merge_vars, "html", true, true); //$this->mc_api->listSubscribe($list_id, $_POST['email'], $merge_vars,"html",true,true ); } Profile::updateReservationInUsers($rewardsPoints, $type, $bookingsMade, $reservationType, $userID, $lastOrderId); Mail::send('site.pages.cancel_reservation', ['post_data' => $dataPost], function ($message) use($dataPost) { $message->from('*****@*****.**', 'WowTables by GourmetItUp'); $message->to($dataPost['guestEmail'])->subject('Your WowTables Reservation at ' . $dataPost['venue'] . ' has been cancelled'); //$message->cc('*****@*****.**', '*****@*****.**'); }); Mail::send('site.pages.cancel_reservation', ['post_data' => $dataPost], function ($message) use($dataPost) { $message->from('*****@*****.**', 'WowTables by GourmetItUp'); $message->to('*****@*****.**')->subject('CR - ' . $dataPost['order_id'] . ' | ' . date('d-F-Y', strtotime($dataPost['reservationDate'])) . ' , ' . date('g:i a', strtotime($dataPost['reservationTime'])) . ' | ' . $dataPost['venue'] . ' | ' . $dataPost['guestName']); $message->cc('*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'); }); echo '1'; } }