<?php /** * Copyright Guillaume Bourgeois (2018) * * contact@souke.fr * * 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 backend\controllers; use backend\controllers\BackendController; use domain\Communication\AutomaticEmail\AutomaticEmail; use domain\Feature\Feature\Feature; use domain\Product\Accessory\Accessory; use yii\base\Response; use yii\db\StaleObjectException; use yii\filters\AccessControl; use yii\web\NotFoundHttpException; class AutomaticEmailController extends BackendController { public function behaviors() { return [ 'access' => [ 'class' => AccessControl::class, 'rules' => [ [ 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return $this->getUserModule()->getAuthorizationChecker() ->isGrantedAsProducer($this->getUserCurrent()) && $this->getFeatureModule()->getChecker() ->isEnabled(Feature::ALIAS_AUTOMATIC_EMAIL); } ] ], ], ]; } public function actionIndex() { return $this->render('index', [ 'dataProvider' => $this->getAutomaticEmailModule()->getRepository() ->queryAutomaticEmails()->getDataProvider(20), ]); } public function actionCreate() { $automaticEmailModule = $this->getAutomaticEmailModule(); $automaticEmailModel = $automaticEmailModule->getBuilder()->instanciateAutomaticEmail($this->getProducerCurrent()); if ($automaticEmailModel->load(\Yii::$app->request->post()) && $automaticEmailModel->validate()) { $automaticEmail = $automaticEmailModule->getManager()->createAutomaticEmail( $this->getProducerCurrent(), $automaticEmailModel->getSubject(), $automaticEmailModel->getMessage(), $automaticEmailModel->getDay(), $automaticEmailModel->getPointSale(), $automaticEmailModel->getDelayBeforeDistribution(), $automaticEmailModel->getSendingDay(), $automaticEmailModel->getSendingHour(), $automaticEmailModel->getIntegrateProductList() ); $this->setFlash('success', "Email automatique ajouté"); return $this->redirectAfterSave('automatic-email', $automaticEmail->getId()); } return $this->render('create', [ 'automaticEmail' => $automaticEmailModel ]); } public function actionUpdate(int $id) { $automaticEmail = $this->findAutomaticEmail($id); if ($automaticEmail->load(\Yii::$app->request->post()) && $automaticEmail->validate() && $automaticEmail->save()) { $this->setFlash('success', "Email automatique modifié"); return $this->redirectAfterSave('automatic-email', $automaticEmail->getId()); } return $this->render('update', [ 'automaticEmail' => $automaticEmail ]); } public function actionDelete(int $id): Response { $automaticEmail = $this->findAutomaticEmail($id); if($automaticEmail->delete()) { $this->setFlash('success', "Email automatique supprimé"); } return $this->redirect('index'); } protected function findAutomaticEmail($id): AutomaticEmail { if (($automaticEmail = $this->getAutomaticEmailModule()->getRepository()->findOneAutomaticEmailById($id)) !== null) { return $automaticEmail; } else { throw new NotFoundHttpException("L'email automatique n'a pas été trouvé."); } } }