]> _ Git - ccv-email.git/commitdiff
Allow messages to be sent on behalf of surgeons + other improvements. Wait #4244 @7
authorStephen Cameron <stephen@cubedesigners.com>
Wed, 28 Apr 2021 17:34:17 +0000 (19:34 +0200)
committerStephen Cameron <stephen@cubedesigners.com>
Wed, 28 Apr 2021 17:34:17 +0000 (19:34 +0200)
17 files changed:
app/Http/Controllers/EmailConsultationUnnecessaryController.php
app/Http/Controllers/EmailController.php
app/Http/Controllers/EmailDiagnosisController.php
app/Http/Controllers/EmailDossierIncompleteController.php
app/Http/Controllers/EmailMissingImageryController.php
app/Mail/CCVMailable.php [new file with mode: 0644]
app/Mail/Diagnosis.php
app/Mail/Shared.php
composer.json
composer.lock
resources/views/components/quill.blade.php
resources/views/consultation-unnecessary/message.html
resources/views/diagnosis/form.blade.php
resources/views/layouts/preview.blade.php
resources/views/missing-imagery/message.html
resources/views/shared/form.blade.php
routes/web.php

index 86f6a4d098f29e164eebe5edc1b5d6e502659388..3571bf757592326fc466aa4af67d0ff42c258837 100644 (file)
@@ -3,7 +3,6 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Mail;
 use App\Mail\Shared;
 
 class EmailConsultationUnnecessaryController extends EmailController
@@ -41,14 +40,19 @@ class EmailConsultationUnnecessaryController extends EmailController
     public function index(Request $request) {
 
         $page_title = $this->title;
+        $default_subject = $this->default_subject;
+        $surgeons = $this->surgeons;
         $editable_message = $this->getEditableMessage('views/consultation-unnecessary/message.html');
         $snippets = $this->snippets;
+        $dr = $request->get('dr');
         $name = $request->get('name');
         $email = $request->get('email');
+        $subject = $request->get('subject');
         $message = $request->get('message');
+        $enable_BCC = $request->get('enable_BCC');
         $action = $request->get('action');
 
-        if ($name && $email && $message) {
+        if ($dr && $name && $email && $message) {
 
             $message_html = $this->renderQuill($message);
 
@@ -57,24 +61,15 @@ class EmailConsultationUnnecessaryController extends EmailController
             ]);
 
             // Data used by views and mailable object
-            $data = compact('name', 'email', 'message_html');
+            $data = compact('surgeons', 'dr', 'name', 'email', 'subject', 'message_html', 'enable_BCC');
 
             if ($action === 'send') {
-
-                try {
-                    Mail::to($email)->send(new Shared($data));
-                    return redirect('/consultation-unnecessary')->with('message', 'Message envoyé avec succès !');
-
-                } catch (\Swift_TransportException $STe) {
-                    $title = "Erreur lors de l'envoi de l'e-mail";
-                    $details = $STe->getMessage();
-                    return view('error', compact('title', 'details'));
-                }
+                return $this->send($email, new Shared($data), '/consultation-unnecessary');
             }
 
             return view('shared.email', ['layout' => 'layouts.preview', 'post_data' => $request->post()] + $data);
         }
 
-        return view('shared.form', compact('page_title', 'editable_message', 'snippets'));
+        return view('shared.form', compact('page_title', 'surgeons', 'default_subject', 'editable_message', 'snippets'));
     }
 }
index 8a81b942f89a112695198f26af9e6dff640ee27e..cfa6d3c3597ed08d9add441ba404874d8c932181 100644 (file)
@@ -3,9 +3,40 @@
 namespace App\Http\Controllers;
 
 use DBlackborough\Quill;
+use Illuminate\Support\Facades\Mail;
 
 class EmailController extends Controller
 {
+    // Surgeon details used by multiple e-mail templates
+    public $surgeons = [
+        'Guilhaume GENESTE' => [
+            'e-mail' => 'dr.geneste@ccv-montpellier.fr',
+            'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-guilhaume-geneste/',
+            'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/guilhaume-geneste',
+            'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=Guilhaume%20GENESTE&when=true&doctor=5e6fa162811d5599a6c54d96',
+        ],
+        'Grégory EDGARD-ROSA' => [
+            'e-mail' => 'dr.edgard-rosa@ccv-montpellier.fr',
+            'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-gregory-edgard-rosa/',
+            'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/gregory-edgard-rosa',
+            'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=Gr%C3%A9gory%20Edgard-Rosa&when=true&doctor=5e306e4e0d359a1ab793d3e8',
+        ],
+        'Martin GRAU ORTIZ' => [
+            'e-mail' => 'dr.grauortiz@ccv-montpellier.fr',
+            'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-martin-grau-ortiz/',
+            'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/martin-grau-ortiz',
+            'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=Martin%20Grau-Ortiz&when=true&doctor=5e70cddc90de0faef245adcc',
+        ],
+        'Caroline HIRSCH' => [
+            'e-mail' => 'dr.hirsch@ccv-montpellier.fr',
+            'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-caroline-hirsh/',
+            'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/caroline-hirsch-castelnau-le-lez',
+            'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=caroline%20hirsch&when=true&doctor=5e6f7aff811d5599a69e4b61',
+        ],
+    ];
+
+    public $default_subject = 'Votre E-diagnostic - CCV Montpellier'; // Default subject (can be overridden)
+
     public function getEditableMessage($name, $convert_line_breaks = true) {
 
         $content = file_get_contents(resource_path($name));
@@ -35,4 +66,16 @@ class EmailController extends Controller
 
         return $content;
     }
+
+    public function send($to, $mailable, $redirect_to) {
+        try {
+            Mail::to($to)->send($mailable);
+            return redirect($redirect_to)->with('message', 'Message envoyé avec succès !');
+
+        } catch (\Swift_TransportException $STe) {
+            $title = "Erreur lors de l'envoi de l'e-mail";
+            $details = $STe->getMessage();
+            return view('error', compact('title', 'details'));
+        }
+    }
 }
