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.

134 lines
4.1KB

  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'], 'required'],
  38. ['heure_limite_commande','integer'],
  39. ['heure_limite_commande','in', 'range' => [18, 19, 20, 21, 22, 23, 24]],
  40. ['code', function($attribute, $params)
  41. {
  42. $code = $this->$attribute ;
  43. $etablissement = Etablissement::findOne(['code' => $code]) ;
  44. if($etablissement && $etablissement->id != $this->id)
  45. {
  46. $this->addError($attribute, 'Ce code est déjà utilisé par une autre boulangerie.');
  47. }
  48. }],
  49. [['description'], 'string'],
  50. [['nom', 'siret', 'logo', 'photo', 'code_postal', 'ville','code'], 'string', 'max' => 255],
  51. ];
  52. }
  53. /**
  54. * @inheritdoc
  55. */
  56. public function attributeLabels()
  57. {
  58. return [
  59. 'id' => 'ID',
  60. 'nom' => 'Nom',
  61. 'siret' => 'Siret',
  62. 'logo' => 'Logo',
  63. 'photo' => 'Photo',
  64. 'description' => 'Description',
  65. 'code_postal' => 'Code postal',
  66. 'ville' => 'Ville',
  67. 'code' => 'Code',
  68. 'heure_limite_commande' => 'Heure limite de commande'
  69. ];
  70. }
  71. public static function getEtablissementsPopulateDropdown()
  72. {
  73. $etablissements_dispos = Etablissement::find()
  74. ->orderby('code_postal, ville ASC')
  75. ->all() ;
  76. $departements = Departements::get() ;
  77. $data_etablissements_dispos = [] ;
  78. $options_etablissements_dispos = [] ;
  79. foreach($etablissements_dispos as $e)
  80. {
  81. if($e->etatPaiement() == self::PAIEMENT_OK || $e->etatPaiement() == self::PAIEMENT_ESSAI)
  82. {
  83. if(!key_exists('d'. substr($e->code_postal, 0, 2), $data_etablissements_dispos))
  84. {
  85. $data_etablissements_dispos['d'. substr($e->code_postal, 0, 2)] = '<strong>'.$departements[substr($e->code_postal, 0, 2)].'</strong>' ;
  86. $options_etablissements_dispos['d'. substr($e->code_postal, 0, 2)] = ['disabled' => true] ;
  87. }
  88. $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>' ;
  89. if(strlen($e->code))
  90. $options_etablissements_dispos[$e->id] = ['class' => 'lock'] ;
  91. }
  92. }
  93. return ['data' => $data_etablissements_dispos, 'options' => $options_etablissements_dispos] ;
  94. }
  95. public function etatPaiement()
  96. {
  97. $date_limite = strtotime($this->date_creation) + 30*24*60*60 ;
  98. $date = time() ;
  99. $date_paiement = strtotime($this->date_paiement) ;
  100. if($date < $date_paiement + 30*24*60*60 || $this->gratuit)
  101. {
  102. return 'ok' ;
  103. }
  104. else {
  105. if($date < $date_limite)
  106. {
  107. return 'essai' ;
  108. }
  109. else {
  110. if(!$this->date_paiement)
  111. return 'essai-terminee' ;
  112. else
  113. return 'retard-paiement' ;
  114. }
  115. }
  116. }
  117. }