]> _ Git - psq.git/commitdiff
better subscription status, no more orga subscription
authorLouis Jeckel <louis.jeckel@outlook.com>
Wed, 13 Jan 2021 12:54:27 +0000 (13:54 +0100)
committerLouis Jeckel <louis.jeckel@outlook.com>
Wed, 13 Jan 2021 12:56:10 +0000 (13:56 +0100)
app/Nova/Actions/MakeProspect.php [new file with mode: 0644]
app/Nova/Actions/SetSubscriptionStatus.php
app/Nova/Actions/StartTrial.php
app/Nova/Actions/SubscribeUser.php
app/Nova/DiscoverUsers.php
app/Nova/Organization.php
app/Nova/Subscriber.php
app/Organization.php
app/User.php
config/app.php

diff --git a/app/Nova/Actions/MakeProspect.php b/app/Nova/Actions/MakeProspect.php
new file mode 100644 (file)
index 0000000..58d995d
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Nova\Actions;
+
+use App\User;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Support\Collection;
+use Laravel\Nova\Actions\Action;
+use Laravel\Nova\Fields\ActionFields;
+
+class MakeProspect extends Action
+{
+    use InteractsWithQueue, Queueable;
+
+    public $showOnTableRow = true;
+    public $name = "Passer en prospect";
+    public $confirmText = "Voulez vous vraiment passer ces utilisateurs dans le fichier prospect ?";
+    public $confirmButtonText = "Oui";
+
+    /**
+     * Perform the action on the given models.
+     *
+     * @param  \Laravel\Nova\Fields\ActionFields  $fields
+     * @param  \Illuminate\Support\Collection  $models
+     * @return mixed
+     */
+    public function handle(ActionFields $fields, Collection $models)
+    {
+        $models->map->update(['type' => User::TYPE_PROSPECT]);
+    }
+
+    /**
+     * Get the fields available on the action.
+     *
+     * @return array
+     */
+    public function fields()
+    {
+        return [];
+    }
+}
index ff4ae348cf1f8be62cdbd1eae7b532803dce8e62..36c8c2a57c01c3c83994921b509af3d5f25ec300 100644 (file)
@@ -16,22 +16,14 @@ class SetSubscriptionStatus extends Action
 {
     use InteractsWithQueue, Queueable;
 
-    private $setActive;
-
     public $showOnTableRow = true;
 //    public $withoutConfirmation = true;
 
-    public function __construct($setActive)
-    {
-        $this->setActive = $setActive;
-    }
 
 
     public function name()
     {
-        return $this->setActive ?
-            "Activer abonnement" :
-            "Désabonner";
+        return "Activer abonnement";
     }
 
     /**
@@ -43,9 +35,6 @@ class SetSubscriptionStatus extends Action
      */
     public function handle(ActionFields $fields, Collection $models)
     {
-        $models->map->update(['subscription_active' => $this->setActive]);
-
-        if($this->setActive) {
             $models->map(function (Organization $orga) use($fields){
 
                 /** @see User::prepareForSubscription() */
@@ -59,15 +48,9 @@ class SetSubscriptionStatus extends Action
                     $orga->members->map->sendSubscribedNotification();
                 }
             });
-        }
-
-
 
-        $message = $this->setActive ?
-            "Abonnement activé avec succès" :
-            "Abonnement désactivé avec succès";
 
-        return Action::message($message);
+        return Action::message("Abonnement activé avec succès");
 
     }
 
@@ -78,8 +61,8 @@ class SetSubscriptionStatus extends Action
      */
     public function fields()
     {
-        return $this->setActive ? [
+        return [
             Boolean::make("Ne pas notifier", 'dont_notify')
-        ] : [];
+        ];
     }
 }
index 7be1b45a0093c04313c432bdf4eb3ba84157969f..60b8b276db76b2c7301b7b9b150f3753d0427479 100644 (file)
@@ -25,7 +25,7 @@ class StartTrial extends Action
 
     public function __construct()
     {
-        $this->confirmText = sprintf("Etes vous sûr de vouloir activer une période de découverte de %d jours ?", User::TRIAL_DURATION_DAYS);
+        $this->confirmText = sprintf("Etes vous sûr de vouloir activer une période de découverte ?");
     }
 
 
