public function safeUp()
 {
     $recordsData = array(array("id" => 1, "parentId" => null, "title" => 'Эффективность деятельности предприятия'), array("id" => 2, "parentId" => 1, "title" => 'Удовлетворенность'), array("id" => 3, "parentId" => 2, "title" => 'Клиентов работой предприятия в целом'), array("id" => 4, "parentId" => 2, "title" => 'Клиентов работой отдельными подразделениями или сотрудникам'), array("id" => 5, "parentId" => 2, "title" => 'Клиентов работой предприятия по параметрам: ассортимент, сроки, качество, уровень обслуживания и другие'), array("id" => 6, "parentId" => 2, "title" => 'Дилеров (дистрибьюторов или партнеров) работой предприятия'), array("id" => 7, "parentId" => 2, "title" => 'Сотрудников работой на предприятии'), array("id" => 8, "parentId" => 2, "title" => 'Гос.органов работой предприятия'), array("id" => 9, "parentId" => 1, "title" => 'Лояльность и готовность к продолжению сотрудничества'), array("id" => 10, "parentId" => 1, "title" => 'Неудовлетворенные потребности клиентов'), array("id" => 11, "parentId" => null, "title" => 'Эффективность деятельности предприятия'), array("id" => 12, "parentId" => 11, "title" => 'Узнаваемость бренда (сила бренда)'), array("id" => 13, "parentId" => 11, "title" => 'Замер узнаваемости бренда до и после рекламной кампании'), array("id" => 14, "parentId" => 11, "title" => 'Тестирование концепций'), array("id" => 15, "parentId" => 11, "title" => 'Тестирование запоминаемости рекламы'), array("id" => 16, "parentId" => 11, "title" => 'Тестирование вариантов упаковок'), array("id" => 17, "parentId" => 11, "title" => 'Изучение сложившегося восприятия образа, ассоциаций'), array("id" => 18, "parentId" => 11, "title" => 'Сравнение эффективности и выбор ТОП-10 рекламных каналов'), array("id" => 19, "parentId" => null, "title" => 'Изучение рынка'), array("id" => 20, "parentId" => 19, "title" => 'Емкость рынка'), array("id" => 21, "parentId" => 19, "title" => 'Потенциал рынка'), array("id" => 22, "parentId" => 19, "title" => 'Насыщенность и привлекательность рынка'), array("id" => 23, "parentId" => 19, "title" => 'Прогнозирование спроса на новую продукцию'), array("id" => 24, "parentId" => 19, "title" => 'Проникновение на рынок (пенетрация)'), array("id" => 25, "parentId" => 19, "title" => 'Комплексный анализ рынка города или региона, включая'), array("id" => 26, "parentId" => null, "title" => 'Потребительский анализ'), array("id" => 27, "parentId" => 26, "title" => 'Портрет существующих клиентов или потребителей'), array("id" => 28, "parentId" => 26, "title" => 'Портрет потенциальной (неохваченной) аудитории'), array("id" => 29, "parentId" => 26, "title" => 'Мотивация к потреблению'), array("id" => 30, "parentId" => 26, "title" => 'Факторы потребительского выбора'), array("id" => 31, "parentId" => 26, "title" => 'Сегментация потребителей или клиентов и портреты сегментов'), array("id" => 32, "parentId" => 26, "title" => 'Выбор ТОП-3 сегментов (по потенциальной выручке, по слабым конкурентным предложениям)'), array("id" => 33, "parentId" => 26, "title" => 'Оптимальные ценовые границы для целевой аудитории'), array("id" => 34, "parentId" => 26, "title" => 'Неудовлетворенные потребности аудитории'), array("id" => 35, "parentId" => 26, "title" => 'Медиа-предпочтения целевой аудитории'), array("id" => 36, "parentId" => null, "title" => 'Конкурентный анализ'), array("id" => 37, "parentId" => 36, "title" => 'Доли всех участников рынка'), array("id" => 38, "parentId" => 36, "title" => 'Известность конкурирующих брендов'), array("id" => 39, "parentId" => 36, "title" => 'Анализ конкурентов по параметрам (выручка, количество сотрудников, география работы, каналы продаж и другое)'), array("id" => 40, "parentId" => 36, "title" => 'Оценка работы конкурентов потребителями (ассортимент, качество, уровень сервиса, сроки, цены и другое)'), array("id" => 41, "parentId" => 36, "title" => 'Преимущества и недостатки конкурентов по мнению целевой аудитории'), array("id" => 42, "parentId" => null, "title" => 'Я – специалист в исследованиях, мне нужно'), array("id" => 43, "parentId" => 42, "title" => 'Собрать данные по моей анкете'), array("id" => 44, "parentId" => 42, "title" => 'Ввести данные с моих бумажных анкет (в электронный массив Excel, SPSS)'), array("id" => 45, "parentId" => 42, "title" => 'Проанализировать мои данные (построить таблицы и диаграммы)'), array("id" => 46, "parentId" => 42, "title" => 'Дать маркетинговую интерпретацию по итогам анализа моих данных'), array("id" => 47, "parentId" => null, "title" => 'Я – представитель малого бизнеса, мне нужно быстро и недорого провести (без использования опросов)'), array("id" => 48, "parentId" => 47, "title" => 'Обзор рынка'), array("id" => 49, "parentId" => 47, "title" => 'Конкурентный анализ'), array("id" => 50, "parentId" => 47, "title" => 'Анализ потребителей'), array("id" => 51, "parentId" => 47, "title" => 'Оценку удовлетворенности клиентов'), array("id" => 52, "parentId" => 47, "title" => 'Выбор каналов продвижения для рекламной кампании'));
     foreach ($recordsData as $idx => $recordData) {
         $purpose = new SurveyPurpose();
         $purpose->setAttributes($recordData);
         $purpose->sortOrder = $idx;
         $purpose->save();
     }
 }
