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 yii\base\Model;
  5. use common\models\CommandeAuto ;
  6. use common\models\CommandeAutoProduit ;
  7. /**
  8. * Login form
  9. */
  10. class CommandeAutoForm extends Model
  11. {
  12. public $id ;
  13. public $id_user ;
  14. public $id_etablissement ;
  15. public $id_point_vente ;
  16. public $date_debut;
  17. public $date_fin ;
  18. public $lundi ;
  19. public $mardi ;
  20. public $mercredi ;
  21. public $jeudi ;
  22. public $vendredi ;
  23. public $samedi ;
  24. public $dimanche ;
  25. public $periodicite_semaine ;
  26. public $produits ;
  27. /**
  28. * @inheritdoc
  29. */
  30. public function rules()
  31. {
  32. return [
  33. [['id_user', 'id_etablissement', 'periodicite_semaine', 'id_point_vente'], 'integer'],
  34. [['date_debut', 'date_fin'], 'date', 'format' => 'php:d/m/Y'],
  35. [['lundi','mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'], 'boolean'],
  36. [['id_user','id_point_vente', 'id_etablissement', 'date_debut'],'required', 'message' => 'Champs obligatoire'],
  37. ['produits' , 'safe'],
  38. ['produits', function($attribute, $params) {
  39. $produits = $this->produits ;
  40. $quantite = 0 ;
  41. if(count($produits))
  42. {
  43. foreach($produits as $name_input => $quantite_produit) {
  44. if($quantite_produit)
  45. $quantite += $quantite_produit ;
  46. }
  47. }
  48. if(!$quantite)
  49. {
  50. $this->addError($attribute, 'Vous devez saisir au moins un produit');
  51. }
  52. }]
  53. ];
  54. }
  55. public function attributeLabels()
  56. {
  57. return [
  58. 'id' => 'ID',
  59. 'id_user' => 'Utilisateur',
  60. 'id_etablissement' => 'ID Etablissement',
  61. 'id_point_vente' => 'Point de vente',
  62. 'date_debut' => 'Date de début',
  63. 'date_fin' => 'Date de fin',
  64. 'lundi' => 'Lundi',
  65. 'mardi' => 'Mardi',
  66. 'mercredi' => 'Mercredi',
  67. 'jeudi' => 'Jeudi',
  68. 'vendredi' => 'Vendredi',
  69. 'samedi' => 'Samedi',
  70. 'dimanche' => 'Dimanche',
  71. 'periodicite_semaine' => 'Périodicité (semaines)',
  72. ];
  73. }
  74. public function save()
  75. {
  76. if($this->id)
  77. {
  78. $commandeauto = CommandeAuto::findOne($this->id) ;
  79. }
  80. else {
  81. $commandeauto = new CommandeAuto ;
  82. }
  83. if($commandeauto)
  84. {
  85. $commandeauto->id_user = $this->id_user ;
  86. $commandeauto->id_etablissement = $this->id_etablissement ;
  87. $commandeauto->id_point_vente = $this->id_point_vente ;
  88. $commandeauto->date_debut = date('Y-m-d',strtotime(str_replace('/','-',$this->date_debut))) ;
  89. if(strlen($this->date_fin))
  90. {
  91. $commandeauto->date_fin = date('Y-m-d',strtotime(str_replace('/','-',$this->date_fin))) ;
  92. }
  93. $commandeauto->lundi = $this->lundi ;
  94. $commandeauto->mardi = $this->mardi ;
  95. $commandeauto->mercredi = $this->mercredi ;
  96. $commandeauto->jeudi = $this->jeudi ;
  97. $commandeauto->vendredi = $this->vendredi ;
  98. $commandeauto->samedi = $this->samedi ;
  99. $commandeauto->dimanche = $this->dimanche ;
  100. $commandeauto->periodicite_semaine = $this->periodicite_semaine ;
  101. $commandeauto->save() ;
  102. // produits
  103. if($this->id)
  104. {
  105. CommandeAutoProduit::deleteAll(['id_commande_auto' => $this->id]) ;
  106. }
  107. foreach($this->produits as $name_input => $quantite)
  108. {
  109. if($quantite)
  110. {
  111. $id_produit = str_replace('produit_', '', $name_input) ;
  112. $commandeauto_produit = new CommandeAutoProduit ;
  113. $commandeauto_produit->id_commande_auto = $commandeauto->id ;
  114. $commandeauto_produit->id_produit = $id_produit ;
  115. $commandeauto_produit->quantite = $quantite ;
  116. $commandeauto_produit->save() ;
  117. }
  118. }
  119. }
  120. return true ;
  121. }
  122. }