0], [['no_mail','mail_prod_lundi','mail_prod_mardi','mail_prod_mercredi','mail_prod_jeudi','mail_prod_vendredi','mail_prod_samedi','mail_prod_dimanche'],'boolean'], [['nom','prenom','telephone','adresse'], 'string'], [['nom','prenom','email'],'required','message'=> 'Ce champs ne peut être vide'], ['email','email','message'=> 'Cette adresse email n\'est pas valide'], ['email','verifyEmail'], ['status', 'default', 'value' => self::STATUS_ACTIVE], ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_ADMIN,self::STATUS_BOULANGER ]], ]; } public function verifyEmail($attribute,$params) { $user = User::find()->where("email LIKE :email AND id != :id")->params(array(':email'=>'%'.$this->email.'%', ':id'=>$this->id))->one() ; if($user) $this->addError($attribute, 'Cette adresse email est déjà utilisée par un autre utilisateur '); } /** * @inheritdoc */ public static function findIdentity($id) { return static::findOne(['id' => $id/*, 'status' => self::STATUS_ACTIVE*/]); } /** * @inheritdoc */ public static function findIdentityByAccessToken($token, $type = null) { throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.'); } /** * Finds user by username * * @param string $username * @return static|null */ public static function findByUsername($username) { return static::findOne(['username' => $username/*, 'status' => self::STATUS_ACTIVE*/]); } public static function findByEmail($email) { return static::findOne(['email' => $email /*, 'status' => self::STATUS_ACTIVE*/]); } /** * Finds user by password reset token * * @param string $token password reset token * @return static|null */ public static function findByPasswordResetToken($token) { if (!static::isPasswordResetTokenValid($token)) { return null; } return static::findOne([ 'password_reset_token' => $token, 'status' => self::STATUS_ACTIVE, ]); } /** * Finds out if password reset token is valid * * @param string $token password reset token * @return boolean */ public static function isPasswordResetTokenValid($token) { if (empty($token)) { return false; } $expire = Yii::$app->params['user.passwordResetTokenExpire']; $parts = explode('_', $token); $timestamp = (int) end($parts); return $timestamp + $expire >= time(); } /** * @inheritdoc */ public function getId() { return $this->getPrimaryKey(); } /** * @inheritdoc */ public function getAuthKey() { return $this->auth_key; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->getAuthKey() === $authKey; } /** * Validates password * * @param string $password password to validate * @return boolean if password provided is valid for current user */ public function validatePassword($password) { return Yii::$app->security->validatePassword($password, $this->password_hash); } /** * Generates password hash from password and sets it to the model * * @param string $password */ public function setPassword($password) { $this->password_hash = Yii::$app->security->generatePasswordHash($password); } /** * Generates "remember me" authentication key */ public function generateAuthKey() { $this->auth_key = Yii::$app->security->generateRandomString(); } /** * Generates new password reset token */ public function generatePasswordResetToken() { $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time(); } /** * Removes password reset token */ public function removePasswordResetToken() { $this->password_reset_token = null; } public function attributeLabels() { return [ 'id' => 'ID', 'username' => 'Identifiant', 'password' => 'Mot de passe', 'rememberMe' => 'Se souvenir de moi', 'confiance' => 'De confiance', 'no_mail' => 'Ne pas recevoir d\'email de la part du Chat des Noisettes', 'mail_prod_lundi' => 'Lundi', 'mail_prod_mardi' => 'Mardi', 'mail_prod_mercredi' => 'Mercredi', 'mail_prod_jeudi' => 'Jeudi', 'mail_prod_vendredi' => 'Vendredi', 'mail_prod_samedi' => 'Samedi', 'mail_prod_dimanche' => 'Dimanche', ]; } public function isBoulanger() { return $this->id_etablissement ; } public function getNomMagasin() { $etablissement = Etablissement::findOne($this->id_etablissement) ; return $etablissement->nom ; } public function getEtablissementsFavoris() { $etabs = (new \yii\db\Query()) ->select('*') ->from(['user_etablissement', 'etablissement']) ->where('user_etablissement.id_etablissement = etablissement.id') ->andWhere(['user_etablissement.id_user' => $this->id]) ->all(); $arr_etabs = array() ; foreach($etabs as $e) { $etablissement = Etablissement::findOne($e['id_etablissement']) ; if($etablissement->etatPaiement() == Etablissement::PAIEMENT_OK || $etablissement->etatPaiement() == Etablissement::PAIEMENT_ESSAI) { $arr_etabs[] = $e ; } } return $arr_etabs ; } public function etatPaiementEtablissement() { $etablissement = Etablissement::findOne($this->id_etablissement) ; if($etablissement) { return $etablissement->etatPaiement() ; } } public function periodeEssai() { $etablissement = Etablissement::findOne($this->id_etablissement) ; if($etablissement) { $date_limite = strtotime($etablissement->date_creation) + 30*24*60*60 ; $date = time() ; if($date < $date_limite) { $date = $date_limite - $date ; return (int) ($date / (24*60*60)) ; } else { return 0 ; } } } }