--- /dev/null
+<?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);
+
+ }
+
+}
'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(),
'employer' => $data['employer'],
'password' => Hash::make($data['password']),
'reg_complete' => true,
- 'type' => User::TYPE_USER,
+ 'type' => User::TYPE_SUBSCRIBER,
'self_registered' => true,
]
);
]);
}
+ preg_match_all('/[0-9,+]+/', $row['phone'], $digits);
+ $phone = implode('', $digits[0]);
return new User([
'first_name' => Str::title($row['first_name']),
'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()),
]);
}
$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');
}
];
- public static $group = "CRM";
+ public static $group = "Organisations";
public static function label()
{
'name',
];
- public static $group = "CRM";
+ public static $group = "Organisations";
+
+
+ public static function label()
+ {
+ return "Types d'organisations";
+ }
+
+
/**
* Get the fields displayed by the resource.
--- /dev/null
+<?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);
+ }
+
+}
--- /dev/null
+<?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);
+ }
+
+}
--- /dev/null
+<?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);
+ }
+
+}
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;
*/
public static $title = 'name';
- public static $group = "CRM";
+// public static $group = "CRM";
public static function label()
{
- return "Abonnés";
+ return "Utilisateurs";
}
/**
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.
*
}
+
+ public function creating(User $user)
+ {
+ if($user->password === null) {
+ $user->password = \Hash::make(\Str::random());
+ }
+ }
+
/**
* Handle the user "deleted" event.
*
/**
* Possible Statuses
*/
- public const statuses = [
+ public const STATUSES = [
'inactive' => [
'badge' => 'danger',
'label' => 'Aucun abonnement'
];
- public const TYPE_USER = 0;
+ public const TYPE_SUBSCRIBER = 0;
public const TYPE_PROSPECT = 1;
public const TYPE_SPECIAL = 2;
*/
public function scopeRegisteredUser(Builder $builder): void
{
- $builder->where('type', self::TYPE_USER);
+ $builder->where('type', self::TYPE_SUBSCRIBER);
}
$id = 'inactive';
switch($this->type) {
- case self::TYPE_USER:
+ case self::TYPE_SUBSCRIBER:
if($this->orgIsSubscribed) {
$id = 'org_subscribed';
}
*/
public function getStatusLabelAttribute(): string
{
- return self::statuses[$this->status]['label'];
+ return self::STATUSES[$this->status]['label'];
}
</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 >