index 3e8c0dfddd316cfb9b866182b8becb2366344b23..87605491cbd5b6c49f6d3fa81117c3a1b0538fcd 100644 (file)
@@ -3,40 +3,15 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Mail;
 use App\Mail\Diagnosis;
 
 class EmailDiagnosisController extends EmailController
 {
-    public $surgeons;
     public $pathologies;
     public $snippets;
 
     public function __construct() {
 
-        $this->surgeons = [
-            'Guilhaume GENESTE' => [
-                'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-guilhaume-geneste/',
-                'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/guilhaume-geneste',
-                'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=Guilhaume%20GENESTE&when=true&doctor=5e6fa162811d5599a6c54d96',
-            ],
-            'Grégory EDGARD-ROSA' => [
-                'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-gregory-edgard-rosa/',
-                'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/gregory-edgard-rosa',
-                'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=Gr%C3%A9gory%20Edgard-Rosa&when=true&doctor=5e306e4e0d359a1ab793d3e8',
-            ],
-            'Martin GRAU ORTIZ' => [
-                'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-martin-grau-ortiz/',
-                'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/martin-grau-ortiz',
-                'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=Martin%20Grau-Ortiz&when=true&doctor=5e70cddc90de0faef245adcc',
-            ],
-            'Caroline HIRSCH' => [
-                'profile' => 'https://www.ccv-montpellier.fr/la-clinique/lequipe/dr-caroline-hirsh/',
-                'bookings' => 'https://www.doctolib.fr/chirurgien-orthopediste/castelnau-le-lez/caroline-hirsch-castelnau-le-lez',
-                'e-consultation' => 'https://www.consulib.com/home?showSearch=true&specialties_doctor=caroline%20hirsch&when=true&doctor=5e6f7aff811d5599a69e4b61',
-            ],
-        ];
-
         $this->pathologies = [
             'Canal lombaire étroit' => 'https://www.ccv-montpellier.fr/wp-content/uploads/2020/04/Canal_lombaire_etroit.pdf',
             'Discopathie lombaire' => 'https://www.ccv-montpellier.fr/wp-content/uploads/2020/04/Discopathie_lombaire.pdf',
@@ -67,6 +42,7 @@ class EmailDiagnosisController extends EmailController
 
     public function index(Request $request) {
 
+        $default_subject = $this->default_subject;
         $surgeons = $this->surgeons;
         $pathologies = $this->pathologies;
         $editable_message = $this->getEditableMessage('views/diagnosis/message.html');
@@ -75,7 +51,9 @@ class EmailDiagnosisController extends EmailController
         $pathology = $request->get('pathology');
         $name = $request->get('name');
         $email = $request->get('email');
+        $subject = $request->get('subject');
         $message = $request->get('message');
+        $enable_BCC = $request->get('enable_BCC');
         $action = $request->get('action');
 
         if ($dr && $pathology && $name && $email && $message) {
@@ -85,30 +63,21 @@ class EmailDiagnosisController extends EmailController
             $message_html = $this->replaceTokens($message_html, [
                 'NOM' => $name,
                 'DOCTEUR' => $dr,
-                'DOCTEUR_LIEN' => $this->surgeons[$dr]['profile'],
+                'DOCTEUR_LIEN' => $surgeons[$dr]['profile'],
                 'PATHOLOGIE' => $pathology,
-                'PATHOLOGIE_LIEN' => $this->pathologies[$pathology],
+                'PATHOLOGIE_LIEN' => $pathologies[$pathology],
             ]);
 
             // Data used by views and mailable object
-            $data = compact('dr', 'pathology', 'name', 'email', 'message_html', 'surgeons', 'pathologies');
+            $data = compact('dr', 'pathology', 'name', 'email', 'subject', 'message_html', 'enable_BCC', 'surgeons', 'pathologies');
 
             if ($action === 'send') {
-
-                try {
-                    Mail::to($email)->send(new Diagnosis($data));
-                    return redirect('/diagnosis')->with('message', 'Message envoyé avec succès !');
-
-                } catch (\Swift_TransportException $STe) {
-                    $title = "Erreur lors de l'envoi de l'e-mail";
-                    $details = $STe->getMessage();
-                    return view('error', compact('title', 'details'));
-                }
+                return $this->send($email, new Diagnosis($data), '/diagnosis');
             }
 
             return view('diagnosis.email', ['layout' => 'layouts.preview', 'post_data' => $request->post()] + $data);
         }
 
-        return view('diagnosis.form', compact('surgeons', 'pathologies', 'editable_message', 'snippets'));
+        return view('diagnosis.form', compact('surgeons', 'pathologies', 'default_subject', 'editable_message', 'snippets'));
     }
 }
index 65ac8d1db682406fc945fa55d1f743edfc459337..d520a18a18e01348edb32656c406bf608855e462 100644 (file)
@@ -3,7 +3,6 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Mail;
 use App\Mail\Shared;
 
 class EmailDossierIncompleteController extends EmailController
@@ -26,14 +25,19 @@ class EmailDossierIncompleteController extends EmailController
     public function index(Request $request) {
 
         $page_title = $this->title;
+        $default_subject = $this->default_subject;
+        $surgeons = $this->surgeons;
         $editable_message = $this->getEditableMessage('views/dossier-incomplete/message.html', false);
         $snippets = $this->snippets;
+        $dr = $request->get('dr');
         $name = $request->get('name');
         $email = $request->get('email');
+        $subject = $request->get('subject');
         $message = $request->get('message');
+        $enable_BCC = $request->get('enable_BCC');
         $action = $request->get('action');
 
-        if ($name && $email && $message) {
+        if ($dr && $name && $email && $message) {
 
             $message_html = $this->renderQuill($message);
 
@@ -42,24 +46,15 @@ class EmailDossierIncompleteController extends EmailController
             ]);
 
             // Data used by views and mailable object
-            $data = compact('name', 'email', 'message_html');
+            $data = compact('surgeons', 'dr', 'name', 'email', 'subject', 'message_html', 'enable_BCC');
 
             if ($action === 'send') {
-
-                try {
-                    Mail::to($email)->send(new Shared($data));
-                    return redirect('/dossier-incomplete')->with('message', 'Message envoyé avec succès !');
-
-                } catch (\Swift_TransportException $STe) {
-                    $title = "Erreur lors de l'envoi de l'e-mail";
-                    $details = $STe->getMessage();
-                    return view('error', compact('title', 'details'));
-                }
+                return $this->send($email, new Shared($data), '/dossier-incomplete');
             }
 
             return view('shared.email', ['layout' => 'layouts.preview', 'post_data' => $request->post()] + $data);
         }
 
-        return view('shared.form', compact('page_title', 'editable_message', 'snippets'));
+        return view('shared.form', compact('page_title', 'surgeons', 'default_subject', 'editable_message', 'snippets'));
     }
 }
index 73d1cef86c5f7c5556ff3aab287f1ab9ccab4ef8..4728c901606900055e079c18e39871d75a53ff53 100644 (file)
@@ -3,7 +3,6 @@
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Mail;
 use App\Mail\Shared;
 
 class EmailMissingImageryController extends EmailController
@@ -40,14 +39,19 @@ class EmailMissingImageryController extends EmailController
     public function index(Request $request) {
 
         $page_title = $this->title;
+        $default_subject = $this->default_subject;
+        $surgeons = $this->surgeons;
         $editable_message = $this->getEditableMessage('views/missing-imagery/message.html');
         $snippets = $this->snippets;
+        $dr = $request->get('dr');
         $name = $request->get('name');
         $email = $request->get('email');
+        $subject = $request->get('subject');
         $message = $request->get('message');
+        $enable_BCC = $request->get('enable_BCC');
         $action = $request->get('action');
 
-        if ($name && $email && $message) {
+        if ($dr && $name && $email && $message) {
 
             $message_html = $this->renderQuill($message);
 
@@ -56,24 +60,15 @@ class EmailMissingImageryController extends EmailController
             ]);
 
             // Data used by views and mailable object
-            $data = compact('name', 'email', 'message_html');
+            $data = compact('surgeons', 'dr', 'name', 'email', 'subject', 'message_html', 'enable_BCC');
 
             if ($action === 'send') {
-
-                try {
-                    Mail::to($email)->send(new Shared($data));
-                    return redirect('/missing-imagery')->with('message', 'Message envoyé avec succès !');
-
-                } catch (\Swift_TransportException $STe) {
-                    $title = "Erreur lors de l'envoi de l'e-mail";
-                    $details = $STe->getMessage();
-                    return view('error', compact('title', 'details'));
-                }
+                return $this->send($email, new Shared($data), '/missing-imagery');
             }
 
             return view('shared.email', ['layout' => 'layouts.preview', 'post_data' => $request->post()] + $data);
         }
 
