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());
         }
     }
 }