Browse Source

Indentation + commentaires modèle User / UserEtablissement

dev
Guillaume Bourgeois 5 years ago
parent
commit
e1821d7565
3 changed files with 162 additions and 111 deletions
  1. +0
    -39
      backend/views/paiement/index.php
  2. +154
    -68
      common/models/User.php
  3. +8
    -4
      common/models/UserEtablissement.php

+ 0
- 39
backend/views/paiement/index.php View File



$this->title = 'Paiement'; $this->title = 'Paiement';


$etat_paiement = Yii::$app->user->identity->etatPaiementEtablissement() ;

?> ?>


<h1>Paiement</h1> <h1>Paiement</h1>

<div class="alert alert-warning">
<?php if($etat_paiement == Etablissement::PAIEMENT_ESSAI_TERMINE): ?>
Votre période d'essai gratuite est terminée.<br />
Vous pouvez continuer à bénéficier de ce service en vous abonnant à <strong>La boîte à pain</strong>
pour <strong>30 € / mois</strong>
<?php elseif($etat_paiement == Etablissement::PAIEMENT_RETARD): ?>
Nous constatons un retard de paiement sur votre compte.<br />
Nous vous invitons à vérifier que tout est en ordre au niveau de votre compte Paypal ou à vous
abonner à nouveau en utilisant le bouton ci-dessous (<strong>30 € / mois</strong>).
<?php elseif($etat_paiement == Etablissement::PAIEMENT_ESSAI): ?>
Si vous souhaitez profiter de ce service au-delà de la période d'essai gratuite,
abonnez-vous à <strong>La boîte à pain</strong> pour <strong>30 € / mois</strong>.
<?php endif; ?>
</div>
<div class="alert alert-info">Si vous rencontrez des difficultés, n'hésitez pas à nous contacter.</div>


<!--<h2>Prod</h2>
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="K96K2WLBSBDSA">
<input name="custom" value="<?php echo Yii::$app->user->identity->id; ?>" type="hidden" />
<input type="image" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal, le réflexe sécurité pour payer en ligne">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>-->

<!--<h2>Test</h2>-->
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="USASPWAC39S4N">
<input name="custom" value="<?php echo Yii::$app->user->identity->id; ?>" type="hidden" />
<input type="image" src="https://www.sandbox.paypal.com/fr_FR/FR/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal, le réflexe sécurité pour payer en ligne">
<img alt="" border="0" src="https://www.sandbox.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>


+ 154
- 68
common/models/User.php View File

namespace common\models; namespace common\models;


use yii\web\IdentityInterface; use yii\web\IdentityInterface;
use yii\db\Query ;