-        return view('shared.form', compact('page_title', 'editable_message', 'snippets'));
+        return view('shared.form', compact('page_title', 'surgeons', 'default_subject', 'editable_message', 'snippets'));
     }
 }
diff --git a/app/Mail/CCVMailable.php b/app/Mail/CCVMailable.php
new file mode 100644 (file)
index 0000000..9cec2b1
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Mail;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+
+class CCVMailable extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    public $data;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct($data)
+    {
+        $this->data = $data;
+
+        // Set the doctor as the sender, if possible
+        if (isset($this->data['dr']) && isset($this->data['surgeons'])) {
+            $dr = $this->data['dr'];
+            $surgeons = $this->data['surgeons'];
+
+            $this->from($surgeons[$dr]['e-mail'], $dr);
+
+            // Send a BCC message to the doctor if the checkbox was selected
+            if (isset($this->data['enable_BCC']) && $this->data['enable_BCC']) {
+                $this->bcc($surgeons[$dr]['e-mail'], $dr);
+            }
+
+        }
+
+    }
+
+}
index d428bd60fa7bcb8367b644a0a9d2eb36499efc75..3b80b390e717472f6344fc3ae6c2da1c40c64876 100644 (file)
@@ -2,26 +2,8 @@
 
 namespace App\Mail;
 
-use Illuminate\Bus\Queueable;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Mail\Mailable;
-use Illuminate\Queue\SerializesModels;
-
-class Diagnosis extends Mailable
+class Diagnosis extends CCVMailable
 {
-    use Queueable, SerializesModels;
-
-    public $data;
-
-    /**
-     * Create a new message instance.
-     *
-     * @return void
-     */
-    public function __construct($data)
-    {
-        $this->data = $data;
-    }
 
     /**
      * Build the message.
@@ -30,8 +12,6 @@ class Diagnosis extends Mailable
      */
     public function build()
     {
-        $subject = 'Votre E-diagnostic - CCV Montpellier';
-
         return $this->view('diagnosis.email')
                     ->with([
                         'dr' => $this->data['dr'],
@@ -44,6 +24,6 @@ class Diagnosis extends Mailable
                         // NOTE: can't use view variable named $message because it causes an exception
                         // See: https://stackoverflow.com/a/46605365
                     ])
-                    ->subject($subject);
+                    ->subject($this->data['subject']);
     }
 }
index cbfeb8d033c632cde38340622245eab889dc9124..86bc93baec34652c8fc21db681cb60b7c50d6a71 100644 (file)
@@ -2,27 +2,8 @@
 
 namespace App\Mail;
 
-use Illuminate\Bus\Queueable;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Mail\Mailable;
-use Illuminate\Queue\SerializesModels;
-
-class Shared extends Mailable
+class Shared extends CCVMailable
 {
-    use Queueable, SerializesModels;
-
-    public $data;
-
-    /**
-     * Create a new message instance.
-     *
-     * @return void
-     */
-    public function __construct($data)
-    {
-        $this->data = $data;
-    }
-
     /**
      * Build the message.
      *
@@ -30,8 +11,6 @@ class Shared extends Mailable
      */
     public function build()
     {
-        $subject = 'Votre E-diagnostic - CCV Montpellier';
-
         return $this->view('shared.email')
                     ->with([
                         'name' => $this->data['name'],
@@ -40,6 +19,6 @@ class Shared extends Mailable
                         // NOTE: can't use view variable named $message because it causes an exception
                         // See: https://stackoverflow.com/a/46605365
                     ])
-                    ->subject($subject);
+                    ->subject($this->data['subject']);
     }
 }
index dd3f21908278f0197947c7577f7e57dd1a13e803..84be65e37e3f0fb064ac3ae01a0c8dd1dc88d233 100644 (file)
@@ -9,7 +9,7 @@
     "license": "MIT",
     "require": {
         "php": "^7.3|^8.0",
-        "deanblackborough/php-quill-renderer": "^3.18",
+        "deanblackborough/php-quill-renderer": "^4.0",
         "fideloper/proxy": "^4.4",
         "fruitcake/laravel-cors": "^2.0",
         "guzzlehttp/guzzle": "^7.0.1",
index db7fb06346f60f837049f89536805ff5b9b6b418..4dfac372dbd87f9c29dede2b36c13294e008ca72 100644 (file)
@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "84ad18c202f157faf15ff67ab59bcab6",
+    "content-hash": "9c0427e00eb0e11ceb1f27444db61ec9",
     "packages": [
         {
             "name": "asm89/stack-cors",
-            "version": "v2.0.2",
+            "version": "v2.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/asm89/stack-cors.git",
-                "reference": "8d8f88b3b3830916be94292c1fbce84433efb1aa"
+                "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/asm89/stack-cors/zipball/8d8f88b3b3830916be94292c1fbce84433efb1aa",
-                "reference": "8d8f88b3b3830916be94292c1fbce84433efb1aa",
+                "url": "https://api.github.com/repos/asm89/stack-cors/zipball/9cb795bf30988e8c96dd3c40623c48a877bc6714",
+                "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714",
                 "shasum": ""
             },
             "require": {
@@ -58,9 +58,9 @@
             ],
             "support": {
                 "issues": "https://github.com/asm89/stack-cors/issues",
-                "source": "https://github.com/asm89/stack-cors/tree/v2.0.2"
+                "source": "https://github.com/asm89/stack-cors/tree/v2.0.3"
             },
-            "time": "2020-10-29T16:03:21+00:00"
+            "time": "2021-03-11T06:42:03+00:00"
         },
         {
             "name": "brick/math",
         },
         {
             "name": "deanblackborough/php-quill-renderer",
-            "version": "v3.18.1",
+            "version": "v4.00.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/deanblackborough/php-quill-renderer.git",
-                "reference": "11d3c7c0105a09ca007fc51925373ef5da168a9d"
+                "reference": "bcaa78799b3c29a41eeff1469c64018c37769349"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/deanblackborough/php-quill-renderer/zipball/11d3c7c0105a09ca007fc51925373ef5da168a9d",
-                "reference": "11d3c7c0105a09ca007fc51925373ef5da168a9d",
+                "url": "https://api.github.com/repos/deanblackborough/php-quill-renderer/zipball/bcaa78799b3c29a41eeff1469c64018c37769349",
+                "reference": "bcaa78799b3c29a41eeff1469c64018c37769349",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "php": "^7.1"
+                "php": "^7.4|^8"
             },
             "require-dev": {
-                "php-coveralls/php-coveralls": "^2",
-                "phpunit/phpunit": "^7"
+                "php-coveralls/php-coveralls": "^v2.4.3",
+                "phpunit/phpunit": "^9"
             },
             "suggest": {
-                "php": "^7.2"
+                "php": "^8.0"
             },
             "type": "library",
             "autoload": {
             ],
             "support": {
                 "issues": "https://github.com/deanblackborough/php-quill-renderer/issues",
-                "source": "https://github.com/deanblackborough/php-quill-renderer/tree/v3.18.1"
-            },
-            "time": "2019-12-10T22:44:21+00:00"
-        },
-        {
-            "name": "dnoegel/php-xdg-base-dir",
-            "version": "v0.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
-                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+                "source": "https://github.com/deanblackborough/php-quill-renderer/tree/v4.00.0"
             },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
