public function testItems() { $this->specify("Попытка получить список операторов", function () { $items = ['operator1' => 'Оператор 1', 'operator2' => 'Оператор 2']; expect("Список должен состоять из пар идентификатор - имя", Operator::items())->equals($items); }); }
/** * @param OperatorXML $xml * @return Report|null */ public static function generate(OperatorXML $xml) { $operator = Operator::findOne(['contract' => $xml->getContract()]); $operatorId = $operator !== null ? $operator->getPrimaryKey() : null; $period = ['month' => $xml->getMonth(), 'year' => $xml->getYear()]; $report = self::findOne(['operatorId' => $operatorId, 'period' => $period]); if (!$report instanceof Report) { $report = new Report(); $report['operatorId'] = $operatorId; $report['period'] = $period; } else { $report->outSideDb = []; $report->outSideOperator = []; } if (!$report->save()) { return null; } $report->unlinkAll('items', true); $outSideOperator = Number::find()->where(['operatorId' => $report->operatorId])->indexBy('number')->all(); $outSideDB = []; foreach ($xml->getItems() as $item) { $number = $item['number']; if (array_key_exists($number, $outSideOperator)) { $report->addItem($outSideOperator[$number], $item['expenditure']); unset($outSideOperator[$number]); } else { $outSideDB[] = $item; } } $report->outSideOperator = array_map(function ($item) { return ['number' => $item->number, 'id' => $item->getPrimaryKey()]; }, array_values($outSideOperator)); $report->outSideDb = $outSideDB; $report->save(false); return $report; }
var formatEmployeeList = function(item) { return '<b>' + item.name + '</b><p><small>' + item.post + ' (' + item.division + ')</small></p>'; } var formatEmployeeSelection = function (employee) { return employee.name || employee.text; } JS; $this->registerJs($formatJs, View::POS_HEAD); ?> <?php echo $form->field($model, 'ownerId')->widget(\kartik\select2\Select2::className(), ['initValueText' => $model->owner->fullName, 'showToggleAll' => false, 'options' => ['placeholder' => 'Имя сотрудника...'], 'pluginOptions' => ['allowClear' => true, 'minimumInputLength' => 3, 'ajax' => ['url' => \yii\helpers\Url::to(['owner-list']), 'dataType' => 'json', 'data' => new JsExpression('function(params) { return {q:params.term}; }'), 'delay' => 250], 'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 'templateResult' => new JsExpression('formatEmployeeList'), 'templateSelection' => new JsExpression('formatEmployeeSelection')]]); ?> <?php echo $form->field($model, 'operatorId')->dropDownList(Operator::items()); ?> <?php echo ActiveRadioList::widget(['activeField' => $form->field($model, 'destination'), 'items' => $model::destinationItems(), 'options' => ['class' => 'btn-group btn-group-sm']]); ?> <?php echo $form->field($model, 'limit', ['enableClientValidation' => true]); ?> <?php echo $form->field($model, 'options')->checkboxList($model::optionItems()); ?> <?php
/** * @return \yii\db\ActiveQueryInterface */ public function getOperator() { return $this->hasOne(Operator::className(), ['_id' => 'operatorId']); }
public function getOperators() { return array_merge([self::OPERATOR_ANY => 'Выберите оператора'], Operator::items()); }
public static function getOperatorItems() { if (self::$operatorList === null) { self::$operatorList = array_merge([self::OPERATOR_ALL => "Все операторы"], Operator::items()); } return self::$operatorList; }
public function actionOperators() { $this->stdout("Загружаю операторов\n", Console::FG_BLUE, Console::BOLD); $query = (new Query())->from($this->operatorTableName); $this->stdout("Источник: таблица '{$this->operatorTableName}' " . $query->count() . " записей.\nЦелевая коллекция: '" . Operator::collectionName() . "'\n"); $this->cleanCollection(Operator::collectionName()); foreach ($query->all() as $item) { $operator = new Operator(['name' => $item['name'], 'contract' => $item['contract'], 'contact' => $item['contact']]); if ($operator->save()) { $this->operatorJunction[$item['id']] = $operator->getPrimaryKey(); } } $this->stdout("Успешно загружено " . count($this->operatorJunction) . " записей\n", Console::BOLD, Console::FG_GREEN); $this->stdout("\n"); return Controller::EXIT_CODE_NORMAL; }
public static function operatorList() { return Operator::items(); }