public function addAction($id = null) { $userSession = $this->session->get("userSession"); $business = Business::findFirstById($id); $mainCategory = $business->BusinessCategories->main_title; if (!$business) { return $this->response->redirect('review/search_business'); } //$this->view->setVar('business', $business); $reviews = Reviews::findByBusinessId($id); //$this->view->setVar('reviews', $reviews); $this->view->setVars(['business' => $business, 'reviews' => $reviews, 'mainCategory' => $mainCategory]); if ($this->request->isPost()) { $validation = new Phalcon\Validation(); $validation->add('review', new PresenceOf(array('message' => 'review content is required'))); $validation->add('rate', new PresenceOf(array('message' => 'rate is required'))); $messages = $validation->validate($_POST); if (count($messages)) { $this->view->disable(); $errorMsg = ''; foreach ($messages as $msg) { $errorMsg .= $msg . "<br>"; } $this->flash->error('<button type="button" class="close" data-dismiss="alert">×</button>' . $errorMsg); return $this->response->redirect('review/add/' . $id); } else { $this->view->disable(); echo "validation is either failed or passed"; } $content = $this->request->getPost('review'); $rate = $this->request->getPost('rate'); $review = new Reviews(); $review->created = date('Y-m-d H:i:s'); $review->modified = date('Y-m-d H:i:s'); $review->member_id = $userSession['id']; $review->business_id = $id; $review->content = $content; $review->rate = $rate; $review->status = 'Pending'; if ($review->create()) { $averageRate = Reviews::average(array("column" => "rate", "conditions" => "business_id = '" . $id . "'")); $totalReview = Reviews::count(array("column" => "id", "conditions" => "business_id = '" . $id . "'")); $business->total_review = $totalReview; $business->average_rate = $averageRate; $maintTile = $this->request->getPost('mainTitle'); if ($business->update()) { if ($mainTitle == 'Restaurants') { $reviewOpt = new OptonRestaReviews(); $reviewOpt->created = date('Y-m-d H:i:s'); $reviewOpt->modified = date('Y-m-d H:i:s'); $reviewOpt->member_id = $userSession['id']; $reviewOpt->business_id = $id; $reviewOpt->main_title = "Restaurants"; $reviewOpt->caters = $this->request->getPost("resta_caters"); $reviewOpt->wifi = $this->request->getPost("resta_wifi"); $reviewOpt->has_tv = $this->request->getPost("resta_hastv"); $reviewOpt->price_range = $this->request->getPost("resta_pricerange"); $reviewOpt->accepts_credit_cards = $this->request->getPost("resta_creditcard"); $reviewOpt->parking = $this->request->getPost("resta_parking"); $reviewOpt->bike_parking = $this->request->getPost("resta_bike_parking"); $reviewOpt->attire = $this->request->getPost("resta_attire"); $reviewOpt->good_for_groups = $this->request->getPost("resta_groups"); $reviewOpt->good_for_kids = $this->request->getPost("resta_kids"); $reviewOpt->takes_reservations = $this->request->getPost("resta_reservations"); $reviewOpt->delivery = $this->request->getPost("resta_delivery"); $reviewOpt->take_away = $this->request->getPost("resta_takeaway"); $reviewOpt->waiter_service = $this->request->getPost("resta_waiter"); $reviewOpt->outdoor_seating = $this->request->getPost("resta_outdoor"); $reviewOpt->good_for = $this->request->getPost("resta_goodfor"); $reviewOpt->alcohol = $this->request->getPost("resta_alcohol"); $reviewOpt->noise_level = $this->request->getPost("resta_noise"); $reviewOpt->ambience = $this->request->getPost("resta_ambience"); if (!$reviewOpt->create()) { $this->view->disable(); print_r($reviewOpt->getMessages()); } } else { if ($mainTitle == 'Automotive') { $reviewOpt = new OptionAutomotiveReviews(); $reviewOpt->created = date('Y-m-d H:i:s'); $reviewOpt->modified = date('Y-m-d H:i:s'); $reviewOpt->member_id = $userSession['id']; $reviewOpt->business_id = $id; $reviewOpt->wifi = $this->request->getPost('auto_wifi'); $reviewOpt->accepts_credit_cards = $this->request->getPost('auto_creditcard'); $reviewOpt->bike_parking = $this->request->getPost('auto_bike_parking'); if (!$reviewOpt->create()) { $this->view->disable(); print_r($reviewOpt->getMessages()); } } else { if ($mainTitle == 'Active Life') { $reviewOpt = new OptionAutomotiveReviews(); $reviewOpt->created = date('Y-m-d H:i:s'); $reviewOpt->modified = date('Y-m-d H:i:s'); $reviewOpt->member_id = $userSession['id']; $reviewOpt->business_id = $id; $reviewOpt->price_range = $this->request->getPost('active_pricerange'); $reviewOpt->good_for_kids = $this->request->getPost('active_kids'); $reviewOpt->parking = $this->request->getPost('active_parking'); $reviewOpt->bike_parking = $this->request->getPost('active_bike_parking'); $reviewOpt->accepts_credit_cards = $this->request->getPost('active_creditcard'); if (!$reviewOpt->create()) { $this->view->disable(); print_r($reviewOpt->getMessages()); } } else { if ($mainTitle = 'Hotels & Travel') { $reviewOpt = new OptionHoteltravelReviews(); $reviewOpt->created = date('Y-m-d H:i:s'); $reviewOpt->modified = date('Y-m-d H:i:s'); $reviewOpt->member_id = $userSession['id']; $reviewOpt->business_id = $id; $reviewOpt->price_range = $this->request->getPost('hotel_pricerange'); $reviewOpt->wifi = $this->request->getPost('hotel_wifi'); $reviewOpt->has_tv = $this->request->getPost('hotel_hastv'); $reviewOpt->accepts_credit_cards = $this->request->getPost('hotel_creditcard'); $reviewOpt->parking = $this->request->getPost('hotel_parking'); $reviewOpt->bike_parking = $this->request->getPost('hotel_bike_parking'); $reviewOpt->good_for_groups = $this->request->getPost('hotel_groups'); $reviewOpt->good_for_kids = $this->request->getPost('hotel_kids'); if (!$reviewOpt->create()) { $this->view->disable(); print_r($reviewOpt->getMessages()); } } else { $this->view->disable(); echo "what happened."; } } } } } $this->flash->success('<button type="button" class="close" data-dismiss="alert">×</button>You\'re review has been submitted.'); return $this->response->redirect('business/view/' . $id); } else { $this->view->disable(); print_r($review->getMessages()); } } }