-                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "XdgBaseDir\\": "src/"
+            "funding": [
+                {
+                    "url": "https://github.com/deanblackborough",
+                    "type": "github"
                 }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
             ],
-            "description": "implementation of xdg base directory specification for php",
-            "support": {
-                "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
-                "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
-            },
-            "time": "2019-12-04T15:06:13+00:00"
+            "time": "2021-02-16T13:57:01+00:00"
         },
         {
             "name": "doctrine/inflector",
         },
         {
             "name": "fruitcake/laravel-cors",
-            "version": "v2.0.3",
+            "version": "v2.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/fruitcake/laravel-cors.git",
-                "reference": "01de0fe5f71c70d1930ee9a80385f9cc28e0f63a"
+                "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/01de0fe5f71c70d1930ee9a80385f9cc28e0f63a",
-                "reference": "01de0fe5f71c70d1930ee9a80385f9cc28e0f63a",
+                "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/a8ccedc7ca95189ead0e407c43b530dc17791d6a",
+                "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a",
                 "shasum": ""
             },
             "require": {
             },
             "require-dev": {
                 "laravel/framework": "^6|^7|^8",
-                "orchestra/testbench-dusk": "^4|^5|^6",
-                "phpunit/phpunit": "^6|^7|^8",
+                "orchestra/testbench-dusk": "^4|^5|^6|^7",
+                "phpunit/phpunit": "^6|^7|^8|^9",
                 "squizlabs/php_codesniffer": "^3.5"
             },
             "type": "library",
             ],
             "support": {
                 "issues": "https://github.com/fruitcake/laravel-cors/issues",
-                "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.3"
+                "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.4"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2020-10-22T13:57:20+00:00"
+            "time": "2021-04-26T11:24:25+00:00"
         },
         {
             "name": "graham-campbell/result-type",
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "7.2.0",
+            "version": "7.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79"
+                "reference": "7008573787b430c1c1f650e3722d9bba59967628"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79",
-                "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628",
+                "reference": "7008573787b430c1c1f650e3722d9bba59967628",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
                 "guzzlehttp/promises": "^1.4",
-                "guzzlehttp/psr7": "^1.7",
+                "guzzlehttp/psr7": "^1.7 || ^2.0",
                 "php": "^7.2.5 || ^8.0",
                 "psr/http-client": "^1.0"
             },
                 "psr/http-client-implementation": "1.0"
             },
             "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.4.1",
                 "ext-curl": "*",
                 "php-http/client-integration-tests": "^3.0",
                 "phpunit/phpunit": "^8.5.5 || ^9.3.5",
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "7.1-dev"
+                    "dev-master": "7.3-dev"
                 }
             },
             "autoload": {
             ],
             "support": {
                 "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/7.2.0"
+                "source": "https://github.com/guzzle/guzzle/tree/7.3.0"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2020-10-10T11:47:56+00:00"
+            "time": "2021-03-23T11:33:13+00:00"
         },
         {
             "name": "guzzlehttp/promises",
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.7.0",
+            "version": "1.8.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
+                "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
-                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
+                "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/guzzle/psr7/issues",
-                "source": "https://github.com/guzzle/psr7/tree/1.7.0"
+                "source": "https://github.com/guzzle/psr7/tree/1.8.2"
             },
-            "time": "2020-09-30T07:37:11+00:00"
+            "time": "2021-04-26T09:17:50+00:00"
         },
         {
             "name": "laravel/framework",
-            "version": "v8.31.0",
+            "version": "v8.39.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/framework.git",
-                "reference": "2aa5c2488d25178ebc097052c7897a0e463ddc35"
+                "reference": "0c6f9acb55c8d1621b6f42e3dd5e242cf3b17680"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/framework/zipball/2aa5c2488d25178ebc097052c7897a0e463ddc35",
-                "reference": "2aa5c2488d25178ebc097052c7897a0e463ddc35",
+                "url": "https://api.github.com/repos/laravel/framework/zipball/0c6f9acb55c8d1621b6f42e3dd5e242cf3b17680",
+                "reference": "0c6f9acb55c8d1621b6f42e3dd5e242cf3b17680",
                 "shasum": ""
             },
             "require": {
                 "issues": "https://github.com/laravel/framework/issues",
                 "source": "https://github.com/laravel/framework"
             },
-            "time": "2021-03-04T15:22:36+00:00"
+            "time": "2021-04-27T14:24:05+00:00"
         },
         {
             "name": "laravel/tinker",
         },
         {
             "name": "league/commonmark",
-            "version": "1.5.7",
+            "version": "1.5.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/thephpleague/commonmark.git",
-                "reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54"
+                "reference": "08fa59b8e4e34ea8a773d55139ae9ac0e0aecbaf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/11df9b36fd4f1d2b727a73bf14931d81373b9a54",
-                "reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54",
+                "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/08fa59b8e4e34ea8a773d55139ae9ac0e0aecbaf",
+                "reference": "08fa59b8e4e34ea8a773d55139ae9ac0e0aecbaf",
                 "shasum": ""
             },
             "require": {
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-10-31T13:49:32+00:00"
+            "time": "2021-03-28T18:51:39+00:00"
         },
         {
             "name": "league/flysystem",
         },
         {
             "name": "opis/closure",
-            "version": "3.6.1",
+            "version": "3.6.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/opis/closure.git",
-                "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5"
+                "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/opis/closure/zipball/943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
-                "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
+                "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6",
+                "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/opis/closure/issues",
-                "source": "https://github.com/opis/closure/tree/3.6.1"
+                "source": "https://github.com/opis/closure/tree/3.6.2"
             },
-            "time": "2020-11-07T02:01:34+00:00"
+            "time": "2021-04-09T13:42:10+00:00"
         },
         {
             "name": "phpoption/phpoption",
         },
         {
             "name": "psy/psysh",
-            "version": "v0.10.6",
+            "version": "v0.10.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/bobthecow/psysh.git",
-                "reference": "6f990c19f91729de8b31e639d6e204ea59f19cf3"
+                "reference": "e4573f47750dd6c92dca5aee543fa77513cbd8d3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6f990c19f91729de8b31e639d6e204ea59f19cf3",
-                "reference": "6f990c19f91729de8b31e639d6e204ea59f19cf3",
+                "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e4573f47750dd6c92dca5aee543fa77513cbd8d3",
+                "reference": "e4573f47750dd6c92dca5aee543fa77513cbd8d3",
                 "shasum": ""
             },
             "require": {
-                "dnoegel/php-xdg-base-dir": "0.1.*",
                 "ext-json": "*",
                 "ext-tokenizer": "*",
                 "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3",
             ],
             "support": {
                 "issues": "https://github.com/bobthecow/psysh/issues",
-                "source": "https://github.com/bobthecow/psysh/tree/v0.10.6"
+                "source": "https://github.com/bobthecow/psysh/tree/v0.10.8"
             },
