You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
4.3KB

  1. <?php
  2. namespace common\models;
  3. use Yii;
  4. use common\helpers\Departements ;
  5. use yii\helpers\Html ;
  6. /**
  7. * This is the model class for table "etablissement".
  8. *
  9. * @property integer $id
  10. * @property string $nom
  11. * @property string $siret
  12. * @property string $logo
  13. * @property string $photo
  14. * @property string $description
  15. * @property string $code_postal
  16. * @property string $ville
  17. */
  18. class Etablissement extends \yii\db\ActiveRecord
  19. {
  20. const PAIEMENT_OK = 'ok' ;
  21. const PAIEMENT_ESSAI = 'essai' ;
  22. const PAIEMENT_ESSAI_TERMINE = 'essai-terminee' ;
  23. const PAIEMENT_RETARD = 'retard-paiement' ;
  24. /**
  25. * @inheritdoc
  26. */
  27. public static function tableName()
  28. {
  29. return 'etablissement';
  30. }
  31. /**
  32. * @inheritdoc
  33. */
  34. public function rules()
  35. {
  36. return [
  37. [['nom', 'siret', 'heure_limite_commande','delai_commande'], 'required'],
  38. [['heure_limite_commande','delai_commande'],'integer'],
  39. ['heure_limite_commande','in', 'range' => [18, 19, 20, 21, 22, 23, 24]],
  40. ['delai_commande','in', 'range' => [1,2,3,4,5,6,7]],
  41. ['code', function($attribute, $params)
  42. {
  43. $code = $this->$attribute ;
  44. $etablissement = Etablissement::findOne(['code' => $code]) ;
  45. if($etablissement && $etablissement->id != $this->id)
  46. {
  47. $this->addError($attribute, 'Ce code est déjà utilisé par une autre boulangerie.');
  48. }
  49. }],
  50. [['description'], 'string'],
  51. [['nom', 'siret', 'logo', 'photo', 'code_postal', 'ville','code'], 'string', 'max' => 255],
  52. ];
  53. }
  54. /**
  55. * @inheritdoc
  56. */
  57. public function attributeLabels()
  58. {
  59. return [
  60. 'id' => 'ID',
  61. 'nom' => 'Nom',
  62. 'siret' => 'Siret',
  63. 'logo' => 'Logo',
  64. 'photo' => 'Photo',
  65. 'description' => 'Description',
  66. 'code_postal' => 'Code postal',
  67. 'ville' => 'Ville',
  68. 'code' => 'Code',
  69. 'heure_limite_commande' => 'Heure limite de commande',
  70. 'delai_commande' => 'Délai de commande'
  71. ];
  72. }
  73. public static function getEtablissementsPopulateDropdown()
  74. {
  75. $etablissements_dispos = Etablissement::find()
  76. ->orderby('code_postal, ville ASC')
  77. ->all() ;
  78. $departements = Departements::get() ;
  79. $data_etablissements_dispos = [] ;
  80. $options_etablissements_dispos = [] ;
  81. foreach($etablissements_dispos as $e)
  82. {
  83. if($e->etatPaiement() == self::PAIEMENT_OK || $e->etatPaiement() == self::PAIEMENT_ESSAI)
  84. {
  85. if(!key_exists('d'. substr($e->code_postal, 0, 2), $data_etablissements_dispos))
  86. {
  87. $data_etablissements_dispos['d'. substr($e->code_postal, 0, 2)] = '<strong>'.$departements[substr($e->code_postal, 0, 2)].'</strong>' ;
  88. $options_etablissements_dispos['d'. substr($e->code_postal, 0, 2)] = ['disabled' => true] ;
  89. }
  90. $data_etablissements_dispos[$e->id] = '<span class="glyphicon glyphicon-lock"></span> '.Html::encode($e->nom).' - '.Html::encode($e->code_postal).' '.Html::encode($e->ville).' <span class="glyphicon glyphicon-lock"></span>' ;
  91. if(strlen($e->code))
  92. $options_etablissements_dispos[$e->id] = ['class' => 'lock'] ;
  93. }
  94. }
  95. return ['data' => $data_etablissements_dispos, 'options' => $options_etablissements_dispos] ;
  96. }
  97. public function etatPaiement()
  98. {
  99. $date_limite = strtotime($this->date_creation) + 30*24*60*60 ;
  100. $date = time() ;
  101. $date_paiement = strtotime($this->date_paiement) ;
  102. if($date < $date_paiement + 30*24*60*60 || $this->gratuit)
  103. {
  104. return 'ok' ;
  105. }
  106. else {
  107. if($date < $date_limite)
  108. {
  109. return 'essai' ;
  110. }
  111. else {
  112. if(!$this->date_paiement)
  113. return 'essai-terminee' ;
  114. else
  115. return 'retard-paiement' ;
  116. }
  117. }
  118. }
  119. }