/**
  * Updates Stage into database
  *
  * @param Stage $stage
  * @param array $input
  *
  * @return Stage
  */
 public function update($stage, $input)
 {
     $stage->fill($input);
     $stage->save();
     return $stage;
 }
Exemple #2
0
 /**
  * Редактирование проекта
  * Суть такова: У каждого стадии есть id-шник. Если они приходять сюда POST-ом
  * значит они не были удалены во view-шке. Если же стадия была удалена во view-шке
  * соответсвенно ее надо удалить в базе.
  * Добавленные стадии создаются в обычном порядке.
  * Проверен (21.12.15) - все ровно
  */
 public function actionUpdate($id)
 {
     $model = $this->findModel($id);
     if ($model->load(Yii::$app->request->post())) {
         $model->deadline = date('Y-m-d', strtotime($model->deadline));
         $model->save();
         $stage_ids = $_POST['obj_id'];
         //id-шники всех стадий
         foreach ($model->stages as $stage) {
             $exist = false;
             foreach ($stage_ids as $k => $v) {
                 if ($stage->id == $v) {
                     $exist = true;
                 }
             }
             if ($exist == false) {
                 $stage->delete();
             }
         }
         if (isset($_POST['stage_name'])) {
             $stage_name = $_POST['stage_name'];
             $stage_description = $_POST['stage_description'];
             $stage_deadline = $_POST['stage_deadline'];
             $stage_who = $_POST['stage_who'];
             foreach ($stage_name as $k => $v) {
                 $exist = Stage::findOne($stage_ids[$k]);
                 if ($exist) {
                     $exist->name = $v;
                     $exist->description = $stage_description[$k];
                     $exist->deadline = strtotime($stage_deadline[$k]);
                     $exist->user_id = $stage_who[$k];
                     $exist->save();
                 } else {
                     $stage = new Stage();
                     $stage->name = $v;
                     $stage->description = $stage_description[$k];
                     $stage->deadline = strtotime($stage_deadline[$k]);
                     $stage->user_id = $stage_who[$k];
                     $stage->project_id = $model->id;
                     $stage->status = R::STAGE_CREATED;
                     $stage->create_time = time();
                     $stage->save();
                 }
             }
         }
         return $this->redirect(['view', 'id' => $model->id]);
     } else {
         return $this->render('update', ['model' => $model]);
     }
 }