public function safeUp()
 {
     $recordsData = array(array('title' => 'Подготовка проекта', 'type' => 'MethodOfCollectionData', 'price' => 3500, 'duration' => 2, 'comments' => 'Разработка и согласование анкеты, обучение интервьюеров.', 'sortOrder' => 0, 'readOnly' => true, "selectable" => false, "defaultCount" => 1), array('title' => 'Личный опрос', 'type' => 'MethodOfCollectionDataByQuestions', 'price' => 10, 'duration' => 0, 'comments' => '', 'sortOrder' => 1, 'readOnly' => false, "selectable" => true, "defaultCount" => 385), array('title' => 'Телефонный опрос', 'type' => 'MethodOfCollectionDataByQuestions', 'price' => 7, 'duration' => 0, 'comments' => '', 'sortOrder' => 2, 'readOnly' => false, "selectable" => true, "defaultCount" => 385), array('title' => 'Онлайн-опрос', 'type' => 'MethodOfCollectionDataByQuestions', 'price' => 7, 'duration' => 0, 'comments' => '', 'sortOrder' => 3, 'readOnly' => false, "selectable" => true, "defaultCount" => 385), array('title' => 'Холл-тест', 'type' => 'MethodOfCollectionData', 'price' => 450, 'duration' => 0, 'comments' => '', 'sortOrder' => 4, 'readOnly' => false, "selectable" => true, "defaultCount" => 200), array('title' => 'Экспертные интервью', 'type' => 'MethodOfCollectionData', 'price' => 1500, 'duration' => 0, 'comments' => '', 'sortOrder' => 5, 'readOnly' => false, "selectable" => true, "defaultCount" => 10), array('title' => 'Глубинные интервью', 'type' => 'MethodOfCollectionData', 'price' => 2300, 'duration' => 0, 'comments' => '', 'sortOrder' => 6, 'readOnly' => false, "selectable" => true, "defaultCount" => 20), array('title' => 'Фокус-группа', 'type' => 'MethodOfCollectionData', 'price' => 37500, 'duration' => 0, 'comments' => '', 'sortOrder' => 7, 'readOnly' => false, "selectable" => true, "defaultCount" => 2), array('title' => 'Кабинетное исследование', 'type' => 'MethodOfCollectionDataByRegions', 'price' => 16500, 'duration' => 0, 'comments' => '', 'sortOrder' => 8, 'readOnly' => false, "selectable" => true, "defaultCount" => 1), array('title' => 'Онлайн-опрос с приглашением через e-mail по моей базе (средняя отвечаемость до 1%)', 'type' => 'MethodOfCollectionDataByQuestions', 'price' => 4, 'duration' => 0, 'comments' => '', 'sortOrder' => 9, 'readOnly' => false, "selectable" => true, "defaultCount" => 385), array('title' => 'Онлайн-опрос с приглашением через смс по моей базе (средняя отвечаемость до 3%)', 'type' => 'MethodOfCollectionDataByQuestions', 'price' => 5, 'duration' => 0, 'comments' => '', 'sortOrder' => 10, 'readOnly' => false, "selectable" => true, "defaultCount" => 385), array('title' => 'Онлайн-опрос, распространением ссылки я займусь самостоятельно', 'type' => 'MethodOfCollectionData', 'price' => 0, 'duration' => 0, 'comments' => '', 'sortOrder' => 11, 'readOnly' => false, "selectable" => true, "defaultCount" => 0), array('title' => 'Итоговая отчетность', 'type' => 'MethodOfCollectionDataByRegions', 'price' => 16500, 'duration' => 0, 'comments' => '', 'sortOrder' => 12, 'readOnly' => true, "selectable" => false, "defaultCount" => 0), array('title' => 'Сравнение с показателями отрасли', 'type' => 'MethodOfCollectionDataComparingWithOrganizations', 'price' => 2000, 'duration' => 0, 'comments' => '', 'sortOrder' => 13, 'readOnly' => true, "selectable" => false, "defaultCount" => 0));
     foreach ($recordsData as $recordData) {
         $method = new MethodOfCollectionData();
         $method->setAttributes($recordData);
         $method->save();
     }
 }
 protected function getParamsToRender()
 {
     return array_merge(parent::getParamsToRender(), array('methods' => MethodOfCollectionData::model()->findAll()));
 }
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer $id the ID of the model to be loaded
  * @return MethodOfCollectionData the loaded model
  * @throws CHttpException
  */
 public function loadModel($id)
 {
     $model = MethodOfCollectionData::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
 public function next()
 {
     if (count($this->steps) <= $this->curStep + 1) {
         return null;
     } else {
         $this->curStep++;
         // Если нужно загрузить анкету (в финале), то пропускаем щаг с анкетой
         if ($this->needFileWithClientData() && $this->steps[$this->curStep] instanceof SurveyRequestStep5) {
             $this->next();
         }
         // Если перед нами представитель малого бизнеса, то пролистываем после Исследуемого рынка до Калькуляции
         if ($this->isSmallBusiness() && ($this->steps[$this->curStep] instanceof SurveyRequestStep3 || $this->steps[$this->curStep] instanceof SurveyRequestStep4 || $this->steps[$this->curStep] instanceof SurveyRequestStep5)) {
             $this->next();
         }
         if ($this->steps[$this->curStep] instanceof SurveyRequestStep5) {
             $purposesIds = $this->steps[0]->purposes;
             if (!empty($purposesIds)) {
                 $purposes = SurveyPurpose::model()->findAllByPk($purposesIds);
                 $questionsIds = array();
                 $blocksIds = array();
                 foreach ($purposes as $purpose) {
                     $blocks = $purpose->questionsBlocks;
                     if (!empty($blocks)) {
                         $blocksIds = array_merge(array_map(function ($block) {
                             return $block->id;
                         }, $blocks), $blocksIds);
                     }
                 }
                 if (!empty($blocksIds)) {
                     $criteria = new CDbCriteria();
                     $criteria->with = 'questionBlockQuestions';
                     $criteria->addInCondition('questionBlockQuestions.questionBlockId', $blocksIds);
                     $criteria->select = 't.id';
                     $questions = SurveyPurposeQuestion::model()->findAll($criteria);
                     $questionsIds = array_map(function ($question) {
                         return $question->id;
                     }, $questions);
                 }
                 $this->steps[$this->curStep]->questions = $questionsIds;
             }
         }
         $smallBusinessServices = array();
         $commonServices = array();
         if ($this->steps[$this->curStep] instanceof SurveyRequestStep6) {
             $this->steps[$this->curStep]->init();
             $this->steps[$this->curStep]->selectedSurveySteps = array();
             if (count($this->steps[0]->purposes) > 0) {
                 $criteria = new CDbCriteria();
                 $purposesTable = SurveyPurpose::model()->tableName();
                 $criteria->join = "INNER JOIN {$purposesTable} purpose ON t.id = purpose.serviceId";
                 $criteria->addInCondition('purpose.id', $this->steps[0]->purposes);
                 $services = Service::model()->findAll($criteria);
                 foreach ($services as $service) {
                     if ($service->type == ServiceHelper::TYPE_SMALL_BUSINESS) {
                         $smallBusinessServices[] = $service->id;
                     } else {
                         $commonServices[] = $service->id;
                     }
                 }
             }
             if (count($this->steps[3]->methodsOfCollectionData) > 0) {
                 $criteria = new CDbCriteria();
                 $methodsTable = MethodOfCollectionData::model()->tableName();
                 $criteria->join = "INNER JOIN {$methodsTable} method ON t.id = method.serviceId";
                 $methodIds = array_keys($this->steps[3]->methodsOfCollectionData);
                 $criteria->addInCondition('method.id', $methodIds);
                 $services = Service::model()->findAll($criteria);
                 foreach ($services as $service) {
                     if ($service->type == ServiceHelper::TYPE_SMALL_BUSINESS) {
                         $smallBusinessServices[] = $service->id;
                     } else {
                         $commonServices[] = $service->id;
                     }
                 }
             }
             if (count($commonServices) == 0) {
                 $commonServices[] = SurveyRequestWizard::DEFAULT_SERVICE;
             }
             $criteria = new CDbCriteria();
             $criteria->addCondition("isStatic");
             $services = Service::model()->findAll($criteria);
             foreach ($services as $service) {
                 $commonServices[] = $service->id;
             }
             if (count($smallBusinessServices) > 0) {
                 $this->steps[$this->curStep]->selectedSurveySteps = $smallBusinessServices;
             } else {
                 $this->steps[$this->curStep]->selectedSurveySteps = $commonServices;
             }
         }
         return $this->current();
     }
 }