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.') ; } }