id_etablissement); if (!$etablissement) { $this->addError($attribute, 'Cet établissement n\'existe pas.'); } $user_etablissement_exist = UserEtablissement::find() ->where([ 'id_user' => Yii::$app->user->identity->id, 'id_etablissement' => $this->id_etablissement, 'actif' => 1 ]) ->one(); if ($user_etablissement_exist) { $this->addError($attribute, 'Cet établissement est déjà sur votre tableau de bord.'); } }], ['code', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) { $etablissement = Etablissement::findOne($this->id_etablissement); if ($etablissement) { return strlen($etablissement->code); } else { return false; } }], ['code', function($attribute, $params) { $code = $this->$attribute; $etablissement = Etablissement::findOne($this->id_etablissement); if ($etablissement && strtolower(trim($code)) != strtolower(trim($etablissement->code))) { $this->addError($attribute, 'Code incorrect'); } }], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id_etablissement' => 'Établissement', 'code' => 'Code', ]; } /** * Sends an email to the specified email address using the information collected by this model. * * @param string $email the target email address * @return boolean whether the email was sent */ public function add() { $etablissement = Etablissement::findOne($this->id_etablissement); $user_etablissement_exist = UserEtablissement::find() ->where([ 'id_user' => Yii::$app->user->identity->id, 'id_etablissement' => $this->id_etablissement, 'actif' => 0 ]) ->one(); if ($user_etablissement_exist) { $user_etablissement_exist->actif = 1; $user_etablissement_exist->save(); } else { $user_etablissement = new UserEtablissement(); $user_etablissement->id_user = Yii::$app->user->identity->id; $user_etablissement->id_etablissement = $this->id_etablissement; $user_etablissement->credit = 0; $user_etablissement->actif = 1; $user_etablissement->save(); } Yii::$app->session->setFlash('success', 'Le producteur ' . Html::encode($etablissement->nom) . ' a bien été ajoutée à votre tableau de bord.'); } }