]> _ Git - psq.git/commitdiff
reorganize users in nova ° welcome email
authorLouis Jeckel <louis.jeckel@outlook.cm>
Sat, 29 Aug 2020 13:43:08 +0000 (15:43 +0200)
committerLouis Jeckel <louis.jeckel@outlook.cm>
Sat, 29 Aug 2020 13:43:08 +0000 (15:43 +0200)
13 files changed:
app/Helpers/SimpleTemplateEngine.php [new file with mode: 0644]
app/Http/Controllers/Auth/RegisterController.php
app/Imports/UsersImport.php
app/Notifications/Welcome.php
app/Nova/Organization.php
app/Nova/OrganizationType.php
app/Nova/Prospect.php [new file with mode: 0644]
app/Nova/SpecialUsers.php [new file with mode: 0644]
app/Nova/Subscriber.php [new file with mode: 0644]
app/Nova/User.php
app/Observers/UserObserver.php
app/User.php
resources/views/admin/pdfFiles/show.blade.php

diff --git a/app/Helpers/SimpleTemplateEngine.php b/app/Helpers/SimpleTemplateEngine.php
new file mode 100644 (file)
index 0000000..bde7ac6
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+
+namespace App\Helpers;
+
+
+use Illuminate\Support\Arr;
+use Illuminate\Support\Str;
+
+class SimpleTemplateEngine
+{
+    public static function renderWithModel($template, $model)
+    {
+        return preg_replace_callback('/%[^%]*%/', function($matches) use($model){
+
+            $match = Str::before(Str::after($matches[0], '%'), '%');
+
+            return $model->{$match};
+
+        }, $template);
+
+    }
+
+    public static function renderWithArray($template, $array)
+    {
+        return preg_replace_callback('/%[^%]*%/', function($matches) use($array){
+
+            $match = Str::before(Str::after($matches[0], '%'), '%');
+
+            return Arr::get($array, $match);
+
+        }, $template);
+
+    }
+
+}
index 04f9afc70b7deb208829de3342ac8ce5ef032dbe..393e1938c95aebcd5df698f709e311290780c20b 100644 (file)
@@ -62,7 +62,7 @@ class RegisterController extends Controller
                 'email',
                 'max:255',
                 Rule::unique('users')
-                    ->where(fn(Builder $builder) => $builder->where('type', User::TYPE_USER))
+                    ->where(fn(Builder $builder) => $builder->where('type', User::TYPE_SUBSCRIBER))
             ],
             'password' => ['required', 'string', 'min:8', 'confirmed'],
             recaptchaFieldName() => recaptchaRuleName(),
@@ -88,7 +88,7 @@ class RegisterController extends Controller
                 'employer' => $data['employer'],
                 'password' => Hash::make($data['password']),
                 'reg_complete' => true,
-                'type' => User::TYPE_USER,
+                'type' => User::TYPE_SUBSCRIBER,
                 'self_registered' => true,
             ]
         );
index 769f8e2fb91b18a0f355fe15a660ae5e353cde8e..524ed0f280f0da2afd62864d70439b2beaf90eee 100644 (file)
@@ -44,6 +44,8 @@ class UsersImport implements ToModel, WithValidation, WithHeadingRow
             ]);
         }
 
+        preg_match_all('/[0-9,+]+/', $row['phone'], $digits);
+        $phone = implode('', $digits[0]);
 
         return new User([
             'first_name' => Str::title($row['first_name']),
@@ -54,7 +56,7 @@ class UsersImport implements ToModel, WithValidation, WithHeadingRow
             'address_line_1' => $row['address_line_1'],
             'postal_code' => $row['postal_code'],
             'city' => $row['city'],
-            'phone' => $row['phone'],
+            'phone' => $phone,
             'password' => \Hash::make(Str::random()),
         ]);
     }
index ad744140096c270ac16bfd44f706684d01360b67..a189afcb2e8f96575a65d836e13878b60b6a56db 100644 (file)
@@ -43,10 +43,14 @@ class Welcome extends Notification implements ShouldQueue
         $link = $notifiable->routeWithToken('account.index', [], now()->addDays(7));
         return (new MailMessage)
                     ->subject('Nouvelle plateforme Prescription Santé')
