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.

125 lines
3.5KB

  1. <?php
  2. namespace common\models;
  3. use Yii;
  4. /**
  5. * This is the model class for table "produit".
  6. *
  7. * @property integer $id
  8. * @property string $nom
  9. * @property string $description
  10. * @property integer $actif
  11. * @property string $illustration
  12. * @property string $photo
  13. * @property string $saison
  14. * @property double $prix
  15. * @property double $poids
  16. * @property string $recette
  17. */
  18. class Produit extends \yii\db\ActiveRecord {
  19. var $total = 0;
  20. /**
  21. * @inheritdoc
  22. */
  23. public static function tableName() {
  24. return 'produit';
  25. }
  26. /**
  27. * @inheritdoc
  28. */
  29. public function rules() {
  30. return [
  31. [['nom', 'id_etablissement'], 'required'],
  32. [['actif', 'order', 'quantite_max', 'id_etablissement'], 'integer'],
  33. [['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche', 'epuise'], 'boolean'],
  34. [['prix', 'poids'], 'number'],
  35. [['illustration', 'photo'], 'file'],
  36. [['nom', 'description', 'illustration', 'photo', 'saison', 'diminutif'], 'string', 'max' => 255],
  37. [['recette'], 'string', 'max' => 1000],
  38. ];
  39. }
  40. /**
  41. * @inheritdoc
  42. */
  43. public function attributeLabels() {
  44. return [
  45. 'id' => 'ID',
  46. 'nom' => 'Nom',
  47. 'description' => 'Description',
  48. 'actif' => 'Actif',
  49. 'illustration' => 'Illustration',
  50. 'photo' => 'Photo',
  51. 'saison' => 'Saison',
  52. 'prix' => 'Prix',
  53. 'poids' => 'Poids (g)',
  54. 'recette' => 'Recette',
  55. 'lundi' => 'Lundi',
  56. 'mardi' => 'Mardi',
  57. 'mercredi' => 'Mercredi',
  58. 'jeudi' => 'Jeudi',
  59. 'vendredi' => 'Vendredi',
  60. 'samedi' => 'Samedi',
  61. 'dimanche' => 'Dimanche',
  62. 'order' => 'Ordre',
  63. 'quantite_max' => 'Quantité max par défaut',
  64. 'epuise' => 'Épuisé',
  65. ];
  66. }
  67. public function getDescription() {
  68. $description = $this->description;
  69. if (isset($this->poids) && is_numeric($this->poids) && $this->poids > 0) {
  70. if ($this->poids >= 1000) {
  71. $description .= ' (' . ($this->poids / 1000) . 'kg)';
  72. } else {
  73. $description .= ' (' . $this->poids . 'g)';
  74. }
  75. }
  76. return $description;
  77. }
  78. public function getLibelleAdmin() {
  79. return $this->nom;
  80. }
  81. public function save($runValidation = true, $attributeNames = NULL) {
  82. $this->id_etablissement = Yii::$app->user->identity->id_etablissement;
  83. return parent::save($runValidation, $attributeNames);
  84. }
  85. public function getAll() {
  86. return Produit::find()
  87. ->where([
  88. 'id_etablissement' => Yii::$app->user->identity->id_etablissement,
  89. ])
  90. ->orderBy('order ASC')
  91. ->all();
  92. }
  93. public function getByProduction($id_production) {
  94. return Produit::find()
  95. ->leftJoin('production_produit', 'produit.id = production_produit.id_produit')
  96. ->where([
  97. 'id_etablissement' => Yii::$app->user->identity->id_etablissement,
  98. 'production_produit.id_production' => $id_production
  99. ])
  100. ->orderBy('production_produit.actif DESC, produit.order ASC')
  101. ->all();
  102. }
  103. public static function count() {
  104. return Produit::find()
  105. ->where([
  106. 'id_etablissement' => Yii::$app->user->identity->id_etablissement
  107. ])
  108. ->count();
  109. }
  110. }