Ejemplo n.º 1
0
 /**
  * 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';
     }
 }