<?php | |||||
/** | |||||
Copyright La boîte à pain (2018) | |||||
contact@laboiteapain.net | |||||
Ce logiciel est un programme informatique servant à aider les producteurs | |||||
à distribuer leur production en circuits courts. | |||||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
sur le site "http://www.cecill.info". | |||||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
de modification et de redistribution accordés par cette licence, il n'est | |||||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
titulaire des droits patrimoniaux et les concédants successifs. | |||||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
associés au chargement, à l'utilisation, à la modification et/ou au | |||||
développement et à la reproduction du logiciel par l'utilisateur étant | |||||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
avertis possédant des connaissances informatiques approfondies. Les | |||||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
termes. | |||||
*/ | |||||
namespace common\models; | |||||
use Yii; | |||||
use yii\base\Model; | |||||
use common\models\CommandeAuto; | |||||
use common\models\CommandeAutoProduit; | |||||
/** | |||||
* Login form | |||||
*/ | |||||
class CommandeAutoForm extends Model | |||||
{ | |||||
public $id; | |||||
public $id_user; | |||||
public $username; | |||||
public $id_etablissement; | |||||
public $id_point_vente; | |||||
public $date_debut; | |||||
public $date_fin; | |||||
public $lundi; | |||||
public $mardi; | |||||
public $mercredi; | |||||
public $jeudi; | |||||
public $vendredi; | |||||
public $samedi; | |||||
public $dimanche; | |||||
public $periodicite_semaine; | |||||
public $produits; | |||||
public $paiement_automatique; | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function rules() | |||||
{ | |||||
return [ | |||||
[['id_etablissement', 'periodicite_semaine', 'id_point_vente'], 'integer'], | |||||
[['date_debut', 'date_fin'], 'date', 'format' => 'php:d/m/Y'], | |||||
[['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche', 'paiement_automatique'], 'boolean'], | |||||
[['id_point_vente', 'id_etablissement', 'date_debut'], 'required', 'message' => 'Champs obligatoire'], | |||||
[['produits', 'id_user', 'username'], 'safe'], | |||||
['id_user', function ($attribute, $params) { | |||||
if (!$this->id_user && !strlen($this->username)) { | |||||
$this->addError($attribute, 'Vous devez sélectionner ou saisir un utilisateur.'); | |||||
} | |||||
}, 'skipOnEmpty' => false], | |||||
]; | |||||
} | |||||
public function attributeLabels() | |||||
{ | |||||
return [ | |||||
'id' => 'ID', | |||||
'id_user' => 'Utilisateur', | |||||
'id_etablissement' => 'ID Etablissement', | |||||
'id_point_vente' => 'Point de vente', | |||||
'date_debut' => 'Date de début', | |||||
'date_fin' => 'Date de fin', | |||||
'lundi' => 'Lundi', | |||||
'mardi' => 'Mardi', | |||||
'mercredi' => 'Mercredi', | |||||
'jeudi' => 'Jeudi', | |||||
'vendredi' => 'Vendredi', | |||||
'samedi' => 'Samedi', | |||||
'dimanche' => 'Dimanche', | |||||
'periodicite_semaine' => 'Périodicité (semaines)', | |||||
'username' => 'Nom d\'utilisateur', | |||||
'paiement_automatique' => 'Paiement automatique' | |||||
]; | |||||
} | |||||
/** | |||||
* Enregistre la CommandeAuto. | |||||
* | |||||
* @return boolean | |||||
*/ | |||||
public function save() | |||||
{ | |||||
if ($this->id) { | |||||
$commandeauto = CommandeAuto::findOne($this->id); | |||||
} | |||||
else { | |||||
$commandeauto = new CommandeAuto; | |||||
} | |||||
if ($commandeauto) { | |||||
$commandeauto->id_user = $this->id_user; | |||||
$commandeauto->username = $this->username; | |||||
$commandeauto->id_etablissement = $this->id_etablissement; | |||||
$commandeauto->id_point_vente = $this->id_point_vente; | |||||
$commandeauto->date_debut = date( | |||||
'Y-m-d', | |||||
strtotime(str_replace('/', '-', $this->date_debut) | |||||
)); | |||||
if (strlen($this->date_fin)) { | |||||
$commandeauto->date_fin = date( | |||||
'Y-m-d', | |||||
strtotime(str_replace('/', '-', $this->date_fin) | |||||
)); | |||||
} | |||||
$commandeauto->lundi = $this->lundi; | |||||
$commandeauto->mardi = $this->mardi; | |||||
$commandeauto->mercredi = $this->mercredi; | |||||
$commandeauto->jeudi = $this->jeudi; | |||||
$commandeauto->vendredi = $this->vendredi; | |||||
$commandeauto->samedi = $this->samedi; | |||||
$commandeauto->dimanche = $this->dimanche; | |||||
$commandeauto->periodicite_semaine = $this->periodicite_semaine; | |||||
$commandeauto->paiement_automatique = $this->paiement_automatique; | |||||
$commandeauto->save(); | |||||
// produits | |||||
if ($this->id) { | |||||
CommandeAutoProduit::deleteAll(['id_commande_auto' => $this->id]); | |||||
} | |||||
foreach ($this->produits as $name_input => $quantite) { | |||||
if ($quantite) { | |||||
$id_produit = str_replace('produit_', '', $name_input); | |||||
$commandeauto_produit = new CommandeAutoProduit; | |||||
$commandeauto_produit->id_commande_auto = $commandeauto->id; | |||||
$commandeauto_produit->id_produit = $id_produit; | |||||
$commandeauto_produit->quantite = $quantite; | |||||
$commandeauto_produit->save(); | |||||
} | |||||
} | |||||
} | |||||
return true; | |||||
} | |||||
} |
<?php | |||||
/** | |||||
Copyright La boîte à pain (2018) | |||||
contact@laboiteapain.net | |||||
Ce logiciel est un programme informatique servant à aider les producteurs | |||||
à distribuer leur production en circuits courts. | |||||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
sur le site "http://www.cecill.info". | |||||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
de modification et de redistribution accordés par cette licence, il n'est | |||||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
titulaire des droits patrimoniaux et les concédants successifs. | |||||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
associés au chargement, à l'utilisation, à la modification et/ou au | |||||
développement et à la reproduction du logiciel par l'utilisateur étant | |||||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
avertis possédant des connaissances informatiques approfondies. Les | |||||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
termes. | |||||
*/ | |||||
namespace common\models; | |||||
use Yii; | |||||
use yii\base\Model; | |||||
use common\models\Subscription; | |||||
use common\models\SubscriptionProduct; | |||||
/** | |||||
* Login form | |||||
*/ | |||||
class SubscriptionForm extends Model | |||||
{ | |||||
public $id; | |||||
public $id_user; | |||||
public $username; | |||||
public $id_producer; | |||||
public $id_point_sale; | |||||
public $date_begin; | |||||
public $date_end; | |||||
public $monday; | |||||
public $tuesday; | |||||
public $wednesday; | |||||
public $thursday; | |||||
public $friday; | |||||
public $saterday; | |||||
public $sunday; | |||||
public $week_frequency; | |||||
public $products; | |||||
public $auto_payment; | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function rules() | |||||
{ | |||||
return [ | |||||
[['id_producer', 'week_frequency', 'id_point_sale'], 'integer'], | |||||
[['date_begin', 'date_end'], 'date', 'format' => 'php:d/m/Y'], | |||||
[['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saterday', 'sunday', 'auto_payment'], 'boolean'], | |||||
[['id_point_sale', 'id_producer', 'date_begin'], 'required', 'message' => 'Champs obligatoire'], | |||||
[['products', 'id_user', 'username'], 'safe'], | |||||
['id_user', function ($attribute, $params) { | |||||
if (!$this->id_user && !strlen($this->username)) { | |||||
$this->addError($attribute, 'Vous devez sélectionner ou saisir un utilisateur.'); | |||||
} | |||||
}, 'skipOnEmpty' => false], | |||||
]; | |||||
} | |||||
public function attributeLabels() | |||||
{ | |||||
return [ | |||||
'id' => 'ID', | |||||
'id_user' => 'Utilisateur', | |||||
'id_producer' => 'Producteur', | |||||
'id_point_sale' => 'Point de vente', | |||||
'date_begin' => 'Date de début', | |||||
'date_end' => 'Date de fin', | |||||
'monday' => 'Lundi', | |||||
'tuesday' => 'Mardi', | |||||
'wednesday' => 'Mercredi', | |||||
'thursday' => 'Jeudi', | |||||
'friday' => 'Vendredi', | |||||
'saterday' => 'Samedi', | |||||
'sunday' => 'Dimanche', | |||||
'week_frequency' => 'Périodicité (semaines)', | |||||
'username' => 'Nom d\'utilisateur', | |||||
'auto_payment' => 'Paiement automatique' | |||||
]; | |||||
} | |||||
/** | |||||
* Enregistre l'abonnement. | |||||
* | |||||
* @return boolean | |||||
*/ | |||||
public function save() | |||||
{ | |||||
if ($this->id) { | |||||
$subscription = Subscription::searchOne(['id' => $this->id]) ; | |||||
} | |||||
else { | |||||
$subscription = new Subscription ; | |||||
} | |||||
if ($subscription) { | |||||
$subscription->id_user = $this->id_user; | |||||
$subscription->username = $this->username; | |||||
$subscription->id_producer = $this->id_producer; | |||||
$subscription->id_point_sale = $this->id_point_sale; | |||||
$subscription->date_begin = date( | |||||
'Y-m-d', | |||||
strtotime(str_replace('/', '-', $this->date_begin) | |||||
)); | |||||
if (strlen($this->date_end)) { | |||||
$subscription->date_end = date( | |||||
'Y-m-d', | |||||
strtotime(str_replace('/', '-', $this->date_end) | |||||
)); | |||||
} | |||||
$subscription->monday = $this->monday; | |||||
$subscription->tuesday = $this->tuesday; | |||||
$subscription->wednesday = $this->wednesday; | |||||
$subscription->thursday = $this->thursday; | |||||
$subscription->friday = $this->friday; | |||||
$subscription->saterday = $this->saterday; | |||||
$subscription->sunday = $this->sunday; | |||||
$subscription->week_frequency = $this->week_frequency; | |||||
$subscription->auto_payment = $this->auto_payment; | |||||
$subscription->save(); | |||||
// produits | |||||
if ($this->id) { | |||||
ProductSubscription::deleteAll(['id_subscription' => $this->id]); | |||||
} | |||||
foreach ($this->products as $nameInput => $quantity) { | |||||
if ($quantity) { | |||||
$idProduct = str_replace('produit_', '', $nameInput); | |||||
$subscriptionProduct = new ProductSubscription; | |||||
$subscriptionProduct->id_subscription = $subscription->id; | |||||
$subscriptionProduct->id_product = $id_product; | |||||
$subscriptionProduct->quantity = $quantity; | |||||
$subscriptionProduct->save(); | |||||
} | |||||
} | |||||
} | |||||
return true; | |||||
} | |||||
} |