Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

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