-            "time": "2021-01-18T15:53:43+00:00"
+            "time": "2021-04-10T16:23:39+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
         },
         {
             "name": "swiftmailer/swiftmailer",
-            "version": "v6.2.6",
+            "version": "v6.2.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/swiftmailer/swiftmailer.git",
-                "reference": "d2791ff0b73247cdc2096b14f5580aba40c12bff"
+                "reference": "15f7faf8508e04471f666633addacf54c0ab5933"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/d2791ff0b73247cdc2096b14f5580aba40c12bff",
-                "reference": "d2791ff0b73247cdc2096b14f5580aba40c12bff",
+                "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/15f7faf8508e04471f666633addacf54c0ab5933",
+                "reference": "15f7faf8508e04471f666633addacf54c0ab5933",
                 "shasum": ""
             },
             "require": {
-                "egulias/email-validator": "^2.0",
+                "egulias/email-validator": "^2.0|^3.1",
                 "php": ">=7.0.0",
                 "symfony/polyfill-iconv": "^1.0",
                 "symfony/polyfill-intl-idn": "^1.10",
             ],
             "support": {
                 "issues": "https://github.com/swiftmailer/swiftmailer/issues",
-                "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.6"
+                "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.7"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-03-05T12:08:49+00:00"
+            "time": "2021-03-09T12:30:35+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "d6d0cc30d8c0fda4e7b213c20509b0159a8f4556"
+                "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/d6d0cc30d8c0fda4e7b213c20509b0159a8f4556",
-                "reference": "d6d0cc30d8c0fda4e7b213c20509b0159a8f4556",
+                "url": "https://api.github.com/repos/symfony/console/zipball/35f039df40a3b335ebf310f244cb242b3a83ac8d",
+                "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d",
                 "shasum": ""
             },
             "require": {
                 "terminal"
             ],
             "support": {
-                "source": "https://github.com/symfony/console/tree/v5.2.4"
+                "source": "https://github.com/symfony/console/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-02-23T10:08:49+00:00"
+            "time": "2021-03-28T09:42:18+00:00"
         },
         {
             "name": "symfony/css-selector",
         },
         {
             "name": "symfony/deprecation-contracts",
-            "version": "v2.2.0",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
+                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
-                "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.2-dev"
+                    "dev-main": "2.4-dev"
                 },
                 "thanks": {
                     "name": "symfony/contracts",
             "description": "A generic function and convention to trigger deprecation notices",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/master"
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-07T11:33:47+00:00"
+            "time": "2021-03-23T23:28:01+00:00"
         },
         {
             "name": "symfony/error-handler",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/error-handler.git",
-                "reference": "b547d3babcab5c31e01de59ee33e9d9c1421d7d0"
+                "reference": "bdb7fb4188da7f4211e4b88350ba0dfdad002b03"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/error-handler/zipball/b547d3babcab5c31e01de59ee33e9d9c1421d7d0",
-                "reference": "b547d3babcab5c31e01de59ee33e9d9c1421d7d0",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/bdb7fb4188da7f4211e4b88350ba0dfdad002b03",
+                "reference": "bdb7fb4188da7f4211e4b88350ba0dfdad002b03",
                 "shasum": ""
             },
             "require": {
             "description": "Provides tools to manage errors and ease debugging PHP code",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/error-handler/tree/v5.2.4"
+                "source": "https://github.com/symfony/error-handler/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-02-11T08:21:20+00:00"
+            "time": "2021-03-16T09:07:47+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
         },
         {
             "name": "symfony/event-dispatcher-contracts",
-            "version": "v2.2.0",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2"
+                "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2",
-                "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11",
+                "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.2-dev"
+                    "dev-main": "2.4-dev"
                 },
                 "thanks": {
                     "name": "symfony/contracts",
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0"
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-07T11:33:47+00:00"
+            "time": "2021-03-23T23:28:01+00:00"
         },
         {
             "name": "symfony/finder",
         },
         {
             "name": "symfony/http-client-contracts",
-            "version": "v2.3.1",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-client-contracts.git",
-                "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+                "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
-                "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4",
+                "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4",
                 "shasum": ""
             },
             "require": {
             },
             "type": "library",
             "extra": {
-                "branch-version": "2.3",
                 "branch-alias": {
-                    "dev-main": "2.3-dev"
+                    "dev-main": "2.4-dev"
                 },
                 "thanks": {
                     "name": "symfony/contracts",
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.1"
+                "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-10-14T17:08:19+00:00"
+            "time": "2021-04-11T23:07:08+00:00"
         },
         {
             "name": "symfony/http-foundation",
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "c452dbe4f385f030c3957821bf921b13815d6140"
+                "reference": "f34de4c61ca46df73857f7f36b9a3805bdd7e3b2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c452dbe4f385f030c3957821bf921b13815d6140",
-                "reference": "c452dbe4f385f030c3957821bf921b13815d6140",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f34de4c61ca46df73857f7f36b9a3805bdd7e3b2",
+                "reference": "f34de4c61ca46df73857f7f36b9a3805bdd7e3b2",
                 "shasum": ""
             },
             "require": {
             "description": "Provides a structured process for converting a Request into a Response",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/http-kernel/tree/v5.2.4"
+                "source": "https://github.com/symfony/http-kernel/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-03-04T18:05:55+00:00"
+            "time": "2021-03-29T05:16:58+00:00"
         },
         {
             "name": "symfony/mime",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "5155d2fe14ef1eb150e3bdbbc1ec1455df95e9cd"
+                "reference": "1b2092244374cbe48ae733673f2ca0818b37197b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/5155d2fe14ef1eb150e3bdbbc1ec1455df95e9cd",
-                "reference": "5155d2fe14ef1eb150e3bdbbc1ec1455df95e9cd",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/1b2092244374cbe48ae733673f2ca0818b37197b",
+                "reference": "1b2092244374cbe48ae733673f2ca0818b37197b",
                 "shasum": ""
             },
             "require": {
                 "symfony/polyfill-php80": "^1.15"
             },
             "conflict": {
+                "egulias/email-validator": "~3.0.0",
                 "phpdocumentor/reflection-docblock": "<3.2.2",
                 "phpdocumentor/type-resolver": "<1.4.0",
                 "symfony/mailer": "<4.4"
             },
             "require-dev": {
-                "egulias/email-validator": "^2.1.10",
+                "egulias/email-validator": "^2.1.10|^3.1",
                 "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
                 "symfony/dependency-injection": "^4.4|^5.0",
                 "symfony/property-access": "^4.4|^5.1",
                 "mime-type"
             ],
             "support": {
-                "source": "https://github.com/symfony/mime/tree/v5.2.4"
+                "source": "https://github.com/symfony/mime/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-02-15T18:55:04+00:00"
+            "time": "2021-03-12T13:18:39+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
         },
         {
             "name": "symfony/routing",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "cafa138128dfd6ab6be1abf6279169957b34f662"
+                "reference": "31fba555f178afd04d54fd26953501b2c3f0c6e6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/cafa138128dfd6ab6be1abf6279169957b34f662",
-                "reference": "cafa138128dfd6ab6be1abf6279169957b34f662",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/31fba555f178afd04d54fd26953501b2c3f0c6e6",
+                "reference": "31fba555f178afd04d54fd26953501b2c3f0c6e6",
                 "shasum": ""
             },
             "require": {
                 "url"
             ],
             "support": {
-                "source": "https://github.com/symfony/routing/tree/v5.2.4"
+                "source": "https://github.com/symfony/routing/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-02-22T15:48:39+00:00"
+            "time": "2021-03-14T13:53:33+00:00"
         },
         {
             "name": "symfony/service-contracts",
-            "version": "v2.2.0",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+                "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
-                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
+                "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2.5",
-                "psr/container": "^1.0"
+                "psr/container": "^1.1"
             },
             "suggest": {
                 "symfony/service-implementation": ""
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.2-dev"
+                    "dev-main": "2.4-dev"
                 },
                 "thanks": {
                     "name": "symfony/contracts",
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/service-contracts/tree/master"
+                "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-07T11:33:47+00:00"
+            "time": "2021-04-01T10:43:52+00:00"
         },
         {
             "name": "symfony/string",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/string.git",
-                "reference": "4e78d7d47061fa183639927ec40d607973699609"
+                "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/4e78d7d47061fa183639927ec40d607973699609",
-                "reference": "4e78d7d47061fa183639927ec40d607973699609",
+                "url": "https://api.github.com/repos/symfony/string/zipball/ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572",
+                "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572",
                 "shasum": ""
             },
             "require": {
                 "utf8"
             ],
             "support": {
-                "source": "https://github.com/symfony/string/tree/v5.2.4"
+                "source": "https://github.com/symfony/string/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-02-16T10:20:28+00:00"
+            "time": "2021-03-17T17:12:15+00:00"
         },
         {
             "name": "symfony/translation",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/translation.git",
-                "reference": "74b0353ab34ff4cca827a2cf909e325d96815e60"
+                "reference": "2cc7f45d96db9adfcf89adf4401d9dfed509f4e1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation/zipball/74b0353ab34ff4cca827a2cf909e325d96815e60",
-                "reference": "74b0353ab34ff4cca827a2cf909e325d96815e60",
+                "url": "https://api.github.com/repos/symfony/translation/zipball/2cc7f45d96db9adfcf89adf4401d9dfed509f4e1",
+                "reference": "2cc7f45d96db9adfcf89adf4401d9dfed509f4e1",
                 "shasum": ""
             },
             "require": {
             "description": "Provides tools to internationalize your application",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/translation/tree/v5.2.4"
+                "source": "https://github.com/symfony/translation/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-03-04T15:41:09+00:00"
+            "time": "2021-03-23T19:33:48+00:00"
         },
         {
             "name": "symfony/translation-contracts",
-            "version": "v2.3.0",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/translation-contracts.git",
-                "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105"
+                "reference": "95c812666f3e91db75385749fe219c5e494c7f95"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105",
-                "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95",
+                "reference": "95c812666f3e91db75385749fe219c5e494c7f95",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.3-dev"
+                    "dev-main": "2.4-dev"
                 },
                 "thanks": {
                     "name": "symfony/contracts",
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0"
+                "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-28T13:05:58+00:00"
+            "time": "2021-03-23T23:28:01+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v5.2.4",
+            "version": "v5.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "6a81fec0628c468cf6d5c87a4d003725e040e223"
+                "reference": "89412a68ea2e675b4e44f260a5666729f77f668e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6a81fec0628c468cf6d5c87a4d003725e040e223",
-                "reference": "6a81fec0628c468cf6d5c87a4d003725e040e223",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89412a68ea2e675b4e44f260a5666729f77f668e",
+                "reference": "89412a68ea2e675b4e44f260a5666729f77f668e",
                 "shasum": ""
             },
             "require": {
                 "dump"
             ],
             "support": {
-                "source": "https://github.com/symfony/var-dumper/tree/v5.2.4"
+                "source": "https://github.com/symfony/var-dumper/tree/v5.2.6"
             },
             "funding": [
                 {
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-02-18T23:11:19+00:00"
+            "time": "2021-03-28T09:42:18+00:00"
         },
         {
             "name": "tijsverkoyen/css-to-inline-styles",
         },
         {
             "name": "webmozart/assert",
-            "version": "1.9.1",
+            "version": "1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozarts/assert.git",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+                "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+                "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "php": "^7.2 || ^8.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
             "conflict": {
                 "phpstan/phpstan": "<0.12.20",
-                "vimeo/psalm": "<3.9.1"
+                "vimeo/psalm": "<4.6.1 || 4.6.2"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+                "phpunit/phpunit": "^8.5.13"
             },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.10-dev"
+                }
+            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
             ],
             "support": {
                 "issues": "https://github.com/webmozarts/assert/issues",
-                "source": "https://github.com/webmozarts/assert/tree/1.9.1"
+                "source": "https://github.com/webmozarts/assert/tree/1.10.0"
             },
-            "time": "2020-07-08T17:02:28+00:00"
+            "time": "2021-03-09T10:59:23+00:00"
         },
         {
             "name": "webup/laravel-sendinblue",
         },
         {
             "name": "facade/flare-client-php",
-            "version": "1.4.0",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/facade/flare-client-php.git",
-                "reference": "ef0f5bce23b30b32d98fd9bb49c6fa37b40eb546"
+                "reference": "6bf380035890cb0a09b9628c491ae3866b858522"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/facade/flare-client-php/zipball/ef0f5bce23b30b32d98fd9bb49c6fa37b40eb546",
-                "reference": "ef0f5bce23b30b32d98fd9bb49c6fa37b40eb546",
+                "url": "https://api.github.com/repos/facade/flare-client-php/zipball/6bf380035890cb0a09b9628c491ae3866b858522",
+                "reference": "6bf380035890cb0a09b9628c491ae3866b858522",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/facade/flare-client-php/issues",
-                "source": "https://github.com/facade/flare-client-php/tree/1.4.0"
+                "source": "https://github.com/facade/flare-client-php/tree/1.7.0"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2021-02-16T12:42:06+00:00"
+            "time": "2021-04-12T09:30:36+00:00"
         },
         {
             "name": "facade/ignition",
-            "version": "2.5.14",
+            "version": "2.8.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/facade/ignition.git",
-                "reference": "17097f7a83e200d90d1cf9f4d1b35c1001513a47"
+                "reference": "a8201d51aae83addceaef9344592a3b068b5d64d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/facade/ignition/zipball/17097f7a83e200d90d1cf9f4d1b35c1001513a47",
-                "reference": "17097f7a83e200d90d1cf9f4d1b35c1001513a47",
+                "url": "https://api.github.com/repos/facade/ignition/zipball/a8201d51aae83addceaef9344592a3b068b5d64d",
+                "reference": "a8201d51aae83addceaef9344592a3b068b5d64d",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
                 "ext-mbstring": "*",
-                "facade/flare-client-php": "^1.3.7",
+                "facade/flare-client-php": "^1.6",
                 "facade/ignition-contracts": "^1.0.2",
                 "filp/whoops": "^2.4",
                 "illuminate/support": "^7.0|^8.0",
                 "issues": "https://github.com/facade/ignition/issues",
                 "source": "https://github.com/facade/ignition"
             },
