Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions database/factories/FeatureConsumptionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

namespace LucasDotVin\Soulbscription\Database\Factories;

use LucasDotVin\Soulbscription\Models\Feature;
use Illuminate\Database\Eloquent\Factories\Factory;
use LucasDotVin\Soulbscription\Models\FeatureConsumption;

class FeatureConsumptionFactory extends Factory
{
protected $model = FeatureConsumption::class;
protected $model;

public function __construct()
{
$this->model = config('soulbscription.models.feature_consumption');
}

/**
* Define the model's default state.
Expand All @@ -18,7 +20,7 @@ class FeatureConsumptionFactory extends Factory
public function definition()
{
return [
'feature_id' => Feature::factory(),
'feature_id' => config('soulbscription.models.feature')::factory(),
'consumption' => $this->faker->randomFloat(),
'expired_at' => $this->faker->dateTime(),
'subscriber_id' => $this->faker->randomNumber(),
Expand Down
8 changes: 6 additions & 2 deletions database/factories/FeatureFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@

use LucasDotVin\Soulbscription\Enums\PeriodicityType;
use Illuminate\Database\Eloquent\Factories\Factory;
use LucasDotVin\Soulbscription\Models\Feature;

class FeatureFactory extends Factory
{
protected $model = Feature::class;
protected $model;

public function __construct()
{
$this->model = config('soulbscription.models.feature');
}

/**
* Define the model's default state.
Expand Down
8 changes: 6 additions & 2 deletions database/factories/PlanFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@

use LucasDotVin\Soulbscription\Enums\PeriodicityType;
use Illuminate\Database\Eloquent\Factories\Factory;
use LucasDotVin\Soulbscription\Models\Plan;

class PlanFactory extends Factory
{
protected $model = Plan::class;
protected $model;

public function __construct()
{
$this->model = config('soulbscription.models.plan');
}

/**
* Define the model's default state.
Expand Down
11 changes: 7 additions & 4 deletions database/factories/SubscriptionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

namespace LucasDotVin\Soulbscription\Database\Factories;

use LucasDotVin\Soulbscription\Models\Plan;
use Illuminate\Database\Eloquent\Factories\Factory;
use LucasDotVin\Soulbscription\Models\Subscription;

class SubscriptionFactory extends Factory
{
protected $model = Subscription::class;
protected $model;

public function __construct()
{
$this->model = config('soulbscription.models.subscription');
}

/**
* Define the model's default state.
Expand All @@ -18,7 +21,7 @@ class SubscriptionFactory extends Factory
public function definition()
{
return [
'plan_id' => Plan::factory(),
'plan_id' => config('soulbscription.models.plan')::factory(),
'canceled_at' => null,
'started_at' => $this->faker->dateTime(),
'suppressed_at' => null,
Expand Down
10 changes: 7 additions & 3 deletions database/factories/SubscriptionRenewalFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

namespace LucasDotVin\Soulbscription\Database\Factories;

use LucasDotVin\Soulbscription\Models\{Subscription, SubscriptionRenewal};
use Illuminate\Database\Eloquent\Factories\Factory;

class SubscriptionRenewalFactory extends Factory
{
protected $model = SubscriptionRenewal::class;
protected $model;

public function __construct()
{
$this->model = config('soulbscription.models.subscription_renewal');
}

/**
* Define the model's default state.
Expand All @@ -17,7 +21,7 @@ class SubscriptionRenewalFactory extends Factory
public function definition()
{
return [
'subscription_id' => Subscription::factory(),
'subscription_id' => config('soulbscription.models.subscription')::factory(),
'overdue' => $this->faker->boolean(),
'renewal' => $this->faker->boolean(),
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

return new class() extends Migration {
Expand All @@ -15,7 +14,7 @@ public function up()
{
Schema::create('subscriptions', function (Blueprint $table) {
$table->id();
$table->foreignIdFor(\LucasDotVin\Soulbscription\Models\Plan::class);
$table->foreignIdFor(config('soulbscription.models.plan')::class);
$table->timestamp('canceled_at')->nullable();
$table->timestamp('expired_at')->nullable();
$table->timestamp('grace_days_ended_at')->nullable();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public function up()
$table->id();
$table->decimal('consumption')->unsigned()->nullable();
$table->timestamp('expired_at')->nullable();
$table->foreignIdFor(\LucasDotVin\Soulbscription\Models\Feature::class)->constrained()->cascadeOnDelete();
$table->foreignIdFor(config('soulbscription.models.feature')::class)->constrained()->cascadeOnDelete();
$table->timestamps();

if (config('soulbscription.models.subscriber.uses_uuid')) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public function up()
$table->id();
$table->boolean('overdue');
$table->boolean('renewal');
$table->foreignIdFor(\LucasDotVin\Soulbscription\Models\Subscription::class);
$table->foreignIdFor(config('soulbscription.models.subscription')::class);
$table->timestamps();
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ public function up()
Schema::create('feature_plan', function (Blueprint $table) {
$table->id();
$table->decimal('charges')->nullable();
$table->foreignIdFor(\LucasDotVin\Soulbscription\Models\Feature::class)->constrained()->cascadeOnDelete();
$table->foreignIdFor(\LucasDotVin\Soulbscription\Models\Plan::class)->constrained()->cascadeOnDelete();
$table->foreignIdFor(config('soulbscription.models.plan')::class)->constrained()->cascadeOnDelete();
$table->foreignIdFor(config('soulbscription.models.feature')::class)->constrained()->cascadeOnDelete();
$table->timestamps();
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public function up()
$table->id();
$table->decimal('charges')->nullable();
$table->timestamp('expired_at')->nullable();
$table->foreignIdFor(\LucasDotVin\Soulbscription\Models\Feature::class)->constrained()->cascadeOnDelete();
$table->foreignIdFor(config('soulbscription.models.feature')::class)->constrained()->cascadeOnDelete();
$table->timestamps();

if (config('soulbscription.models.subscriber.uses_uuid')) {
Expand Down
34 changes: 25 additions & 9 deletions src/Events/FeatureConsumed.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,39 @@

namespace LucasDotVin\Soulbscription\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use InvalidArgumentException;
use Illuminate\Queue\SerializesModels;
use LucasDotVin\Soulbscription\Models\Feature;
use LucasDotVin\Soulbscription\Models\FeatureConsumption;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class FeatureConsumed
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
use InteractsWithSockets;

public mixed $feature;
public mixed $subscriber;
public mixed $featureConsumption;

public function __construct(
public $subscriber,
public Feature $feature,
public FeatureConsumption $featureConsumption,
$subscriber,
mixed $feature,
mixed $featureConsumption
) {
//
$featureClass = config('soulbscription.models.feature');
$featureConsumptionClass = config('soulbscription.models.feature_consumption');

throw_if(!($feature instanceof $featureClass), new InvalidArgumentException(
"Feature must be an instance of $featureClass."
));

throw_if(!($featureConsumption instanceof $featureConsumptionClass), new InvalidArgumentException(
"FeatureConsumption must be an instance of $featureConsumptionClass."
));

$this->feature = $feature;
$this->subscriber = $subscriber;
$this->featureConsumption = $featureConsumption;
}
}
34 changes: 25 additions & 9 deletions src/Events/FeatureTicketCreated.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,39 @@

namespace LucasDotVin\Soulbscription\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use InvalidArgumentException;
use Illuminate\Queue\SerializesModels;
use LucasDotVin\Soulbscription\Models\Feature;
use LucasDotVin\Soulbscription\Models\FeatureTicket;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class FeatureTicketCreated
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
use InteractsWithSockets;

public mixed $feature;
public mixed $subscriber;
public mixed $featureTicket;

public function __construct(
public $subscriber,
public Feature $feature,
public FeatureTicket $featureTicket,
$subscriber,
mixed $feature,
mixed $featureTicket
) {
//
$featureClass = config('soulbscription.models.feature');
$featureTicketClass = config('soulbscription.models.feature_ticket');

throw_if(!($feature instanceof $featureClass), new InvalidArgumentException(
"Feature must be an instance of $featureClass."
));

throw_if(!($featureTicket instanceof $featureTicketClass), new InvalidArgumentException(
"FeatureTicket must be an instance of $featureTicketClass."
));

$this->feature = $feature;
$this->subscriber = $subscriber;
$this->featureTicket = $featureTicket;
}
}
23 changes: 15 additions & 8 deletions src/Events/SubscriptionCanceled.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,27 @@

namespace LucasDotVin\Soulbscription\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use InvalidArgumentException;
use Illuminate\Queue\SerializesModels;
use LucasDotVin\Soulbscription\Models\Subscription;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class SubscriptionCanceled
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
use InteractsWithSockets;

public mixed $subscription;

public function __construct(mixed $subscription)
{
$subscriptionClass = config('soulbscription.models.subscription');

throw_if(!($subscription instanceof $subscriptionClass), new InvalidArgumentException(
"Subscription must be an instance of $subscriptionClass."
));

public function __construct(
public Subscription $subscription,
) {
//
$this->subscription = $subscription;
}
}
23 changes: 15 additions & 8 deletions src/Events/SubscriptionRenewed.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,27 @@

namespace LucasDotVin\Soulbscription\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use InvalidArgumentException;
use Illuminate\Queue\SerializesModels;
use LucasDotVin\Soulbscription\Models\Subscription;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class SubscriptionRenewed
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
use InteractsWithSockets;

public mixed $subscription;

public function __construct(mixed $subscription)
{
$subscriptionClass = config('soulbscription.models.subscription');

throw_if(!($subscription instanceof $subscriptionClass), new InvalidArgumentException(
"Subscription must be an instance of $subscriptionClass."
));

public function __construct(
public Subscription $subscription,
) {
//
$this->subscription = $subscription;
}
}
23 changes: 15 additions & 8 deletions src/Events/SubscriptionScheduled.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,27 @@

namespace LucasDotVin\Soulbscription\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use InvalidArgumentException;
use Illuminate\Queue\SerializesModels;
use LucasDotVin\Soulbscription\Models\Subscription;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class SubscriptionScheduled
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
use InteractsWithSockets;

public mixed $subscription;

public function __construct(mixed $subscription)
{
$subscriptionClass = config('soulbscription.models.subscription');

throw_if(!($subscription instanceof $subscriptionClass), new InvalidArgumentException(
"Subscription must be an instance of $subscriptionClass."
));

public function __construct(
public Subscription $subscription,
) {
//
$this->subscription = $subscription;
}
}
Loading