index 052a2cfc296683b72ab1aeb5f5e836152ddedf4d..d872f94a8dbfe13dac7864d021aa6b56de3d525d 100644 (file)
@@ -35,7 +35,6 @@ class SubscribeUser extends Action
         $users->map(function(User $user) use($fields) {
 
             $user->type = User::TYPE_SUBSCRIBER;
-            $user->organization()->associate(\App\Organization::query()->findOrFail($fields->org_id));
             $user->save();
             if(! $fields->dont_notify) {
                 $user->sendSubscribedNotification();
@@ -53,14 +52,6 @@ class SubscribeUser extends Action
     public function fields()
     {
         return [
-            Select::make('Organisation', 'org_id')->options(
-                \App\Organization::query()
-                    ->orderBy('name')
-                    ->where('subscription_active', 1)
-                    ->get()
-                    ->pluck('name', 'id')
-
-            )->searchable(),
             Boolean::make("Ne pas notifier", 'dont_notify')
         ];
     }
index 7c55ed48f1cc7cb2a62d3cd5a9f0595c5b4d0da0..3320b7e71afe830bf88146bfe726c7cad5a6106c 100644 (file)
@@ -4,6 +4,7 @@
 namespace App\Nova;
 
 
+use App\Nova\Actions\MakeProspect;
 use App\Nova\Actions\SubscribeUser;
 use Carbon\Carbon;
 use Laravel\Nova\Fields\DateTime;
@@ -48,6 +49,7 @@ class DiscoverUsers extends User
     {
         return array_merge(parent::actions($request), [
             new SubscribeUser,
+            new MakeProspect,
         ]);
     }
 
index a12c012acb7cd6f9d72aa04aa051da23b30d4331..93f48eb0bb1c19a12173911b529fbaf892c73554 100644 (file)
@@ -63,7 +63,6 @@ class Organization extends Resource
             Text::make('Nom', 'name'),
             HasMany::make('Membres', 'members', User::class),
             BelongsTo::make('Type', 'type', OrganizationType::class),
-            Boolean::make('Abonnement actif', 'subscription_active')
 
         ];
     }
@@ -113,11 +112,10 @@ class Organization extends Resource
     public function actions(Request $request)
     {
         return array_merge([
-            new SetSubscriptionStatus(true),
+            new SetSubscriptionStatus,
             new SetOrganizationMembersType(\App\User::TYPE_PROSPECT),
             new SendNotification,
             new SetOrganizationMembersType(\App\User::TYPE_DISCOVER),
-            new SetSubscriptionStatus(false),
         ], SendCustomNotification::getActions());
     }
 }
index 67f01aea95ebed6cc9ec074a8ecae6878b30d518..2c1cb567cd1ba3547ebf9bbbe02b89e2b318cb4a 100644 (file)
@@ -4,6 +4,7 @@
 namespace App\Nova;
 
 
+use App\Nova\Actions\MakeProspect;
 use App\Nova\Actions\PdfAttachmentSetting;
 use App\Nova\Filters\AccountStates;
 use Illuminate\Http\Request;
@@ -33,6 +34,7 @@ class Subscriber extends User
     public function actions(Request $request)
     {
         return array_merge([
+            new MakeProspect,
             new PdfAttachmentSetting(true),
             new PdfAttachmentSetting(false)
             ],parent::actions($request));
index 3b561363b4823f72abd835279171d52e82e248bf..51035adee41e49d9b07947bf4762f214b8b3c9f5 100644 (file)
@@ -20,7 +20,6 @@ class Organization extends Model implements SendsEmails
     use Searchable;
 
     protected $casts = [
-        'subscription_active' => 'boolean'
     ];
 
     protected $guarded = [];
@@ -33,22 +32,7 @@ class Organization extends Model implements SendsEmails
         ];
     }
 
-    /**
-     * @return boolean
-     */
-    public function isSubscribed(): bool
-    {
-        return $this->subscription_active;
-    }
 
-    /**
-     * @param Builder $builder
-     * @return Builder
-     */
-    public function scopeSubscribed(Builder $builder): Builder
-    {
-        return $builder->where('subscription_active', 1);
-    }
 
     /**
      * @return HasMany
index 4634fba2616e999ddf3fd35077c71a92cb375f22..b39bd46be8bc921e32bc1f29e88e678ddbc6a918 100644 (file)
@@ -27,7 +27,6 @@ use Laravel\Scout\Searchable;
  * @property-read $name
  * @property Organization $organization
  * @property string $position
- * @property bool $orgIsSubscribed (is user has org subscribed)
  * @property Carbon $trial_ends_at (is user is on trial)
  * @property Carbon $discover_ends_at
  * @property bool self_registered (if user used /register)
@@ -130,10 +129,6 @@ class User extends Authenticatable implements MustVerifyEmail, SendsEmails
             'badge' => 'danger',
             'label' => 'Aucun abonnement'
         ],
-        'org_subscribed' => [
-            'badge' => 'success',
-            'label' => 'Abonnement actif (orga)'
-        ],
         'ind_subscribed' => [
             'badge' => 'success',
             'label' => 'Abonnement actif (indep)'
@@ -334,16 +329,6 @@ class User extends Authenticatable implements MustVerifyEmail, SendsEmails
         return $this->hasValidSubscription() || $this->isOnDiscoverUser() || $this->onTrial();
     }
 
-    /**
-     * @return bool
-     * Checks if affiliated organization has valid subscription
-     */
-    public function orgIsSubscribed(): bool
-    {
-        return ($o = $this->organization) === null ?
-            false:
-            $o->isSubscribed();
-    }
 
     /**
      * @return bool
@@ -543,13 +528,7 @@ class User extends Authenticatable implements MustVerifyEmail, SendsEmails
      * ATTRIBUTES
      */
 
-    /**
-     * @return bool
-     */
-    public function getOrgIsSubscribedAttribute(): bool
-    {
-        return $this->orgIsSubscribed();
-    }
+
 
     /**
      * @return bool
index cd20cea8b125cbf280bf70ab003e390f2c358ae1..a555cefdf18768c72922cfcdeac0f7c5618fa51a 100644 (file)
@@ -125,7 +125,7 @@ return [
 
     'aws_s3_url' => 'https://prescription-sante.s3.eu-west-3.amazonaws.com',
 
-    'version' => '0.9.1',
+    'version' => '0.10.0 beta 1',
 
     'emails' => [
         'subscriptions' => 'abonnement@prescription-quotidien.com',