コード例 #2
0
 public static function getAvailableParents(SurveyPurpose $forPurpose = null)
 {
     $purposes = array('' => 'Корневой элемент');
     $condition = '';
     if ($forPurpose && $forPurpose->id) {
         $exclusiveIds = array($forPurpose->id);
         $exclusiveIds = array_merge($exclusiveIds, static::getChildrenIds($forPurpose));
         if (!empty($exclusiveIds)) {
             $condition = 'id NOT IN (' . implode(',', $exclusiveIds) . ')';
         }
     }
     foreach (SurveyPurpose::model()->findAll($condition) as $purpose) {
         $purposes[$purpose->id] = $purpose->title;
     }
     return $purposes;
 }
コード例 #3
0
 public static function getAvailablePurposes()
 {
     return CHtml::listData(SurveyPurpose::model()->findAll(array('order' => 'title')), 'id', 'title');
 }
コード例 #4
0
 /**
  * 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 SurveyPurpose the loaded model
  * @throws CHttpException
  */
 public function loadModel($id)
 {
     $model = SurveyPurpose::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
コード例 #5
0
 protected function getParamsToRender()
 {
     return array_merge(parent::getParamsToRender(), array('rootPurposes' => SurveyPurpose::model()->findAll("parentId IS NULL")));
 }
コード例 #6
0
 public function getParamsForCalculation()
 {
     $questionIds = array();
     foreach ((array) $this->steps[4]->questions as $questionId) {
         if (!in_array(intval($questionId), (array) $this->steps[4]->deletedQuestions)) {
             $questionIds[] = intval($questionId);
         }
     }
     $questionsCountEx = 0;
     if (count($questionIds) > 0) {
         $criteria = new CDbCriteria();
         $criteria->addInCondition('id', $questionIds);
         $questions = SurveyPurposeQuestion::model()->findAll($criteria);
         foreach ($questions as $question) {
             switch ($question->type) {
                 case 'SurveyPurposeQuestionArray':
                 case 'SurveyPurposeQuestionGraduation5':
                 case 'SurveyPurposeQuestionGraduation10':
                     $questionsCountEx += count($question->getRows()) / 2;
                     break;
                 case 'SurveyPurposeQuestionListMultySelelection':
                     $questionsCountEx += 1.35;
                     break;
                 default:
                     $questionsCountEx++;
             }
         }
     }
     $criteria = new CDbCriteria();
     $criteria->addInCondition('id', $this->steps[0]->purposes);
     $purposes = SurveyPurpose::model()->findAll($criteria);
     $surveysCount = 1;
     $methodsByPurposes = array();
     foreach ($purposes as $purpose) {
         /**
          * @var $purpose SurveyPurpose
          */
         $surveysCount *= $purpose->surveysCount;
         $serviceId = $purpose->serviceId;
         if ($serviceId) {
             if (isset($methodsByPurposes[$serviceId])) {
                 $methodsByPurposes[$serviceId] = max($purpose->serviceRatio, $methodsByPurposes[$serviceId]);
             } else {
                 $methodsByPurposes[$serviceId] = $purpose->serviceRatio;
             }
             $methodsByPurposes[$serviceId] = max(0, $methodsByPurposes[$serviceId]);
         }
     }
     $separatedRegions = count($this->steps[1]->regions) > 0 ? $this->steps[1]->regions : array();
     //        print_r($this->steps[ 4 ]);
     //        die;
     return array(static::PARAM_SEPARATED_REGIONS => $separatedRegions, static::PARAM_SEPARATED_REGIONS_COUNT => count($separatedRegions) > 0 ? count($separatedRegions) : 1, static::PARAM_QUESTIONS_COUNT => count($this->steps[4]->questions), static::PARAM_QUESTIONS_COUNT_EX => $questionsCountEx, static::PARAM_INVESTIGATIONS_COUNT => $this->steps[3]->minimalSelectionOfInvestigation, static::PARAM_NEED_COMPARE => $this->steps[2]->compareWithAnotherOrganizationsYesRussian || $this->steps[2]->compareWithAnotherOrganizationsYesEuropean || $this->steps[2]->compareWithAnotherOrganizationsYesWorld, static::PARAM_IS_BRAND_IN_TOP10 => $this->steps[1]->isBrandInTop10 == 'yes', static::PARAM_SURVEYS_COUNT => $surveysCount, static::PARAM_PURPOSES_COLLECTION_METHODS => $methodsByPurposes);
 }