Page MenuHomePhorge

D1018.1775409272.diff
No OneTemporary

Authored By
Unknown
Size
10 KB
Referenced Files
None
Subscribers
None

D1018.1775409272.diff

diff --git a/src/app/Domain.php b/src/app/Domain.php
--- a/src/app/Domain.php
+++ b/src/app/Domain.php
@@ -54,19 +54,19 @@
/**
* Assign a package to a domain. The domain should not belong to any existing entitlements.
*
- * @param \App\Package $package The package to assign.
+ * @param \App\Package $package The package to assign.
+ * @param \App\User $user The wallet owner.
*
- * @return \App\Domain
+ * @return \App\Domain Self
*/
public function assignPackage($package, $user)
{
- $wallet_id = $user->wallets()->get()[0]->id;
+ $wallet_id = $user->wallets()->first()->id;
foreach ($package->skus as $sku) {
for ($i = $sku->pivot->qty; $i > 0; $i--) {
\App\Entitlement::create(
[
- 'owner_id' => $user->id,
'wallet_id' => $wallet_id,
'sku_id' => $sku->id,
'cost' => $sku->pivot->cost(),
diff --git a/src/app/Entitlement.php b/src/app/Entitlement.php
--- a/src/app/Entitlement.php
+++ b/src/app/Entitlement.php
@@ -41,7 +41,6 @@
*/
protected $fillable = [
'sku_id',
- 'owner_id',
'wallet_id',
'entitleable_id',
'entitleable_type',
@@ -74,16 +73,6 @@
}
/**
- * The owner of this entitlement.
- *
- * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
- */
- public function owner()
- {
- return $this->belongsTo('App\User', 'owner_id', 'id');
- }
-
- /**
* The wallet this entitlement is being billed to
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
diff --git a/src/app/Observers/EntitlementObserver.php b/src/app/Observers/EntitlementObserver.php
--- a/src/app/Observers/EntitlementObserver.php
+++ b/src/app/Observers/EntitlementObserver.php
@@ -35,30 +35,19 @@
// can't dispatch job here because it'll fail serialization
// Make sure the owner is at least a controller on the wallet
- $owner = \App\User::find($entitlement->owner_id);
$wallet = \App\Wallet::find($entitlement->wallet_id);
- if (!$owner) {
+ if (!$wallet || !$wallet->owner) {
return false;
}
- if (!$wallet) {
- return false;
- }
-
- if (!$wallet->owner() == $owner) {
- if (!$wallet->controllers->contains($owner)) {
- return false;
- }
- }
-
$sku = \App\Sku::find($entitlement->sku_id);
if (!$sku) {
return false;
}
- $result = $sku->handler_class::preReq($entitlement, $owner);
+ $result = $sku->handler_class::preReq($entitlement, $wallet->owner);
if (!$result) {
return false;
diff --git a/src/app/User.php b/src/app/User.php
--- a/src/app/User.php
+++ b/src/app/User.php
@@ -135,7 +135,6 @@
for ($i = $sku->pivot->qty; $i > 0; $i--) {
\App\Entitlement::create(
[
- 'owner_id' => $this->id,
'wallet_id' => $wallet_id,
'sku_id' => $sku->id,
'cost' => $sku->pivot->cost(),
@@ -185,7 +184,6 @@
{
// TODO: I guess wallet could be parametrized in future
$wallet = $this->wallet();
- $owner = $wallet->owner;
$exists = $this->entitlements()->where('sku_id', $sku->id)->count();
// TODO: Sanity check, this probably should be in preReq() on handlers
@@ -196,7 +194,6 @@
while ($count > 0) {
\App\Entitlement::create([
- 'owner_id' => $owner->id,
'wallet_id' => $wallet->id,
'sku_id' => $sku->id,
'cost' => $sku->units_free >= $exists ? $sku->cost : 0,
@@ -295,10 +292,9 @@
$domains[] = $dbdomain;
}
- $entitlements = Entitlement::where('owner_id', $this->id)->get();
-
- foreach ($entitlements as $entitlement) {
- if ($entitlement->entitleable instanceof Domain) {
+ foreach ($this->wallets as $wallet) {
+ $entitlements = $wallet->entitlements()->where('entitleable_type', Domain::class)->get();
+ foreach ($entitlements as $entitlement) {
$domain = $entitlement->entitleable;
\Log::info("Found domain for {$this->email}: {$domain->namespace} (owned)");
$domains[] = $domain;
@@ -306,12 +302,11 @@
}
foreach ($this->accounts as $wallet) {
- foreach ($wallet->entitlements as $entitlement) {
- if ($entitlement->entitleable instanceof Domain) {
- $domain = $entitlement->entitleable;
- \Log::info("Found domain {$this->email}: {$domain->namespace} (charged)");
- $domains[] = $domain;
- }
+ $entitlements = $wallet->entitlements()->where('entitleable_type', Domain::class)->get();
+ foreach ($entitlements as $entitlement) {
+ $domain = $entitlement->entitleable;
+ \Log::info("Found domain {$this->email}: {$domain->namespace} (charged)");
+ $domains[] = $domain;
}
}
diff --git a/src/database/migrations/2019_09_17_102628_create_sku_entitlements.php b/src/database/migrations/2019_09_17_102628_create_sku_entitlements.php
--- a/src/database/migrations/2019_09_17_102628_create_sku_entitlements.php
+++ b/src/database/migrations/2019_09_17_102628_create_sku_entitlements.php
@@ -34,7 +34,6 @@
'entitlements',
function (Blueprint $table) {
$table->string('id', 36)->primary();
- $table->bigInteger('owner_id');
$table->bigInteger('entitleable_id');
$table->string('entitleable_type');
$table->integer('cost')->default(0)->nullable();
@@ -44,7 +43,6 @@
$table->timestamps();
$table->foreign('sku_id')->references('id')->on('skus')->onDelete('cascade');
- $table->foreign('owner_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('wallet_id')->references('id')->on('wallets')->onDelete('cascade');
}
);
diff --git a/src/tests/Feature/BillingTest.php b/src/tests/Feature/BillingTest.php
--- a/src/tests/Feature/BillingTest.php
+++ b/src/tests/Feature/BillingTest.php
@@ -117,7 +117,6 @@
$entitlement = \App\Entitlement::create(
[
- 'owner_id' => $this->user->id,
'wallet_id' => $this->wallet_id,
'sku_id' => $sku->id,
'cost' => $sku->cost,
@@ -148,7 +147,6 @@
$entitlement = \App\Entitlement::create(
[
- 'owner_id' => $this->user->id,
'wallet_id' => $this->wallet_id,
'sku_id' => $sku->id,
'cost' => $sku->cost,
@@ -193,7 +191,6 @@
$entitlement = \App\Entitlement::create(
[
- 'owner_id' => $this->user->id,
'entitleable_id' => $this->user->id,
'entitleable_type' => \App\User::class,
'cost' => $sku->cost,
diff --git a/src/tests/Feature/Controller/DomainsTest.php b/src/tests/Feature/Controller/DomainsTest.php
--- a/src/tests/Feature/Controller/DomainsTest.php
+++ b/src/tests/Feature/Controller/DomainsTest.php
@@ -47,7 +47,6 @@
]);
Entitlement::create([
- 'owner_id' => $user->id,
'wallet_id' => $user->wallets()->first()->id,
'sku_id' => $sku_domain->id,
'entitleable_id' => $domain->id,
@@ -130,7 +129,6 @@
]);
Entitlement::create([
- 'owner_id' => $user->id,
'wallet_id' => $user->wallets()->first()->id,
'sku_id' => $sku_domain->id,
'entitleable_id' => $domain->id,
diff --git a/src/tests/Feature/EntitlementTest.php b/src/tests/Feature/EntitlementTest.php
--- a/src/tests/Feature/EntitlementTest.php
+++ b/src/tests/Feature/EntitlementTest.php
@@ -61,8 +61,8 @@
$wallet = $owner->wallets->first();
$this->assertCount(4, $owner->entitlements()->get());
- $this->assertCount(1, $sku_domain->entitlements()->where('owner_id', $owner->id)->get());
- $this->assertCount(2, $sku_mailbox->entitlements()->where('owner_id', $owner->id)->get());
+ $this->assertCount(1, $sku_domain->entitlements()->where('wallet_id', $wallet->id)->get());
+ $this->assertCount(2, $sku_mailbox->entitlements()->where('wallet_id', $wallet->id)->get());
$this->assertCount(9, $wallet->entitlements);
$this->backdateEntitlements($owner->entitlements, Carbon::now()->subMonths(1));
@@ -91,7 +91,7 @@
$sku = \App\Sku::where('title', 'mailbox')->first();
$this->assertNotNull($sku);
- $entitlement = Entitlement::where('owner_id', $user->id)->where('sku_id', $sku->id)->first();
+ $entitlement = Entitlement::where('wallet_id', $wallet->id)->where('sku_id', $sku->id)->first();
$this->assertNotNull($entitlement);
$e_sku = $entitlement->sku;
@@ -100,9 +100,6 @@
$e_wallet = $entitlement->wallet;
$this->assertSame($wallet->id, $e_wallet->id);
- $e_owner = $entitlement->owner;
- $this->assertEquals($user->id, $e_owner->id);
-
$e_entitleable = $entitlement->entitleable;
$this->assertEquals($user->id, $e_entitleable->id);
$this->assertTrue($e_entitleable instanceof \App\User);
diff --git a/src/tests/Feature/UserTest.php b/src/tests/Feature/UserTest.php
--- a/src/tests/Feature/UserTest.php
+++ b/src/tests/Feature/UserTest.php
@@ -197,13 +197,11 @@
$id = $user->id;
- $entitlements = \App\Entitlement::where('owner_id', $id)->get();
- $this->assertCount(4, $entitlements);
+ $this->assertCount(4, $user->entitlements()->get());
$user->delete();
- $entitlements = \App\Entitlement::where('owner_id', $id)->get();
- $this->assertCount(0, $entitlements);
+ $this->assertCount(0, $user->entitlements()->get());
$this->assertTrue($user->fresh()->trashed());
$this->assertFalse($user->fresh()->isDeleted());

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 5, 5:14 PM (12 h, 57 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18779910
Default Alt Text
D1018.1775409272.diff (10 KB)

Event Timeline