diff --git a/app/Http/Requests/Bo/Settings/UpdateSettingsRequest.php b/app/Http/Requests/Bo/Settings/UpdateSettingsRequest.php index 99e2988..f9b265c 100644 --- a/app/Http/Requests/Bo/Settings/UpdateSettingsRequest.php +++ b/app/Http/Requests/Bo/Settings/UpdateSettingsRequest.php @@ -30,6 +30,7 @@ class UpdateSettingsRequest extends FormRequest // phpcs:enable $this->merge([ // Checkboxes. + 'notify_prize_sent' => $this->boolean('notify_prize_sent'), 'use_ean_codes' => $this->boolean('use_ean_codes'), 'activated_teaser' => $this->boolean('activated_teaser'), 'activated_close_page' => $this->boolean('activated_close_page'), @@ -70,9 +71,10 @@ class UpdateSettingsRequest extends FormRequest 'close_page_active_date' => 'nullable|required_if:activated_close_page,true,1|date|after_or_equal:end_date', 'redirect_close' => 'required|url:http,https', + 'notify_prize_sent' => 'required|boolean', 'discounts_activated' => 'required|boolean', 'discounts_site' => 'nullable|required_if:discounts_activated,true,1|string|min:3|max:255', - 'discounts_campaign' => 'nullable|required_if:discounts_activated,true,1|string|min:3|max:255', + 'discounts_campaign' => 'nullable|required_if:discounts_activated,true,1|string|min:3|max:255', 'web_coupons' => [ 'present', 'array', function ($attribute, $value, $fail) { @@ -142,6 +144,7 @@ class UpdateSettingsRequest extends FormRequest 'discounts_activated' => trans('validation.custom.discounts_activated'), 'discounts_site' => trans('validation.custom.discounts_site'), 'discounts_campaign' => trans('validation.custom.discounts_campaign'), + 'notify_prize_sent' => trans('validation.custom.notify_prize_sent'), 'web_coupons' => trans('Tableau des coupons'), 'web_coupons.*.web_coupon_identifiant' => trans('Identifiant coupon :index'), diff --git a/app/Models/Participation.php b/app/Models/Participation.php index 0bdf8ec..f30aaf2 100644 --- a/app/Models/Participation.php +++ b/app/Models/Participation.php @@ -76,8 +76,15 @@ class Participation extends Model }); static::updating(function (self $model) { self::manageFields($model); - // ? On veux marquer le lot comme envoyé ? - if ($model->prize_sent and !$model->getOriginal('prize_sent')) { + /** @var \App\Models\Settings */ + $settings = app(Settings::class); + if ( + // ? Les notification doivent être envoyées ? + $settings->notify_prize_sent and + // ? On veux marquer le lot comme envoyé ? + $model->prize_sent and + !$model->getOriginal('prize_sent') + ) { /** @var \App\Models\Customer */ $customer = $model->customer; $customer->notify(new PrizeHasBeenSent()); diff --git a/app/Models/Settings.php b/app/Models/Settings.php index 78fb0f2..f6e0259 100644 --- a/app/Models/Settings.php +++ b/app/Models/Settings.php @@ -23,6 +23,8 @@ use Illuminate\Support\Facades\Cache; * @property int $nb_unique_code_use Max unique code use (0 = unlimited) * Dans tous les cas 1 joueur ne peut utiliser * qu'une seule fois 1 code donné + * @property boolean $notify_prize_sent Should the game send notifications + * when the prize is sent ? * @property boolean $use_ean_codes Should the game use ean codes ? * @property boolean $activated_teaser Is the teaser active ? * @property boolean $activated_close_page Is the close page active ? @@ -72,6 +74,7 @@ class Settings extends Model 'notification_emails', 'winning_proof', 'analytics', + 'notify_prize_sent', ]; /** @@ -80,6 +83,7 @@ class Settings extends Model * @var array */ protected $casts = [ + 'notify_prize_sent' => 'bool', 'use_ean_codes' => 'bool', 'activated_teaser' => 'bool', 'activated_close_page' => 'bool', diff --git a/database/migrations/2020_10_12_123129_create_settings.php b/database/migrations/2020_10_12_123129_create_settings.php index 0531a40..9063c2b 100644 --- a/database/migrations/2020_10_12_123129_create_settings.php +++ b/database/migrations/2020_10_12_123129_create_settings.php @@ -46,6 +46,12 @@ return new class extends Migration $table->boolean('winning_proof') ->comment('Les preuves de gains sont obligatoires (pdf sont à mettre dans prizes)'); + + $table->boolean('notify_prize_sent') + ->comment( + 'Envoyer une notification au participants quand leur + lot est marqué comme envoyé dans l\'interface' + ); $table->timestamps(); }); } diff --git a/database/seeders/Mandatory/SettingsSeeder.php b/database/seeders/Mandatory/SettingsSeeder.php index 060c853..7f6af9f 100644 --- a/database/seeders/Mandatory/SettingsSeeder.php +++ b/database/seeders/Mandatory/SettingsSeeder.php @@ -27,6 +27,7 @@ class SettingsSeeder extends Seeder $settings->use_ean_codes = false; $settings->activated_teaser = false; $settings->activated_close_page = false; + $settings->notify_prize_sent = false; $settings->redirect_close = "https://example.test"; $settings->discounts_activated = false; $settings->notification_emails = []; diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index 5e00eb5..7761b3f 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -272,6 +272,7 @@ return [ 'discounts_campaign' => 'référence de la campagne', 'analytics' => 'analytics', 'game_rules' => 'règlement du jeu', + 'notify_prize_sent' => 'notification de lot envoyé au participant', 'barcode' => 'code-barres du produit', 'ticket' => 'ticket de caisse avec la date', diff --git a/resources/views/pages/settings/form-inputs.blade.php b/resources/views/pages/settings/form-inputs.blade.php index 0635a99..8fecf62 100644 --- a/resources/views/pages/settings/form-inputs.blade.php +++ b/resources/views/pages/settings/form-inputs.blade.php @@ -1,4 +1,5 @@
+ {{-- CODE VAR --}}
{{ __('Codes configuration') }} @@ -330,6 +331,25 @@
+ + {{-- NOTIFY_PRIZE_SENT --}} +
+
+ {{ Str::ucfirst(__('validation.custom.notify_prize_sent')) }} +
+ @include('back::partials.inputs.tinyint-boolean', [ + 'id' => 'notify-prize-sent', + 'label' => Str::ucfirst(__('validation.custom.notify_prize_sent')), + 'name' => 'notify_prize_sent', + 'required' => false, + 'model' => $settingsModel ?? null, + 'helper' => __('validation.boolean', [ + 'attribute' => Str::ucfirst(__('validation.custom.notify_prize_sent')), + ]), + ]) +
+
+