-            "time": "2021-03-04T08:48:01+00:00"
+            "time": "2021-04-09T20:45:59+00:00"
         },
         {
             "name": "facade/ignition-contracts",
         },
         {
             "name": "fakerphp/faker",
-            "version": "v1.13.0",
+            "version": "v1.14.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FakerPHP/Faker.git",
-                "reference": "ab3f5364d01f2c2c16113442fb987d26e4004913"
+                "reference": "ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/ab3f5364d01f2c2c16113442fb987d26e4004913",
-                "reference": "ab3f5364d01f2c2c16113442fb987d26e4004913",
+                "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1",
+                "reference": "ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1 || ^8.0"
+                "php": "^7.1 || ^8.0",
+                "psr/container": "^1.0",
+                "symfony/deprecation-contracts": "^2.2"
             },
             "conflict": {
                 "fzaninotto/faker": "*"
             "require-dev": {
                 "bamarni/composer-bin-plugin": "^1.4.1",
                 "ext-intl": "*",
-                "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.4.2"
+                "symfony/phpunit-bridge": "^4.4 || ^5.2"
+            },
+            "suggest": {
+                "ext-curl": "Required by Faker\\Provider\\Image to download images.",
+                "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.",
+                "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.",
+                "ext-mbstring": "Required for multibyte Unicode string functionality."
             },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "v1.15-dev"
+                }
+            },
             "autoload": {
                 "psr-4": {
                     "Faker\\": "src/Faker/"
             ],
             "support": {
                 "issues": "https://github.com/FakerPHP/Faker/issues",
-                "source": "https://github.com/FakerPHP/Faker/tree/v1.13.0"
+                "source": "https://github.com/FakerPHP/Faker/tree/v.1.14.1"
             },
-            "time": "2020-12-18T16:50:48+00:00"
+            "time": "2021-03-30T06:27:33+00:00"
         },
         {
             "name": "filp/whoops",
-            "version": "2.9.2",
+            "version": "2.12.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/filp/whoops.git",
-                "reference": "df7933820090489623ce0be5e85c7e693638e536"
+                "reference": "c13c0be93cff50f88bbd70827d993026821914dd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/filp/whoops/zipball/df7933820090489623ce0be5e85c7e693638e536",
-                "reference": "df7933820090489623ce0be5e85c7e693638e536",
+                "url": "https://api.github.com/repos/filp/whoops/zipball/c13c0be93cff50f88bbd70827d993026821914dd",
+                "reference": "c13c0be93cff50f88bbd70827d993026821914dd",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/filp/whoops/issues",
-                "source": "https://github.com/filp/whoops/tree/2.9.2"
+                "source": "https://github.com/filp/whoops/tree/2.12.1"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2021-01-24T12:00:00+00:00"
+            "time": "2021-04-25T12:00:00+00:00"
         },
         {
             "name": "hamcrest/hamcrest-php",
         },
         {
             "name": "laravel/sail",
-            "version": "v1.4.6",
+            "version": "v1.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/sail.git",
-                "reference": "59ee7e2b2efeb644eabea719186db91d11666733"
+                "reference": "7f2d520f8c7d6fc0e5e4949c1363f6ddff0ff116"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/sail/zipball/59ee7e2b2efeb644eabea719186db91d11666733",
-                "reference": "59ee7e2b2efeb644eabea719186db91d11666733",
+                "url": "https://api.github.com/repos/laravel/sail/zipball/7f2d520f8c7d6fc0e5e4949c1363f6ddff0ff116",
+                "reference": "7f2d520f8c7d6fc0e5e4949c1363f6ddff0ff116",
                 "shasum": ""
             },
             "require": {
                 "issues": "https://github.com/laravel/sail/issues",
                 "source": "https://github.com/laravel/sail"
             },
