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(); } }
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; }
public static function getAvailablePurposes() { return CHtml::listData(SurveyPurpose::model()->findAll(array('order' => 'title')), 'id', 'title'); }
/** * 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; }
protected function getParamsToRender() { return array_merge(parent::getParamsToRender(), array('rootPurposes' => SurveyPurpose::model()->findAll("parentId IS NULL"))); }
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); }