-                    ->line("Bonjour.......")
-                    ->line("Veuillez cliquer sur ce lien pour créer votre mot de passe et ne rater aucun numéro de *Prescription Santé : Le Quotidien* !")
-                    ->line("Cela ne vous prendra pas plus d'une minute.")
-                    ->action('Compléter mon inscription', $link)
+                    ->greeting('Cher Lecteur abonné à notre « petit » quotidien !')
+                    ->line("Ce dernier est justement de moins en moins petit et nous allons donc vous faire profiter, dès lundi d’une nouvelle formule dont le contenu comme la forme seront tout à la fois plus riches et plus « agréables » à lire.")
+                    ->line("Mais pour cela, nous devons vous demander un tout petit effort de quelques secondes à peine !")
+                    ->line("En cliquant sur le bouton ci-dessous vous devez vous créer un mot de passe.")
+                    ->action('Créer mon mot de passe', $link)
+                    ->line("Ainsi dès Lundi prochain vous pourrez accéder en un clic à votre quotidien préféré.")
+                    ->line("A très vite, donc ! ")
+                    ->salutation("OLIVIER ROBICHON")
                     ->addTag('welcome');
     }
 
index 62aeac009192595d5e439e6a96edf5ede908ae2b..7c8f051b5bcf6737498af5e685db1b6d0afd9723 100644 (file)
@@ -39,7 +39,7 @@ class Organization extends Resource
     ];
 
 
-    public static $group = "CRM";
+    public static $group = "Organisations";
 
     public static function label()
     {
index bdb8af2d3517eb3b361ac8d8509068c406b3cb34..ef6826f403ddeb71c13cd8acab813b3051ad702e 100644 (file)
@@ -33,7 +33,15 @@ class OrganizationType extends Resource
         'name',
     ];
 
-    public static $group = "CRM";
+    public static $group = "Organisations";
+
+
+    public static function label()
+    {
+        return "Types d'organisations";
+    }
+
+
 
     /**
      * Get the fields displayed by the resource.
diff --git a/app/Nova/Prospect.php b/app/Nova/Prospect.php
new file mode 100644 (file)
index 0000000..a866086
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+
+namespace App\Nova;
+
+
+use Laravel\Nova\Http\Requests\NovaRequest;
+
+class Prospect extends User
+{
+
+    public static $group = "Annuaire";
+
+    public static function label()
+    {
+        return "Prospects";
+    }
+
+    public static function indexQuery(NovaRequest $request, $query)
+    {
+        return $query->where('type', 1);
+    }
+
+}
diff --git a/app/Nova/SpecialUsers.php b/app/Nova/SpecialUsers.php
new file mode 100644 (file)
index 0000000..dce98d6
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+
+namespace App\Nova;
+
+
+use Laravel\Nova\Http\Requests\NovaRequest;
+
+class SpecialUsers extends User
+{
+    public static $group = "Annuaire";
+
+
+    public static function label()
+    {
+        return "Autres utilisateurs";
+    }
+
+    public static function indexQuery(NovaRequest $request, $query)
+    {
+        return $query->where('type', 2);
+    }
+
+}
diff --git a/app/Nova/Subscriber.php b/app/Nova/Subscriber.php
new file mode 100644 (file)
index 0000000..4e9d488
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+
+namespace App\Nova;
+
+
+use Laravel\Nova\Http\Requests\NovaRequest;
+
+class Subscriber extends User
+{
+
+    public static $group = "Annuaire";
+
+    public static function label()
+    {
+        return "Abonnés";
+    }
+
+    public static function indexQuery(NovaRequest $request, $query)
+    {
+        return $query->where('type', 0);
+    }
+
+}
index 28cf721aa388d2fce5a310646fcda6d19a090bf7..23d675a2da56a344d831ccfffd38d8c64462fc9b 100644 (file)
@@ -19,6 +19,7 @@ use Laravel\Nova\Fields\Boolean;
 use Laravel\Nova\Fields\Country;
 use Laravel\Nova\Fields\ID;
 use Laravel\Nova\Fields\Place;
+use Laravel\Nova\Fields\Select;
 use Laravel\Nova\Fields\Text;
 use Laravel\Nova\Http\Requests\NovaRequest;
 use Laravel\Nova\Panel;
@@ -40,11 +41,11 @@ class User extends Resource
      */
     public static $title = 'name';
 