-            "time": "2021-03-03T15:22:44+00:00"
+            "time": "2021-04-20T16:17:55+00:00"
         },
         {
             "name": "mockery/mockery",
         },
         {
             "name": "nunomaduro/collision",
-            "version": "v5.3.0",
+            "version": "v5.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nunomaduro/collision.git",
-                "reference": "aca63581f380f63a492b1e3114604e411e39133a"
+                "reference": "41b7e9999133d5082700d31a1d0977161df8322a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nunomaduro/collision/zipball/aca63581f380f63a492b1e3114604e411e39133a",
-                "reference": "aca63581f380f63a492b1e3114604e411e39133a",
+                "url": "https://api.github.com/repos/nunomaduro/collision/zipball/41b7e9999133d5082700d31a1d0977161df8322a",
+                "reference": "41b7e9999133d5082700d31a1d0977161df8322a",
                 "shasum": ""
             },
             "require": {
                     "type": "patreon"
                 }
             ],
-            "time": "2021-01-25T15:34:13+00:00"
+            "time": "2021-04-09T13:38:32+00:00"
         },
         {
             "name": "phar-io/manifest",
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.12.2",
+            "version": "1.13.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "245710e971a030f42e08f4912863805570f23d39"
+                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39",
-                "reference": "245710e971a030f42e08f4912863805570f23d39",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
+                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/1.12.2"
+                "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
             },
