public function alacarteCheckout()
 {
     //echo "<pre>"; print_r(Input::all());
     $dataPost['reservationDate'] = Input::get('booking_date');
     $dataPost['reservationDay'] = date("D", strtotime($dataPost['reservationDate']));
     //
     $dataPost['reservationTime'] = Input::get('booking_time');
     $dataPost['partySize'] = Input::get('qty');
     $dataPost['vendorLocationID'] = Input::get('address');
     $dataPost['guestName'] = Input::get('fullname');
     $dataPost['guestEmail'] = Input::get('email');
     $dataPost['phone'] = Input::get('phone');
     $dataPost['reservationType'] = 'alacarte';
     $dataPost['specialRequest'] = Input::get('special');
     $dataPost['addon'] = Input::get('add_ons');
     $award = Input::get('avard_point');
     $user_email = Input::get('mail');
     $vendor_name = Input::get('vendor_name');
     $userID = Input::get('user_id');
     $userData = Profile::getUserProfileWeb($userID);
     $outlet = $this->alacarte_model->getOutlet($dataPost['vendorLocationID']);
     $locationDetails = $this->alacarte_model->getLocationDetails($dataPost['vendorLocationID']);
     $vendorDetails = $this->alacarterepository->getByRestaurantLocationId($dataPost['vendorLocationID']);
     $getUsersDetails = $this->experiences_model->fetchDetails($userID);
     $getReservationID = '';
     if ($userID > 0) {
         //validating the information submitted by users
         $arrResponse = $this->alacarte_model->validateReservationData($dataPost);
         if ($arrResponse['status'] == 'success') {
             $reservationResponse = $this->alacarte_model->addReservationDetails($dataPost, $userID);
             $rewardsPoints = isset($award) && $award != 0 ? $vendorDetails['attributes']['reward_points_per_reservation'] : 0;
             $bookingsMade = $userData['data']['a_la_carte_reservation'] + 1;
             $type = "new";
             $reservationType = "alacarte";
             $lastOrderId = $reservationResponse['data']['reservationID'];
             Profile::updateReservationInUsers($rewardsPoints, $type, $bookingsMade, $reservationType, $userID, $lastOrderId);
             DB::table('users')->where('id', $userID)->update(array('full_name' => $dataPost['guestName'], 'phone_number' => $dataPost['phone']));
             $getReservationID = $reservationResponse['data']['reservationID'];
             //for the new db structure support
             /*$newDb['attributes']['date'] = date('d-M-Y', strtotime($dataPost['reservationDate']));
               $newDb['attributes']['time'] = date("g:i A", strtotime($dataPost['reservationTime']));*/
             $combined_date_and_time = $dataPost['reservationDate'] . ' ' . $dataPost['reservationTime'];
             $newDb['attributes']['reserv_datetime'] = Carbon::createFromFormat('Y-m-d H:i A', $combined_date_and_time)->toDateTimeString();
             $newDb['attributes']['no_of_people_booked'] = $dataPost['partySize'];
             $newDb['attributes']['cust_name'] = $dataPost['guestName'];
             $newDb['attributes']['email'] = $dataPost['guestEmail'];
             $newDb['attributes']['contact_no'] = $dataPost['phone'];
             $newDb['attributes']['reserv_type'] = "Alacarte";
             $newDb['attributes']['loyalty_points_awarded'] = $rewardsPoints;
             $newDb['attributes']['special_request'] = $dataPost['specialRequest'];
             $newDb['attributes']['experience'] = $outlet->vendor_name . ' - Ala Carte';
             $newDb['attributes']['api_added'] = "Admin Reservation";
             $newDb['attributes']['giu_membership_id'] = $userData['data']['membership_number'];
             $newDb['attributes']['outlet'] = $outlet->name;
             $newDb['attributes']['auto_reservation'] = "Not available";
             $newDb['attributes']['ar_confirmation_id'] = "0";
             $newDb['attributes']['alternate_id'] = 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']);
             $newDb['attributes']['reservation_status_id'] = 1;
             $newDb['userdetails']['user_id'] = $userID;
             $newDb['userdetails']['status'] = 1;
             //print_r($newDb);die;
             $reservDetails = new ReservationDetails();
             $newDbStatus = $reservDetails->updateAttributes($reservationResponse['data']['reservationID'], $newDb);
             $tokens = $reservDetails->pushToRestaurant($reservationResponse['data']['reservationID']);
             $this->restaurantapp->push($reservationResponse['data']['reservationID'], $tokens, true);
             //print_r($newDbStatus);die;
             /*TODO: Add the status of success check and include added_by and transaction_id attributes */
             //die;
             $zoho_data = array('Name' => $dataPost['guestName'], 'Email_ids' => $dataPost['guestEmail'], 'Contact' => $dataPost['phone'], 'Experience_Title' => $outlet->vendor_name . ' - Ala Carte', 'No_of_People' => $dataPost['partySize'], 'Date_of_Visit' => date('d-M-Y', strtotime($dataPost['reservationDate'])), 'Time' => date("g:i A", strtotime($dataPost['reservationTime'])), 'Alternate_ID' => 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']), 'Special_Request' => $dataPost['specialRequest'], 'Type' => "Alacarte", 'API_added' => 'Admin Reservation', 'GIU_Membership_ID' => $userData['data']['membership_number'], 'Outlet' => $outlet->name, 'AR_Confirmation_ID' => '0', 'Auto_Reservation' => 'Not available', 'Calling_option' => 'No');
             //echo "<pre>"; print_r($zoho_data);
             $zoho_res = AdminReservations::zoho_add_booking($zoho_data);
             $zoho_success = $zoho_res->result->form->add->status;
             //echo "<pre>"; print_r($zoho_success); die;
             if ($zoho_success[0] != "Success") {
                 //$this->email->from('*****@*****.**', 'WowTables by GourmetItUp');
                 //$list = array('*****@*****.**', '*****@*****.**', '*****@*****.**');
                 //$this->email->to($list);
                 //$this->email->subject('Urgent: Zoho reservation posting error');
                 $mailbody = 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']) . ' reservation has not been posted to zoho. Please fix manually.<br><br>';
                 $mailbody .= 'Reservation Details<br>';
                 foreach ($zoho_data as $key => $val) {
                     $name = str_replace('_', ' ', $key);
                     $mailbody .= $name . ' ' . $val . '<br>';
                 }
                 Mail::send('site.pages.zoho_posting_error', ['zoho_data' => $mailbody], function ($message) use($zoho_data) {
                     $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                     $message->to('*****@*****.**')->subject('Urgent: Zoho reservation posting error');
                     $message->cc('*****@*****.**', '*****@*****.**', '*****@*****.**');
                 });
             }
             $mergeReservationsArray = array('order_id' => sprintf("%06d", $reservationResponse['data']['reservationID']), 'reservation_date' => date('d-F-Y', strtotime($dataPost['reservationDate'])), 'reservation_time' => date('g:i a', strtotime($dataPost['reservationTime'])), 'venue' => $outlet->vendor_name, 'username' => $dataPost['guestName']);
             //echo "<pre>"; print_r($mergeReservationsArray); die;
             $city_id = $locationDetails->city_id;
             $city_name = Location::where(['Type' => 'City', 'id' => $userData['data']['location_id']])->pluck('name');
             if (empty($city_name)) {
                 $city_name = 'mumbai';
             }
             $city = ucfirst($city_name);
             //Start MailChimp
             if (!empty($getUsersDetails)) {
                 $merge_vars = array('MERGE1' => $dataPost['guestName'], 'MERGE10' => date('m/d/Y'), 'MERGE11' => $userData['data']['a_la_carte_reservation'] + 1, 'MERGE13' => $dataPost['phone'], 'MERGE27' => date("m/d/Y", strtotime($dataPost['reservationDate'])), 'GROUPINGS' => array(array('id' => 9713, 'groups' => [$city])));
                 $this->mailchimp->lists->subscribe($this->listId, ["email" => $dataPost['guestEmail']], $merge_vars, "html", false, true);
                 //$this->mc_api->listSubscribe($list_id, $_POST['email'], $merge_vars,"html",true,true );
             }
             //End MailChimp
             $footerpromotions = DB::select('SELECT efp.link,mrn.file  FROM email_footer_promotions as efp LEFT JOIN media_resized_new as mrn ON mrn.media_id = efp.media_id WHERE efp.show_in_alacarte = 1 AND efp.city_id = ' . $city_id);
             if (isset($user_email) && $user_email != 0) {
                 Mail::send('site.pages.restaurant_reservation', ['location_details' => $locationDetails, 'outlet' => $outlet, 'post_data' => $dataPost, 'productDetails' => $vendorDetails, 'reservationResponse' => $reservationResponse, 'footerPromotions' => !empty($footerpromotions) ? $footerpromotions : ""], function ($message) use($mergeReservationsArray) {
                     $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                     $message->to(Input::get('email'))->subject('Your WowTables Reservation at ' . $mergeReservationsArray['venue']);
                     //$message->cc('*****@*****.**', '*****@*****.**');
                 });
             }
             Mail::send('site.pages.restaurant_reservation', ['location_details' => $locationDetails, 'outlet' => $outlet, 'post_data' => $dataPost, 'productDetails' => $vendorDetails, 'reservationResponse' => $reservationResponse, 'footerPromotions' => !empty($footerpromotions) ? $footerpromotions : ""], function ($message) use($mergeReservationsArray) {
                 $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                 $message->to('*****@*****.**')->subject('NR - #A' . $mergeReservationsArray['order_id'] . ' | ' . $mergeReservationsArray['reservation_date'] . ' , ' . $mergeReservationsArray['reservation_time'] . ' | ' . $mergeReservationsArray['venue'] . ' | ' . $mergeReservationsArray['username']);
                 $message->cc(['*****@*****.**', '*****@*****.**', '*****@*****.**']);
             });
             $result_data = array('full_name' => $dataPost['guestName'], 'email' => $dataPost['guestEmail'], 'phone' => $dataPost['phone'], 'booking_date' => $dataPost['reservationDate'], 'booking_time' => $dataPost['reservationTime'], 'exp_title' => $vendor_name, 'order_id' => 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']));
             echo json_encode($result_data);
         }
     }
 }
Ejemplo n.º 2
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';
     }
 }