-    public static $group = "CRM";
+//    public static $group = "CRM";
 
     public static function label()
     {
-        return "Abonnés";
+        return "Utilisateurs";
     }
 
     /**
@@ -66,14 +67,18 @@ class User extends Resource
                 BelongsTo::make('Organisation', 'organization', Organization::class)->searchable(),
 
             ]),
-            Boolean::make('Compte actif', 'reg_complete'),
-            Badge::make('Etat', fn() => AppUser::statuses[$this->status]['label'])
-                ->map(Arr::pluck(AppUser::statuses, 'badge', 'label')),
+            Boolean::make('Compte activé', 'reg_complete')->hideWhenCreating(),
+            Select::make('Type')->options([
+                AppUser::TYPE_SUBSCRIBER => 'Abonné',
+                AppUser::TYPE_PROSPECT => 'Prospect',
+                AppUser::TYPE_SPECIAL => 'Autre'
+            ])->hideFromIndex(),
+            Badge::make('Etat', fn() => AppUser::STATUSES[$this->status]['label'])
+                ->map(Arr::pluck(AppUser::STATUSES, 'badge', 'label')),
         ];
     }
 
 
-
     /**
      * Get the address fields for the resource.
      *
index 7131edbf236127104604698d0d0bf90ccf5991ca..3c706c15d897373b672dddb79a25d7f35dac7d80 100644 (file)
@@ -45,6 +45,14 @@ class UserObserver
 
     }
 
+
+    public function creating(User $user)
+    {
+        if($user->password === null) {
+            $user->password = \Hash::make(\Str::random());
+        }
+    }
+
     /**
      * Handle the user "deleted" event.
      *
index e32fe393db8016acfe1e073931db24afc4b353f2..e4ec28ff18502481a73d63405aadc2a95ec544ae 100644 (file)
@@ -92,7 +92,7 @@ class User extends Authenticatable implements MustVerifyEmail
     /**
      * Possible Statuses
      */
-    public const statuses = [
+    public const STATUSES = [
         'inactive' => [
             'badge' => 'danger',
             'label' => 'Aucun abonnement'
@@ -120,7 +120,7 @@ class User extends Authenticatable implements MustVerifyEmail
     ];
 
 
-    public const TYPE_USER = 0;
+    public const TYPE_SUBSCRIBER = 0;
     public const TYPE_PROSPECT = 1;
     public const TYPE_SPECIAL = 2;
 
@@ -292,7 +292,7 @@ class User extends Authenticatable implements MustVerifyEmail
      */
     public function scopeRegisteredUser(Builder $builder): void
     {
-        $builder->where('type', self::TYPE_USER);
+        $builder->where('type', self::TYPE_SUBSCRIBER);
     }
 
 
@@ -329,7 +329,7 @@ class User extends Authenticatable implements MustVerifyEmail
         $id = 'inactive';
 
         switch($this->type) {
-            case self::TYPE_USER:
+            case self::TYPE_SUBSCRIBER:
                 if($this->orgIsSubscribed) {
                     $id = 'org_subscribed';
                 }
@@ -362,7 +362,7 @@ class User extends Authenticatable implements MustVerifyEmail
      */
     public function getStatusLabelAttribute(): string
     {
-        return self::statuses[$this->status]['label'];
+        return self::STATUSES[$this->status]['label'];
     }
 
 
index d3599af24c37f7fca707f6399d45476b24203228..04057bfedda06f0849ff198b791636319344d293 100644 (file)
@@ -10,6 +10,7 @@
                 </div>
                 <div class="col-9">
                     <h1>{{$pdf->title}}</h1>
+                    <h3><a href="{{route('admin.preview', ['file' => $pdf->slug])}}">Visualiser</a></h3>
                     <p>Publié le {{$pdf->created_at}}</p>
                     <p>{{$pdf->access_logs_count}} vues</p>
                     <div >