-            "time": "2020-12-19T10:15:11+00:00"
+            "time": "2021-03-17T13:42:18+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "9.2.5",
+            "version": "9.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
+                "reference": "f6293e1b30a2354e8428e004689671b83871edde"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
-                "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
+                "reference": "f6293e1b30a2354e8428e004689671b83871edde",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2020-11-28T06:44:49+00:00"
+            "time": "2021-03-28T07:26:59+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
         },
         {
             "name": "phpunit/phpunit",
-            "version": "9.5.2",
+            "version": "9.5.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4"
+                "reference": "c73c6737305e779771147af66c96ca6a7ed8a741"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4",
-                "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c73c6737305e779771147af66c96ca6a7ed8a741",
+                "reference": "c73c6737305e779771147af66c96ca6a7ed8a741",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.2"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.4"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2021-02-02T14:45:58+00:00"
+            "time": "2021-03-23T07:16:29+00:00"
         },
         {
             "name": "sebastian/cli-parser",
index 7a970cb3bd383ba5d0f0b7741d99b91f26bdd674..9dddb7284dd7fcad76c8246b0466aeb9802b155a 100644 (file)
@@ -9,7 +9,7 @@
 <textarea name="{{ $field_name }}" class="hidden">{{-- Populated by form submit listener + used to repopulate editor. Can't have any whitespace here --}}</textarea>
 
 @push('head')
-    <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
+    <link href="https://cdn.quilljs.com/1.3.7/quill.snow.css" rel="stylesheet">
     <style>
         .ql-toolbar.ql-snow {
             background-color: #d9dde0;
@@ -34,7 +34,7 @@
 @endpush
 
 @push('scripts')
-    <script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
+    <script src="https://cdn.quilljs.com/1.3.7/quill.js"></script>
     {{-- Quill Toolbar library: https://github.com/T-vK/DynamicQuillTools --}}
     <script src="https://cdn.jsdelivr.net/gh/T-vK/DynamicQuillTools@master/DynamicQuillTools.js"></script>
     <script>
index 98853d1e7a29cd83ef45712e7a80780984a851e1..f8918ecb6386515d8d1b388b727de2f87fc70e9a 100644 (file)
@@ -6,8 +6,6 @@ Le formulaire que vous avez rempli ainsi que la visualisation de votre imagerie
 
 Conformément aux informations que vous nous avez transmis, il ressort de votre dossier qu’il n’y a pas lieu d’envisager pour le moment une consultation chirurgicale avec nos spécialistes du CCV.

 
-Votre parcours de soin n’est pas complet, car vous n’avez pas encore effectué de kinésithérapie, indispensable avant de prendre un avis chirurgical pour un problème de lombalgie.
-
 Cette étude préliminaire gratuite a pour but de faire éviter le déplacement et le coût d’une consultation inutile à des personnes dont les conditions sont manifestement trop loin d’être réunies, pour qu’une discussion sur une éventuelle intervention chirurgicale soit justifiée.
 
 L’avis médical qui vous est ainsi rendu, ne constitue pas un acte médical et ne peut donc se substituer à une véritable consultation médicale.
index 52204cca2c72e1417bc330c91275d635b94ce047..a541d5e23638a21302466a8a3ce1c33a6104ec37 100644 (file)
 
         </div>
 
+        <label class="mt-6 block text-grey-darker text-sm font-bold" for="subject">
+            Sujet du courriel
+            <input type="text" name="subject" id="subject" class="w-full mt-2" value="{{ $default_subject }}" required>
+        </label>
+
         <label class="mt-6 mb-2 block text-grey-darker text-sm font-bold" for="message">
             Message
         </label>
index 7087d2cef4f2e10182dd5e2a75bdd68f62fb7bc9..52d435e583eb1672fcd0756f782133e1506a3af0 100644 (file)
@@ -9,7 +9,7 @@
 @section('pre-content')
 
     <form action="{{ $_SERVER['REQUEST_URI'] }}" method="post"
-          class="sticky top-0 left-0 z-10 w-full bg-gray-200 p-4 sm:flex items-center justify-between border-b border-gray-400 shadow-lg mb-6">
+          class="sticky top-0 left-0 z-10 w-full bg-gray-200 px-4 py-3 sm:flex items-center justify-between border-b border-gray-400 shadow-lg mb-6">
 
         {{-- Repopulate post data from previous form (includes CSRF token) --}}
         @foreach ($post_data as $post_name => $post_value)
         {{-- Tells controller what to do next --}}
         <input type="hidden" name="action" value="send">
 
-        <div class="sm:pr-4">
-            <span class="font-bold text-lg uppercase">Aperçu du message</span>
-            <br>
-            <span class="opacity-60">Destinataire : {{ $email }}</span>
+        <div class="sm:pr-4 text-sm">
+            <div class="font-bold text-base uppercase mb-1">Aperçu du message</div>
+            <div class="opacity-60"><b>Expéditeur :</b> {{ $dr }} &lt;{{ $surgeons[$dr]['e-mail'] }}&gt;</div>
+            <div class="opacity-60"><b>Destinataire :</b> {{ $email }}</div>
+            <div class="opacity-60"><b>Sujet :</b> {{ $subject }}</div>
+
+            <label for="enable_BCC" class="flex items-center mt-2">
+                <input type="checkbox" name="enable_BCC" checked="checked" id="enable_BCC" style="color: #888; border-radius: 4px; box-shadow:none;">
+                <span class="ml-2 opacity-60 italic">Envoyer une copie de ce message au chirurgien concerné</span>
+            </label>
         </div>
 
         <div class="flex-1 space-y-2 sm:space-y-0 text-center mt-2 sm:text-right sm:mt-0">
index 167436732660bb1f2e7cf20b3ca3bbe8eddc0ace..ff1544587e62965c0434d6aa0103c128008edcfa 100644 (file)
@@ -4,8 +4,6 @@ Merci d’avoir sollicité le CCV Montpellier pour l’étude préliminaire de v
 
 Votre dossier est malheureusement incomplet et votre chirurgien requiert un complément d’information pour porter son diagnostic.
 
-
Le lien internet vers le site d’imagerie médicale en ligne que vous nous avez fourni pour consulter votre imagerie, semble incorrect et ne nous ont pas permis de visualiser les images.
-
 Pourriez-vous vérifier vos informations et soumettre à nouveau votre formulaire de demande de diagnostic ? Vous pouvez également vous rapprocher de votre cabinet de radiologie pour corriger une éventuelle erreur.


 
 Besoin d’aide ? D’information complémentaire ? Nos secrétaires médicales se feront un plaisir d’échanger avec vous du lundi au vendredi de 9h00 à 18h00. <a href="https://www.ccv-montpellier.fr/contact/" target="_blank">Pour être rappelé par le secrétariat médical du CCV Montpellier, cliquez-ici
</a>
.
index 61d409973d8bc3ca57cea644b338161d5f2a6af7..d68de3d05ae488ffeaf23b6a6b0350e902dfda29 100644 (file)
 
         @csrf
 
-        <div class="grid grid-cols-1 sm:grid-cols-2 gap-6">
+        <label class="block text-grey-darker text-sm font-bold" for="dr">
+            Docteur
+            <select name="dr" id="dr" class="w-full mt-2" required>
+                <option value="">(Veuillez sélectionner)</option>
+                @foreach (array_keys($surgeons) as $dr)
+                    <option>{{ $dr }}</option>
+                @endforeach
+            </select>
+        </label>
+
+        <div class="grid grid-cols-1 sm:grid-cols-2 gap-6 mt-6">
 
             <label class="block text-grey-darker text-sm font-bold" for="name">
                 Nom du patient
 
         </div>
 
+        <label class="mt-6 block text-grey-darker text-sm font-bold" for="subject">
+            Sujet du courriel
+            <input type="text" name="subject" id="subject" class="w-full mt-2" value="{{ $default_subject }}" required>
+        </label>
+
         <label class="mt-6 mb-2 block text-grey-darker text-sm font-bold" for="message">
             Message
         </label>
index d8b32453b3446643299c50c7b40d0697a91f09e4..dd3284ee8b7ab7fa2bade5b191d733349f52beab 100644 (file)
@@ -32,17 +32,30 @@ Route::redirect('/template', '/');
 // Quick way to test the email output without sending mail
 Route::get('/test', function()  {
 
-    $ec = new EmailController();
+    $ec = new EmailDiagnosisController();
     $dr = array_key_first($ec->surgeons);
     $pathology = array_key_first($ec->pathologies);
+    $name = 'M. Test';
+    $email = 'test@test.com';
+    $subject = 'Test';
+
+    $message_html = $ec->replaceTokens($ec->getEditableMessage('views/diagnosis/message.html'), [
+        'NOM' => $name,
+        'DOCTEUR' => $dr,
+        'DOCTEUR_LIEN' => $ec->surgeons[$dr]['profile'],
+        'PATHOLOGIE' => $pathology,
+        'PATHOLOGIE_LIEN' => $ec->pathologies[$pathology],
+    ]);
 
     $data = [
-        'name' => 'M. Test',
-        'email' => 'test@test.com',
+        'name' => $name,
+        'email' => $email,
         'dr' => $dr,
         'pathology' => $pathology,
         'surgeons' => $ec->surgeons,
-        'pathologies' => $ec->pathologies
+        'pathologies' => $ec->pathologies,
+        'subject' => $subject,
+        'message_html' => $message_html,
     ];
 
     return new App\Mail\Diagnosis($data);