Ejemplo n.º 3
0
 public function alaorder()
 {
     $dataPost['reservationDate'] = Input::get('booking_date');
     $dataPost['reservationDay'] = date("D", strtotime($dataPost['reservationDate']));
     //
     $dataPost['reservationTime'] = Input::get('booking_time');
     $dataPost['partySize'] = Input::get('qty');
     $dataPost['vendorLocationID'] = Input::get('address');
     $dataPost['guestName'] = Input::get('fullname');
     $dataPost['guestEmail'] = Input::get('email');
     $dataPost['phone'] = Input::get('phone');
     $dataPost['reservationType'] = 'alacarte';
     $dataPost['specialRequest'] = Input::get('special');
     $dataPost['addon'] = Input::get('add_ons');
     //var_dump($this->request->get('special_offer'));die;
     $special_offer_title = $this->request->get('special_offer_title');
     $special_offer_desc = $this->request->get('special_offer_desc');
     $dataPost['special_offer_title'] = !empty($special_offer_title) && $special_offer_title != "" ? $special_offer_title : "";
     $dataPost['special_offer_desc'] = !empty($special_offer_desc) && $special_offer_desc != "" ? $special_offer_desc : "";
     //var_dump($dataPost['special_offer_desc']);die;
     //$dataPost['access_token'] = Session::get('id');
     $userID = Session::get('id');
     $userData = Profile::getUserProfileWeb($userID);
     $outlet = $this->alacarte_model->getOutlet($dataPost['vendorLocationID']);
     //echo "<pre>"; print_r($outlet);
     $locationDetails = $this->alacarte_model->getLocationDetails($dataPost['vendorLocationID']);
     //echo "<pre>"; print_r($locationDetails);
     $vendorDetails = $this->repository->getByRestaurantLocationId($dataPost['vendorLocationID']);
     //echo "sfa = ".$vendorDetails['attributes']['reward_points_per_reservation'];
     //echo $vendorDetails['RestaurantLocation']->slug;
     //echo "<pre>"; print_r($vendorDetails); die;
     $arrRules = array('reservationDate' => 'required|date', 'reservationDay' => 'required', 'reservationTime' => 'required', 'partySize' => 'required|integer', 'vendorLocationID' => 'required|not_in:0', 'guestName' => 'required|max:255', 'guestEmail' => 'required|email|max:255', 'phone' => 'required', 'reservationType' => 'required|in:experience,alacarte,event', 'specialRequest' => 'max:512');
     $validator = Validator::make($dataPost, $arrRules);
     $cities = Location::where(['Type' => 'City', 'visible' => 1])->lists('name', 'id');
     $arrResponse['cities'] = $cities;
     $city_id = Input::get('city');
     $city_name = Location::where(['Type' => 'City', 'id' => $city_id])->pluck('name');
     if (empty($city_name)) {
         $city_name = 'mumbai';
     }
     if ($validator->fails()) {
         $message = $validator->messages();
         $errorMessage = "";
         foreach ($data as $key => $value) {
             if ($message->has($key)) {
                 $errorMessage .= $message->first($key) . '\\n ';
             }
         }
         return redirect()->back()->withErrors($validator);
     } else {
         /*$getUsersDetails = $this->experiences_model->fetchDetails($userID);
         
                     //Start MailChimp
                     if(!empty($getUsersDetails)){
         
                         $merge_vars = array(
                             'MERGE1'=>$dataPost['guestName'],
                             'MERGE10'=>date('m/d/Y'),
                             'MERGE11'=>$userData['data']['a_la_carte_reservation'] + 1,
                             'MERGE13'=>$dataPost['phone'],
                             'MERGE27'=>date("m/d/Y",strtotime($dataPost['reservationDate'])),
                             'GROUPINGS' => array(array('id' => 9613, 'groups' => [$city]))
                         );
                         $this->mailchimp->lists->subscribe($this->listId, ["email"=>$dataPost['guestEmail']],$merge_vars,"html",false,true );
                         //$this->mc_api->listSubscribe($list_id, $_POST['email'], $merge_vars,"html",true,true );
         
                         /*$my_email = $dataPost['guestEmail'];
                         //$city = $users['city'];
                         $city = ucfirst($city_name);
                         $mergeVars = array(
                             'GROUPINGS' => array(
                                 array(
                                     'id' => 9613,
                                     'groups' => [$city],
                                 )
                             )
                         );
                         //echo "asd , ";
                         //$this->mailchimp->lists->interestGroupings($this->listId,true);
                         //print_r($test);die;
                         $this->mailchimp->lists->updateMember($this->listId, $my_email, $mergeVars);
                     }*/
         //End MailChimp
         $getReservationID = '';
         if ($userID > 0) {
             //validating the information submitted by users
             $arrResponse = $this->alacarte_model->validateReservationData($dataPost);
             if ($arrResponse['status'] == 'success') {
                 $reservationResponse = $this->alacarte_model->addReservationDetails($dataPost, $userID);
                 $rewardsPoints = $vendorDetails['attributes']['reward_points_per_reservation'];
                 $bookingsMade = $userData['data']['a_la_carte_reservation'] + 1;
                 $type = "new";
                 $reservationType = "alacarte";
                 $lastOrderId = $reservationResponse['data']['reservationID'];
                 //for the new db structure support
                 /*$newDb['attributes']['date'] = date('d-M-Y', strtotime($dataPost['reservationDate']));
                   $newDb['attributes']['time'] = date("g:i A", strtotime($dataPost['reservationTime']));*/
                 $combined_date_and_time = $dataPost['reservationDate'] . ' ' . $dataPost['reservationTime'];
                 $newDb['attributes']['reserv_datetime'] = Carbon::createFromFormat('Y-m-d H:i A', $combined_date_and_time)->toDateTimeString();
                 $newDb['attributes']['no_of_people_booked'] = $dataPost['partySize'];
                 $newDb['attributes']['cust_name'] = $dataPost['guestName'];
                 $newDb['attributes']['email'] = $dataPost['guestEmail'];
                 $newDb['attributes']['contact_no'] = $dataPost['phone'];
                 $newDb['attributes']['reserv_type'] = "Alacarte";
                 //$newDb['attributes']['gift_card_id'] = $dataPost['giftCardID'];
                 $newDb['attributes']['loyalty_points_awarded'] = $rewardsPoints;
                 $newDb['attributes']['special_request'] = $dataPost['specialRequest'];
                 $newDb['attributes']['experience'] = $outlet->vendor_name . ' - Ala Carte';
                 $newDb['attributes']['api_added'] = "Web Reservation";
                 $newDb['attributes']['giu_membership_id'] = $userData['data']['membership_number'];
                 $newDb['attributes']['outlet'] = $outlet->name;
                 $newDb['attributes']['auto_reservation'] = "Not available";
                 $newDb['attributes']['ar_confirmation_id'] = "0";
                 $newDb['attributes']['alternate_id'] = 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']);
                 $newDb['attributes']['special_offer_title'] = $dataPost['special_offer_title'];
                 $newDb['attributes']['special_offer_desc'] = $dataPost['special_offer_desc'];
                 $newDb['attributes']['reservation_status_id'] = 1;
                 $newDb['userdetails']['user_id'] = $userID;
                 $newDb['userdetails']['status'] = 1;
                 $reservDetails = new ReservationDetails();
                 $newDbStatus = $reservDetails->updateAttributes($reservationResponse['data']['reservationID'], $newDb);
                 $tokens = $reservDetails->pushToRestaurant($reservationResponse['data']['reservationID']);
                 $this->restaurantapp->push($reservationResponse['data']['reservationID'], $tokens, true);
                 //print_r($newDbStatus);die;
                 /*TODO: Add the status of success check and include added_by and transaction_id attributes */
                 //die;
                 Profile::updateReservationInUsers($rewardsPoints, $type, $bookingsMade, $reservationType, $userID, $lastOrderId);
                 DB::table('users')->where('id', $userID)->update(array('full_name' => $dataPost['guestName'], 'phone_number' => $dataPost['phone']));
                 $getReservationID = $reservationResponse['data']['reservationID'];
                 $zoho_data = array('Name' => $dataPost['guestName'], 'Email_ids' => $dataPost['guestEmail'], 'Contact' => $dataPost['phone'], 'Experience_Title' => $outlet->vendor_name . ' - Ala Carte', 'No_of_People' => $dataPost['partySize'], 'Date_of_Visit' => date('d-M-Y', strtotime($dataPost['reservationDate'])), 'Time' => date("g:i A", strtotime($dataPost['reservationTime'])), 'Alternate_ID' => 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']), 'Special_Request' => $dataPost['specialRequest'], 'Type' => "Alacarte", 'API_added' => 'Web Reservation', 'GIU_Membership_ID' => $userData['data']['membership_number'], 'Outlet' => $outlet->name, 'AR_Confirmation_ID' => '0', 'Auto_Reservation' => 'Not available', 'Special_offer_title' => $dataPost['special_offer_title'], 'Special_offer_desc' => $dataPost['special_offer_desc'], 'Calling_option' => 'No');
                 //echo "<pre>"; print_r($zoho_data);
                 $zoho_res = $this->zoho_add_booking($zoho_data);
                 //print_r($zoho_res);die;
                 $zoho_success = $zoho_res->result->form->add->status;
                 //echo "<pre>"; print_r($zoho_success); die;
                 if ($zoho_success[0] != "Success") {
                     //$this->email->from('*****@*****.**', 'WowTables by GourmetItUp');
                     //$list = array('*****@*****.**', '*****@*****.**', '*****@*****.**');
                     //$this->email->to($list);
                     //$this->email->subject('Urgent: Zoho reservation posting error');
                     $mailbody = 'A' . sprintf("%06d", $reservationResponse['data']['reservationID']) . ' reservation has not been posted to zoho. Please fix manually.<br><br>';
                     $mailbody .= 'Reservation Details<br>';
                     foreach ($zoho_data as $key => $val) {
                         $name = str_replace('_', ' ', $key);
                         $mailbody .= $name . ' ' . $val . '<br>';
                     }
                     Mail::send('site.pages.zoho_posting_error', ['zoho_data' => $mailbody], function ($message) use($zoho_data) {
                         $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                         $message->to('*****@*****.**')->subject('Urgent: Zoho reservation posting error');
                         $message->cc(['*****@*****.**', '*****@*****.**']);
                     });
                 }
                 $mergeReservationsArray = array('order_id' => sprintf("%06d", $reservationResponse['data']['reservationID']), 'reservation_date' => date('d-F-Y', strtotime($dataPost['reservationDate'])), 'reservation_time' => date('g:i a', strtotime($dataPost['reservationTime'])), 'venue' => $outlet->vendor_name, 'username' => $dataPost['guestName']);
                 //start mailchimp
                 $city_id = Input::get('city_id');
                 $city_name = Location::where(['Type' => 'City', 'id' => $city_id])->pluck('name');
                 if (empty($city_name)) {
                     $city_name = 'mumbai';
                 }
                 $city = ucfirst($userData['data']['location']);
                 $merge_vars = array('MERGE1' => $dataPost['guestName'], 'MERGE10' => date('m/d/Y'), 'MERGE11' => $userData['data']['a_la_carte_reservation'] + 1, 'MERGE13' => $dataPost['phone'], 'MERGE27' => date("m/d/Y", strtotime($dataPost['reservationDate'])), 'GROUPINGS' => array(array('id' => 9713, 'groups' => [$city])));
                 $this->mailchimp->lists->subscribe($this->listId, ["email" => $dataPost['guestEmail']], $merge_vars, "html", false, true);
                 //end mailchimp
                 $footerpromotions = DB::select('SELECT efp.link,mrn.file  FROM email_footer_promotions as efp LEFT JOIN media_resized_new as mrn ON mrn.media_id = efp.media_id WHERE efp.show_in_alacarte = 1 AND efp.city_id = ' . $city_id);
                 Mail::send('site.pages.restaurant_reservation', ['location_details' => $locationDetails, 'outlet' => $outlet, 'post_data' => $dataPost, 'productDetails' => $vendorDetails, 'reservationResponse' => $reservationResponse, 'footerPromotions' => !empty($footerpromotions) ? $footerpromotions : ""], function ($message) use($mergeReservationsArray) {
                     $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                     $message->to(Input::get('email'))->subject('Your WowTables Reservation at ' . $mergeReservationsArray['venue']);
                     //$message->cc('*****@*****.**', '*****@*****.**');
                 });
                 Mail::send('site.pages.restaurant_reservation', ['location_details' => $locationDetails, 'outlet' => $outlet, 'post_data' => $dataPost, 'productDetails' => $vendorDetails, 'reservationResponse' => $reservationResponse, 'footerPromotions' => !empty($footerpromotions) ? $footerpromotions : ""], function ($message) use($mergeReservationsArray) {
                     $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                     $message->to('*****@*****.**')->subject('NR - #A' . $mergeReservationsArray['order_id'] . ' | ' . $mergeReservationsArray['reservation_date'] . ' , ' . $mergeReservationsArray['reservation_time'] . ' | ' . $mergeReservationsArray['venue'] . ' | ' . $mergeReservationsArray['username']);
                     $message->cc(['*****@*****.**', '*****@*****.**', '*****@*****.**']);
                 });
             }
         } else {
             return redirect()->back()->withErrors($validator);
         }
     }
     $arrResponse['allow_guest'] = 'Yes';
     $arrResponse['current_city'] = strtolower($city_name);
     $arrResponse['current_city_id'] = $city_id;
     $arrResponse['restaurant_name'] = $outlet->vendor_name;
     $arrResponse['restaurantID'] = $outlet->vendor_id;
     $arrResponse['vendorLocationID'] = $dataPost['vendorLocationID'];
     $arrResponse['reservation_date'] = $dataPost['reservationDate'];
     $arrResponse['reservation_time'] = $dataPost['reservationTime'];
     $arrResponse['order_id'] = $mergeReservationsArray['order_id'];
     $arrResponse['guests'] = $dataPost['partySize'];
     $arrResponse['outlet_name'] = $outlet->name;
     $arrResponse['terms_and_conditions'] = $vendorDetails['attributes']['terms_and_conditions'];
     $arrResponse['address'] = $locationDetails->address;
     $arrResponse['lat'] = $locationDetails->latitude;
     $arrResponse['long'] = $locationDetails->longitude;
     $arrResponse['city'] = $arrResponse['current_city'];
     $arrResponse['guestEmail'] = $dataPost['guestEmail'];
     $arrResponse['guestName'] = $dataPost['guestName'];
     $arrResponse['slug'] = $vendorDetails['RestaurantLocation']->slug;
     //echo "<pre>"; print_r($arrResponse); die;
     //return response()->view('frontend.pages.thankyou',$arrResponse);
     return Redirect::to('/alacarte/thankyou/A' . $mergeReservationsArray['order_id'])->with('response', $arrResponse);
 }
Ejemplo n.º 4
0
 public function process_response()
 {
     //echo "sad <br/>";
     $requestarray = Input::all();
     $fetch_cookie = Session::get('email_session');
     if ($requestarray['status'] == "success") {
         $details = '<table width="600" cellpadding="2" cellspacing="2" border="0">
     <tr>
         <th colspan="2">Transaction Details</th>
     </tr>';
         foreach ($requestarray as $key => $value) {
             $details .= '<tr>
             <td class="fieldName" width="50%">' . $key . '</td>
             <td class="fieldName" align="left" width="50%">' . $value . '</td>
         </tr>';
         }
         $details .= '</table>';
         $transaction['user_id'] = $fetch_cookie['user_id'];
         $transaction['response_code'] = $requestarray['unmappedstatus'];
         $transaction['response_message'] = $requestarray['status'];
         $transaction['transaction_date'] = date('Y-m-d H:i:s');
         $transaction['reservation_id'] = $requestarray['txnid'];
         $transaction['amount_paid'] = $requestarray['amount'];
         $transaction['transaction_number'] = $requestarray['mihpayid'];
         $transaction['transaction_details'] = $details . "~~" . $requestarray['status'];
         $transaction['source_type'] = "experience";
         $userData = Profile::getUserProfileWeb($transaction['user_id']);
         $lastTransactionID = DB::table('transactions_details')->insertGetId($transaction);
         $bookingsMade = DB::table('reservation_details')->where('id', $requestarray['txnid'])->update(array('reservation_status' => 'prepaid', 'transaction_id' => $lastTransactionID));
         $locationDetails = $this->experiences_model->getLocationDetails($fetch_cookie['vendorLocationID']);
         $outlet = $this->experiences_model->getOutlet($fetch_cookie['vendorLocationID']);
         $productDetails = $this->repository->getByExperienceId($outlet->product_id);
         $userID = $fetch_cookie['user_id'];
         $rewardsPoints = $fetch_cookie['reward_points'];
         $bookingsMade = $fetch_cookie['bookingsMade'];
         $type = "new";
         $reservationType = "experience";
         $lastOrderId = $fetch_cookie['order_id'];
         //echo "rewardsPoints = ".$rewardsPoints." , bookingsMade = ".$bookingsMade." , type = ".$type." , reservationType = ".$reservationType; die;
         Profile::updateReservationInUsers($rewardsPoints, $type, $bookingsMade, $reservationType, $userID, $lastOrderId);
         DB::table('users')->where('id', $userID)->update(array('full_name' => $fetch_cookie['guestName'], 'phone_number' => $fetch_cookie['phone']));
         //echo "<pre>"; print_r($reservationResponse); die;
         $zoho_data = array('Name' => $fetch_cookie['guestName'], 'Email_ids' => $fetch_cookie['guestEmail'], 'Contact' => $fetch_cookie['phone'], 'Experience_Title' => $fetch_cookie['restaurant_name'] . ' - ' . $fetch_cookie['descriptive_title'], 'No_of_People' => $fetch_cookie['partySize'], 'Date_of_Visit' => date('d-M-Y', strtotime($fetch_cookie['reservationDate'])), 'Time' => date("g:i A", strtotime($fetch_cookie['reservationTime'])), 'Alternate_ID' => 'E' . sprintf("%06d", $fetch_cookie['order_id']), 'Special_Request' => $fetch_cookie['addons_special_request'], 'Type' => "Experience", 'API_added' => 'Web Reservation', 'GIU_Membership_ID' => $fetch_cookie['membership_number'], 'Outlet' => $fetch_cookie['outlet_name'], 'AR_Confirmation_ID' => '0', 'Auto_Reservation' => 'Not available', 'Calling_option' => 'No', 'gift_card_id_from_reservation' => isset($fetch_cookie['giftCardID']) && $fetch_cookie['giftCardID'] != "" ? $fetch_cookie['giftCardID'] : "");
         //echo "<pre>"; print_r($zoho_data);
         $zoho_res = $this->zoho_add_booking($zoho_data);
         $zoho_success = $zoho_res->result->form->add->status;
         //echo "<pre>"; print_r($zoho_success); die;
         if ($zoho_success[0] != "Success") {
             //$this->email->from('*****@*****.**', 'WowTables by GourmetItUp');
             //$list = array('*****@*****.**', '*****@*****.**', '*****@*****.**');
             //$this->email->to($list);
             //$this->email->subject('Urgent: Zoho reservation posting error');
             $mailbody = 'E' . sprintf("%06d", $fetch_cookie['order_id']) . ' reservation has not been posted to zoho. Please fix manually.<br><br>';
             $mailbody .= 'Reservation Details<br>';
             foreach ($zoho_data as $key => $val) {
                 $name = str_replace('_', ' ', $key);
                 $mailbody .= $name . ' ' . $val . '<br>';
             }
             $city_id = Input::get('city');
             $footerpromotions = DB::select('SELECT efp.link,mrn.file  FROM email_footer_promotions as efp LEFT JOIN media_resized_new as mrn ON mrn.media_id = efp.media_id WHERE efp.show_in_experience = 1 AND efp.city_id = ' . $city_id);
             Mail::send('site.pages.zoho_posting_error', ['zoho_data' => $mailbody], function ($message) use($zoho_data) {
                 $message->from('*****@*****.**', 'WowTables by GourmetItUp');
                 $message->to('*****@*****.**')->subject('Urgent: Zoho reservation posting error');
                 $message->cc(['*****@*****.**', '*****@*****.**']);
             });
         }
         $mergeReservationsArray = array('order_id' => sprintf("%06d", $fetch_cookie['order_id']), 'reservation_date' => date('d-F-Y', strtotime($fetch_cookie['reservationDate'])), 'reservation_time' => date('g:i a', strtotime($fetch_cookie['reservationTime'])), 'venue' => $fetch_cookie['restaurant_name'], 'username' => $fetch_cookie['guestName']);
         $reservationResponse = array();
         $reservationResponse['data']['reservationDate'] = $fetch_cookie['reservationDate'];
         $reservationResponse['data']['reservationTime'] = $fetch_cookie['reservationTime'];
         $reservationResponse['data']['partySize'] = $fetch_cookie['partySize'];
         $reservationResponse['data']['reservationID'] = $fetch_cookie['order_id'];
         $reservationResponse['data']['reservation_type'] = "event";
         Mail::send('site.pages.experience_reservation', ['location_details' => $locationDetails, 'outlet' => $outlet, 'post_data' => $fetch_cookie, 'productDetails' => $productDetails, 'reservationResponse' => $reservationResponse, 'footerPromotions' => !empty($footerpromotions) ? $footerpromotions : ""], function ($message) use($mergeReservationsArray) {
             $message->from('*****@*****.**', 'WowTables by GourmetItUp');
             $message->to(Input::get('email'))->subject('Your WowTables Reservation at ' . $mergeReservationsArray['venue']);
             //$message->cc('*****@*****.**', '*****@*****.**');
         });
         $dataPost['admin'] = "yes";
         Mail::send('site.pages.experience_reservation', ['location_details' => $locationDetails, 'outlet' => $outlet, 'post_data' => $fetch_cookie, 'productDetails' => $productDetails, 'reservationResponse' => $reservationResponse, 'footerPromotions' => !empty($footerpromotions) ? $footerpromotions : ""], function ($message) use($mergeReservationsArray) {
             $message->from('*****@*****.**', 'WowTables by GourmetItUp');
             $message->to('*****@*****.**')->subject('NR - #E' . $mergeReservationsArray['order_id'] . ' | ' . $mergeReservationsArray['reservation_date'] . ' , ' . $mergeReservationsArray['reservation_time'] . ' | ' . $mergeReservationsArray['venue'] . ' | ' . $mergeReservationsArray['username']);
             $message->cc(['*****@*****.**', '*****@*****.**', '*****@*****.**']);
         });
         //echo "userid == ".$userID;
         $getUsersDetails = $this->experiences_model->fetchDetails($userID);
         $cities = Location::where(['Type' => 'City', 'visible' => 1])->lists('name', 'id');
         $arrResponse['cities'] = $cities;
         $city_id = Input::get('city');
         $city_name = Location::where(['Type' => 'City', 'id' => $city_id])->pluck('name');
         if (empty($city_name)) {
             $city_name = 'mumbai';
         }
         $city = ucfirst($userData['data']['location']);
         //Start MailChimp
         if (!empty($getUsersDetails)) {
             $merge_vars = array('MERGE1' => $fetch_cookie['guestName'], 'MERGE10' => date('m/d/Y'), 'MERGE11' => $fetch_cookie['bookingsMade'], 'MERGE13' => $fetch_cookie['phone'], 'MERGE27' => date("m/d/Y", strtotime($fetch_cookie['reservationDate'])), 'GROUPINGS' => array(array('id' => 9713, 'groups' => [$city])));
             $this->mailchimp->lists->subscribe($this->listId, ["email" => $fetch_cookie['guestEmail']], $merge_vars, "html", false, true);
             //$this->mc_api->listSubscribe($list_id, $_POST['email'], $merge_vars,"html",true,true );
             /*$my_email = $dataPost['guestEmail'];
               //$city = $users['city'];
               $city = ucfirst($city_name);
               $mergeVars = array(
                   'GROUPINGS' => array(
                       array(
                           'id' => 9613,
                           'groups' => [$city],
                       )
                   )
               );
               //echo "asd , ";
               //$this->mailchimp->lists->interestGroupings($this->listId,true);
               //print_r($test);die;
               $this->mailchimp->lists->updateMember($this->listId, $my_email, $mergeVars);*/
         }
         $arrResponse['allow_guest'] = 'Yes';
         $arrResponse['current_city'] = strtolower($city_name);
         $arrResponse['current_city_id'] = $city_id;
         $arrResponse['restaurant_name'] = $fetch_cookie['restaurant_name'];
         $arrResponse['experience_title'] = $fetch_cookie['experience_title'];
         $arrResponse['experience_description'] = $fetch_cookie['experience_description'];
         $arrResponse['reservation_date'] = $fetch_cookie['reservationDate'];
         $arrResponse['reservation_time'] = $fetch_cookie['reservationTime'];
         $arrResponse['order_id'] = $mergeReservationsArray['order_id'];
         $arrResponse['guests'] = $fetch_cookie['partySize'];
         $arrResponse['experience_includes'] = $fetch_cookie['experience_includes'];
         $arrResponse['terms_and_conditions'] = $fetch_cookie['terms_and_conditions'];
         $arrResponse['short_description'] = $fetch_cookie['short_description'];
         $arrResponse['address'] = $fetch_cookie['address'];
         $arrResponse['lat'] = $fetch_cookie['lat'];
         $arrResponse['long'] = $fetch_cookie['long'];
         $arrResponse['city'] = $fetch_cookie['current_city'];
         $arrResponse['slug'] = $fetch_cookie['slug'];
         $arrResponse['total_amount'] = $fetch_cookie['total_amount'];
         $arrResponse['guestEmail'] = $fetch_cookie['guestEmail'];
         $arrResponse['guestName'] = $fetch_cookie['guestName'];
         $arrResponse['outlet_name'] = $outlet->name;
         $arrResponse['product_id'] = $outlet->product_id;
         $arrResponse['vendor_location_id'] = $outlet->vendor_location_id;
         $arrResponse['vendor_id'] = $outlet->vendor_id;
         return Redirect::to('/experiences/thankyou/E' . $mergeReservationsArray['order_id'])->with('response', $arrResponse);
         //Session::forget('email_session');
     }
 }