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.

128 line
4.2KB

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