/**
  * Возвращает список должностей диллера
  * @param $params -- набор параметров поиска диллера
  * @return array -- список должностей
  */
 public static function getPostsByDealer($params)
 {
     $dealer = \Dealers::findFirst($params);
     $stafflists = \Stafflist::find("stafflist_group=" . $dealer->stafflist_group_id);
     $posts = array();
     foreach ($stafflists as $stafflist) {
         $posts[] = $stafflist->Posts;
     }
     return $posts;
 }
 public function saveAction()
 {
     $errors = array();
     $id = $this->request->get("id");
     if ($this->request->isPost()) {
         $title = $this->request->get("title");
         $address = $this->request->get("address");
         $parent_id = $this->request->get("parent_id");
         $parent_id = $parent_id ? $parent_id : NULL;
         $status = $this->request->get("status");
         $city_id = $this->request->get("city_id");
         $stafflist_group_id = $this->request->get("stafflist_group_id");
         $inspectors = $this->request->get("inspectors");
         $user = $this->session->get('user');
         $brandsForm = $this->request->get("brands");
         $activities = $this->request->get("activities");
         $brandsForm = is_array($brandsForm) ? $brandsForm : array();
         $activitiesForm = is_array($activities) ? $activities : array();
         $dealer = $id ? \Dealers::findFirst($id) : new \Dealers();
         $calculationBrands = BrandsService::getCalculationResult($user->BrandsMethodists, $dealer->DealersBrands, $brandsForm);
         $calculationActivities = ActivitiesService::getCalculationResult($user->ActivitiesMethodists, $dealer->DealersActivities, $activitiesForm);
         $dealer->DealersBrands->delete();
         // delete all brands from dealer
         $dealer->DealersActivities->delete();
         // delete all activities from dealer
         $dealer->DealersControllers->delete();
         // delete all inspectors from dealer
         $dealer->title = $title;
         $dealer->address = $address;
         $dealer->parent_id = $parent_id;
         $dealer->status = $status;
         $dealer->city_id = $city_id;
         $dealer->stafflist_group_id = $stafflist_group_id;
         if ($id = !$dealer->save()) {
             foreach ($dealer->getMessages() as $msg) {
                 $errors[] = $msg->getMessage();
             }
         } else {
             $dealerBrands = array();
             $dealerActivities = array();
             $dealersControllers = array();
             foreach ($calculationBrands as $brand) {
                 $dealerBrand = new \DealersBrands();
                 $dealerBrand->brand_id = $brand->id;
                 $dealerBrand->dealer_id = $id;
                 $dealerBrands[] = $dealerBrand;
             }
             $dealer->DealersBrands = $dealerBrands;
             foreach ($calculationActivities as $activity) {
                 $dealerActivity = new \DealersActivities();
                 $dealerActivity->activity_id = $activity->id;
                 $dealerActivity->dealer_id = $id;
                 $dealerActivities[] = $dealerActivity;
             }
             $dealer->DealersActivities = $dealerActivities;
             foreach ($inspectors as $userId) {
                 $dealerInspector = new \DealersControllers();
                 $dealerInspector->dealer_id = $dealer->id;
                 $dealerInspector->user_id = $userId;
                 $dealersControllers[] = $dealerInspector;
             }
             $dealer->DealersControllers = $dealersControllers;
             if (!$dealer->save()) {
             }
         }
         if ($errors === array()) {
             // redirect to dealer edit
             $this->response->redirect('/methodist/dealer/edit/' . $dealer->id . "?saved=true");
         }
     } else {
         $errors[] = "Немає данних для збереження";
     }
     $this->view->errors = $errors;
     $this->view->back = $id ? '/methodist/dealer/edit/' . $id : '/methodist/dealer/add';
 }