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); } } }
/** * 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'; } }
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); }
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'); } }