diff --git a/composer.json b/composer.json index a4af3c6..4e66108 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,7 @@ "symfony/process": "4.4.*", "symfony/security-bundle": "4.4.*", "symfony/serializer-pack": "*", + "symfony/swiftmailer-bundle": "^3.4", "symfony/translation": "4.4.*", "symfony/twig-pack": "*", "symfony/validator": "4.4.*", diff --git a/config/bundles.php b/config/bundles.php index 1a40026..c38af0d 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -13,4 +13,5 @@ return [ Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true], Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true], + Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true], ]; diff --git a/config/packages/dev/swiftmailer.yaml b/config/packages/dev/swiftmailer.yaml new file mode 100644 index 0000000..b98158e --- /dev/null +++ b/config/packages/dev/swiftmailer.yaml @@ -0,0 +1,4 @@ +# See https://symfony.com/doc/current/email/dev_environment.html +swiftmailer: + # send all emails to a specific address + #delivery_addresses: ['me@example.com'] diff --git a/config/packages/swiftmailer.yaml b/config/packages/swiftmailer.yaml new file mode 100644 index 0000000..cae6508 --- /dev/null +++ b/config/packages/swiftmailer.yaml @@ -0,0 +1,3 @@ +swiftmailer: + url: '%env(MAILER_URL)%' + spool: { type: 'memory' } diff --git a/config/packages/test/swiftmailer.yaml b/config/packages/test/swiftmailer.yaml new file mode 100644 index 0000000..f438078 --- /dev/null +++ b/config/packages/test/swiftmailer.yaml @@ -0,0 +1,2 @@ +swiftmailer: + disable_delivery: true diff --git a/src/Controller/HygrometryApiController.php b/src/Controller/HygrometryApiController.php index 55cd0cf..7dea0ef 100644 --- a/src/Controller/HygrometryApiController.php +++ b/src/Controller/HygrometryApiController.php @@ -14,7 +14,7 @@ class HygrometryApiController extends AbstractController /** * @Route("/api/hygrometry/create", name="api_hygrometry_create", methods={"POST"}) */ - public function create(Request $request, ApiValidator $validator): Response + public function create(Request $request, ApiValidator $validator, \Swift_Mailer $mailer): Response { if ('application/json' === $request->getContentType()) { return $this->json([], 400); @@ -37,6 +37,22 @@ class HygrometryApiController extends AbstractController $manager->persist($entity); $manager->flush(); + if ($entity->getValue() >= 50) { + $message = (new \Swift_Message('[Terrarium] Alerte hygométrie')) + ->setFrom('terrarium@deblan.fr') + ->setTo(['simon@deblan.fr', 'jennifer@derago.fr']) + ->setBody( + $this->renderView( + 'alert/hygrometry.txt.twig', + [ + 'entity' => $entity, + ] + ) + ); + + $mailer->send($message); + } + return $this->json([], 201); } } diff --git a/src/Controller/TemperatureApiController.php b/src/Controller/TemperatureApiController.php index b843c62..5126065 100644 --- a/src/Controller/TemperatureApiController.php +++ b/src/Controller/TemperatureApiController.php @@ -14,7 +14,7 @@ class TemperatureApiController extends AbstractController /** * @Route("/api/temperature/create", name="api_temperature_create", methods={"POST"}) */ - public function create(Request $request, ApiValidator $validator): Response + public function create(Request $request, ApiValidator $validator, \Swift_Mailer $mailer): Response { if ('application/json' === $request->getContentType()) { return $this->json([], 400); @@ -37,6 +37,22 @@ class TemperatureApiController extends AbstractController $manager->persist($entity); $manager->flush(); + if ($entity->getValue() < 25) { + $message = (new \Swift_Message('[Terrarium] Alerte température')) + ->setFrom('terrarium@deblan.fr') + ->setTo(['simon@deblan.fr', 'jennifer@derago.fr']) + ->setBody( + $this->renderView( + 'alert/temperature.txt.twig', + [ + 'entity' => $entity, + ] + ) + ); + + $mailer->send($message); + } + return $this->json([], 201); } } diff --git a/symfony.lock b/symfony.lock index c43b36e..f9e87a5 100644 --- a/symfony.lock +++ b/symfony.lock @@ -141,6 +141,9 @@ "config/packages/sensio_framework_extra.yaml" ] }, + "swiftmailer/swiftmailer": { + "version": "v6.2.3" + }, "symfony/apache-pack": { "version": "1.0", "recipe": { @@ -424,6 +427,20 @@ "symfony/stopwatch": { "version": "v4.4.5" }, + "symfony/swiftmailer-bundle": { + "version": "2.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "2.5", + "ref": "ae4d22af30bbd484506bc1817c5a3ef72c855b93" + }, + "files": [ + "config/packages/dev/swiftmailer.yaml", + "config/packages/swiftmailer.yaml", + "config/packages/test/swiftmailer.yaml" + ] + }, "symfony/test-pack": { "version": "v1.0.6" }, diff --git a/templates/alert/hygrometry.txt.twig b/templates/alert/hygrometry.txt.twig new file mode 100644 index 0000000..bb496f5 --- /dev/null +++ b/templates/alert/hygrometry.txt.twig @@ -0,0 +1,2 @@ +Date : {{ entity.date.format('d/m/Y H:i:s') }} +Niveau hygrométrique : {{ entity.value }}% diff --git a/templates/alert/temperature.txt.twig b/templates/alert/temperature.txt.twig new file mode 100644 index 0000000..683d77d --- /dev/null +++ b/templates/alert/temperature.txt.twig @@ -0,0 +1,2 @@ +Date : {{ entity.date.format('d/m/Y H:i:s') }} +Température : {{ entity.value }}°