/** * Updates an existing Match model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $model->date = date('d.m.Y H:i', strtotime($model->date)); // compositionForm $compositionForm = new CompositionForm(); $compositionForm->match_id = $model->id; $compositionForm->initPlayers($model->command_home_id, $model->command_guest_id); $searchModel = new CompositionSearch(); // homeCompositionDataProvider $params = ['CompositionSearch' => ['match_id' => $model->id, 'command_id' => $model->command_home_id]]; $homeCompositionDataProvider = $searchModel->search($params); $homeCompositionDataProvider->setSort(['defaultOrder' => ['is_basis' => SORT_DESC, 'number' => SORT_ASC]]); // guestCompositionDataProvider $params = ['CompositionSearch' => ['match_id' => $model->id, 'command_id' => $model->command_guest_id]]; $guestCompositionDataProvider = $searchModel->search($params); $guestCompositionDataProvider->setSort(['defaultOrder' => ['is_basis' => SORT_DESC, 'number' => SORT_ASC]]); $contractTeams = Team::getContractTeams(); // homeComposition if (in_array($model->command_home_id, $contractTeams)) { $homeContractType = CompositionForm::CONTRACT_TYPE; $homeCompositionData = Contract::find()->where(['command_id' => $model->command_home_id, 'season_id' => $model->season_id, 'is_active' => 1])->orderBy(['number' => SORT_ASC])->all(); } else { $homeContractType = CompositionForm::MEMBERSHIP_TYPE; $homeCompositionData = Membership::find()->where(['command_id' => $model->command_home_id])->orderBy(['number' => SORT_ASC])->all(); } $homeComposition = []; foreach ($homeCompositionData as $key => $data) { $homeComposition[$key]['id'] = $data->id; $homeComposition[$key]['name'] = "#" . $data->number . " " . $data->player->lastname . " " . $data->player->firstname; } // guestComposition if (in_array($model->command_guest_id, $contractTeams)) { $guestContractType = CompositionForm::CONTRACT_TYPE; $guestCompositionData = Contract::find()->where(['command_id' => $model->command_guest_id, 'season_id' => $model->season_id, 'is_active' => 1])->orderBy(['number' => SORT_ASC])->all(); } else { $guestContractType = CompositionForm::MEMBERSHIP_TYPE; $guestCompositionData = Membership::find()->where(['command_id' => $model->command_guest_id])->orderBy(['number' => SORT_ASC])->all(); } $guestComposition = []; foreach ($guestCompositionData as $key => $data) { $guestComposition[$key]['id'] = $data->id; $guestComposition[$key]['name'] = "#" . $data->number . " " . $data->player->lastname . " " . $data->player->firstname; } if ($model->load(Yii::$app->request->post()) && $model->validate()) { $model->date = date('Y-m-d H:i', strtotime($model->date)); $model->save(false); return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('update', compact('model', 'compositionForm', 'homeComposition', 'guestComposition', 'homeContractType', 'guestContractType', 'homeCompositionDataProvider', 'guestCompositionDataProvider')); } }
/** * Updates list of players. * @return mixed */ public function actionUpdateList() { $list = Yii::$app->request->post('list'); $teamId = Yii::$app->request->post('teamId'); $matchId = Yii::$app->request->post('matchId'); if (isset($list) && $teamId && $matchId) { $list = explode(';', $list); $composition = (new \yii\db\Query())->select(['contract_id'])->from(Composition::tableName())->where(['match_id' => $matchId, 'command_id' => $teamId])->all(); $contractIds = []; foreach ($composition as $data) { $contractIds[] = $data['contract_id']; } // Remove $removeList = []; foreach ($contractIds as $id) { if (is_numeric($id) && !in_array($id, $list)) { $removeList[] = $id; } } if (count($removeList) > 0) { Composition::deleteAll(['match_id' => $matchId, 'command_id' => $teamId, 'contract_id' => $removeList]); } // Add $contractTeams = Team::getContractTeams(); if (in_array($teamId, $contractTeams)) { $contractType = Composition::CONTRACT_TYPE; $contractModel = new Contract(); } else { $contractType = Composition::MEMBERSHIP_TYPE; $contractModel = new Membership(); } $addList = []; foreach ($list as $id) { if (is_numeric($id) && !in_array($id, $contractIds)) { // Add $addList[] = $id; $contract = $contractModel::findOne($id); $model = new Composition(); $model->contract_type = $contractType; $model->contract_id = $id; $model->command_id = $teamId; $model->match_id = $matchId; $model->is_basis = 1; $model->is_substitution = 0; $model->is_captain = 0; if (isset($contract)) { $model->number = $contract->number; $model->amplua_id = $contract->amplua_id; } $model->save(); } } $out = ['success' => 'true', 'removeList' => $removeList, 'addList' => $addList]; } else { $out = ['success' => 'false', 'list' => $list, 'teamId' => $teamId, 'match' => $matchId]; } return Json::encode($out); }