/** /**
* User model * User model
* @property string $password write-only password * @property string $password write-only password
* @property boolean $confiance * @property boolean $confiance
*/ */
class User extends ActiveRecord implements IdentityInterface {
class User extends ActiveRecord implements IdentityInterface
{


const STATUS_DELETED = 0; const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10; const STATUS_ACTIVE = 10;
/** /**
* @inheritdoc * @inheritdoc
*/ */
public static function tableName() {
public static function tableName()
{
return '{{%user}}'; return '{{%user}}';
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public function behaviors() {
public function behaviors()
{
return [ return [
TimestampBehavior::className(), TimestampBehavior::className(),
]; ];
/** /**
* @inheritdoc * @inheritdoc
*/ */
public function rules() {
public function rules()
{
return [ return [
['confiance', 'default', 'value' => 1], ['confiance', 'default', 'value' => 1],
[['no_mail', 'mail_prod_lundi', 'mail_prod_mardi', 'mail_prod_mercredi', 'mail_prod_jeudi', 'mail_prod_vendredi', 'mail_prod_samedi', 'mail_prod_dimanche'], 'boolean'], [['no_mail', 'mail_prod_lundi', 'mail_prod_mardi', 'mail_prod_mercredi', 'mail_prod_jeudi', 'mail_prod_vendredi', 'mail_prod_samedi', 'mail_prod_dimanche'], 'boolean'],
]; ];
} }


public function verifyPasswordOld($attribute, $params) {
/**
* Vérifie le mot de passe envoyé par l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyPasswordOld($attribute, $params)
{
if (strlen($this->password_old)) { if (strlen($this->password_old)) {
if (!$this->validatePassword($this->password_old)) { if (!$this->validatePassword($this->password_old)) {
$this->addError($attribute, 'Mot de passe invalide.'); $this->addError($attribute, 'Mot de passe invalide.');
} }
} }


public function verifyPasswordNew($attribute, $params) {
/**
* Vérifie le mot de passe de l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyPasswordNew($attribute, $params)
{
if (strlen($this->password_new) < 6) { if (strlen($this->password_new) < 6) {
$this->addError($attribute, 'Votre mot de passe doit comporter au moins 6 caractères.'); $this->addError($attribute, 'Votre mot de passe doit comporter au moins 6 caractères.');
} }
} }


public function verifyPasswordNewConfirm($attribute, $params) {
/**
* Vérifie la confirmation de mot de passe de l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyPasswordNewConfirm($attribute, $params)
{
if ($this->password_new != $this->password_new_confirm) { if ($this->password_new != $this->password_new_confirm) {
$this->addError($attribute, 'Les deux mots de passe doivent être identiques'); $this->addError($attribute, 'Les deux mots de passe doivent être identiques');
} }
} }


public function verifyEmail($attribute, $params) {
/**
* Vérifie l'email de l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyEmail($attribute, $params)
{
$user = User::find()->where("email LIKE :email AND id != :id")->params(array(':email' => '%' . $this->email . '%', ':id' => $this->id))->one(); $user = User::find()->where("email LIKE :email AND id != :id")->params(array(':email' => '%' . $this->email . '%', ':id' => $this->id))->one();


if ($user) if ($user)
$this->addError($attribute, 'Cette adresse email est déjà utilisée par un autre utilisateur '); $this->addError($attribute, 'Cette adresse email est déjà utilisée par un autre utilisateur ');
} }


public function getUserEtablissement() {
/*
* Relations
*/
public function getUserEtablissement()
{
return $this->hasMany(UserEtablissement::className(), ['id_user' => 'id']); return $this->hasMany(UserEtablissement::className(), ['id_user' => 'id']);
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public static function findIdentity($id) {
public static function findIdentity($id)
{
return static::findOne(['id' => $id/* , 'status' => self::STATUS_ACTIVE */]); return static::findOne(['id' => $id/* , 'status' => self::STATUS_ACTIVE */]);
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public static function findIdentityByAccessToken($token, $type = null) {
public static function findIdentityByAccessToken($token, $type = null)
{
throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.'); throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
} }


* @param string $username * @param string $username
* @return static|null * @return static|null
*/ */
public static function findByUsername($username) {
return static::findOne(['username' => $username/* , 'status' => self::STATUS_ACTIVE */]);
public static function findByUsername($username)
{
return static::findOne(['username' => $username]);
} }


public static function findByEmail($email) {
return static::findOne(['email' => $email /* , 'status' => self::STATUS_ACTIVE */]);
/**
* Recherche un utilisateur via son adresse email.
*
* @param string $email
* @return User
*/
public static function findByEmail($email)
{
return static::findOne(['email' => $email]);
} }


/** /**
* @param string $token password reset token * @param string $token password reset token
* @return static|null * @return static|null
*/ */
public static function findByPasswordResetToken($token) {
public static function findByPasswordResetToken($token)
{
if (!static::isPasswordResetTokenValid($token)) { if (!static::isPasswordResetTokenValid($token)) {
return null; return null;
} }
]); ]);
} }


public static function findBy($params = []) {
/**
* Recherche des utilisateurs suivant les paramètres : id_etablissement,
* inactifs, id_point_vente, nom, prenom, email, telephone.
*
* @param array $params
* @return Query
*/
public static function findBy($params = [])
{
if (!isset($params['id_etablissement'])) if (!isset($params['id_etablissement']))
$params['id_etablissement'] = Yii::$app->user->identity->id_etablissement; $params['id_etablissement'] = Yii::$app->user->identity->id_etablissement;
$query = (new \yii\db\Query())
$query = (new Query())
->select(['user.id AS user_id', 'user.prenom', 'user.nom', 'user.telephone', 'user.email', 'user.created_at', 'user.date_derniere_connexion', 'user_etablissement.*']) ->select(['user.id AS user_id', 'user.prenom', 'user.nom', 'user.telephone', 'user.email', 'user.created_at', 'user.date_derniere_connexion', 'user_etablissement.*'])
->from('user'); ->from('user');
->groupBy('user.id'); ->groupBy('user.id');
} }
if (isset($params['nom']))
if (isset($params['nom'])) {
$query->andFilterWhere(['like', 'nom', $params['nom']]); $query->andFilterWhere(['like', 'nom', $params['nom']]);
if (isset($params['prenom']))
}
if (isset($params['prenom'])) {
$query->andFilterWhere(['like', 'prenom', $params['prenom']]); $query->andFilterWhere(['like', 'prenom', $params['prenom']]);
if (isset($params['email']))
}
if (isset($params['email'])) {
$query->andFilterWhere(['like', 'email', $params['email']]); $query->andFilterWhere(['like', 'email', $params['email']]);
if (isset($params['telephone']))
}
if (isset($params['telephone'])) {
$query->andFilterWhere(['like', 'telephone', $params['telephone']]); $query->andFilterWhere(['like', 'telephone', $params['telephone']]);

}
return $query; return $query;
} }


* @param string $token password reset token * @param string $token password reset token
* @return boolean * @return boolean
*/ */
public static function isPasswordResetTokenValid($token) {
public static function isPasswordResetTokenValid($token)
{
if (empty($token)) { if (empty($token)) {
return false; return false;
} }
/** /**
* @inheritdoc * @inheritdoc
*/ */
public function getId() {
public function getId()
{
return $this->getPrimaryKey(); return $this->getPrimaryKey();
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public function getAuthKey() {
public function getAuthKey()
{
return $this->auth_key; return $this->auth_key;
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public function validateAuthKey($authKey) {
public function validateAuthKey($authKey)
{
return $this->getAuthKey() === $authKey; return $this->getAuthKey() === $authKey;
} }


* @param string $password password to validate * @param string $password password to validate
* @return boolean if password provided is valid for current user * @return boolean if password provided is valid for current user
*/ */
public function validatePassword($password) {
public function validatePassword($password)
{
return Yii::$app->security->validatePassword($password, $this->password_hash); return Yii::$app->security->validatePassword($password, $this->password_hash);
} }


* *
* @param string $password * @param string $password
*/ */
public function setPassword($password) {
public function setPassword($password)
{
$this->password_hash = Yii::$app->security->generatePasswordHash($password); $this->password_hash = Yii::$app->security->generatePasswordHash($password);
} }


/** /**
* Generates "remember me" authentication key * Generates "remember me" authentication key
*/ */
public function generateAuthKey() {
public function generateAuthKey()
{
$this->auth_key = Yii::$app->security->generateRandomString(); $this->auth_key = Yii::$app->security->generateRandomString();
} }


/** /**
* Generates new password reset token * Generates new password reset token
*/ */
public function generatePasswordResetToken() {
public function generatePasswordResetToken()
{
$this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time(); $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
} }


/** /**
* Removes password reset token * Removes password reset token
*/ */
public function removePasswordResetToken() {
public function removePasswordResetToken()
{
$this->password_reset_token = null; $this->password_reset_token = null;
} }


public function attributeLabels() {
public function attributeLabels()
{
return [ return [
'id' => 'ID', 'id' => 'ID',
'username' => 'Identifiant', 'username' => 'Identifiant',
]; ];
} }


public function isBoulanger() {
/**
* Retourne si l'utilisateur est un boulanger ou non.
*
* @return boolean
*/
public function isBoulanger()
{
return ($this->status == User::STATUS_ADMIN || $this->status == User::STATUS_BOULANGER) && $this->id_etablissement; return ($this->status == User::STATUS_ADMIN || $this->status == User::STATUS_BOULANGER) && $this->id_etablissement;
} }


public function getNomMagasin() {
/**
* Retourne le nom du producteur.
*
* @return string
*/
public function getNomMagasin()
{
$etablissement = Etablissement::findOne($this->id_etablissement); $etablissement = Etablissement::findOne($this->id_etablissement);
return $etablissement->nom; return $etablissement->nom;
} }


public function getEtablissementsFavoris() {
/**
* Retourne les établissements liés à l'utilisateur.
*
* @return array
*/
public function getEtablissementsFavoris()
{
$etabs = (new \yii\db\Query()) $etabs = (new \yii\db\Query())
->select('*') ->select('*')
->from(['user_etablissement', 'etablissement']) ->from(['user_etablissement', 'etablissement'])
return $etabs; return $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;
}
}
}

public function getCredit($id_etablissement) {
/**
* Retourne le crédit de l'utilisateur pour un producteur donné.
*
* @param integer $id_etablissement
* @return float
*/
public function getCredit($id_etablissement)
{
$user_etablissement = UserEtablissement::find() $user_etablissement = UserEtablissement::find()
->where([
'id_user' => $this->id,
'id_etablissement' => $id_etablissement
])
->one();
->where([
'id_user' => $this->id,
'id_etablissement' => $id_etablissement
])
->one();


if ($user_etablissement) { if ($user_etablissement) {
return $user_etablissement->credit; return $user_etablissement->credit;
return 0; return 0;
} }


public function updateDerniereConnexion() {
/**
* Met à jour la date de dernière connexion de l'utilisateur.
*/
public function updateDerniereConnexion()
{
$this->date_derniere_connexion = date('Y-m-d H:i:s'); $this->date_derniere_connexion = date('Y-m-d H:i:s');
$this->save(); $this->save();
} }
public function sendMailWelcome($password) {
/**
* Envoie un email de bienvenue à l'utilisateur lors de son inscription
* via le backend du site.
*
* @param string $password
*/
public function sendMailWelcome($password)
{
if (strlen($this->email)) { if (strlen($this->email)) {
$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement); $etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement);
Yii::$app->mailer->compose(); Yii::$app->mailer->compose();

+ 8
- 4
common/models/UserEtablissement.php View File

* @property boolean $actif * @property boolean $actif
* @property boolean $favoris * @property boolean $favoris
*/ */
class UserEtablissement extends \yii\db\ActiveRecord {
class UserEtablissement extends \yii\db\ActiveRecord
{


/** /**
* @inheritdoc * @inheritdoc
*/ */
public static function tableName() {
public static function tableName()
{
return 'user_etablissement'; return 'user_etablissement';
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public function rules() {
public function rules()
{
return [ return [
[['id_user', 'id_etablissement'], 'required'], [['id_user', 'id_etablissement'], 'required'],
[['id_user', 'id_etablissement'], 'integer'], [['id_user', 'id_etablissement'], 'integer'],
/** /**
* @inheritdoc * @inheritdoc
*/ */
public function attributeLabels() {
public function attributeLabels()
{
return [ return [
'id_user' => 'Id User', 'id_user' => 'Id User',
'id_etablissement' => 'Id Etablissement', 'id_etablissement' => 'Id Etablissement',

Loading…
Cancel
Save