Changeset View
Changeset View
Standalone View
Standalone View
src/app/Sku.php
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | class Sku extends Model | ||||
/** | /** | ||||
* Register (default) SKU entitlement for specified user. | * Register (default) SKU entitlement for specified user. | ||||
* This method should be used e.g. on user creation when we have | * This method should be used e.g. on user creation when we have | ||||
* a set of SKUs and want to create entitlements for them (using | * a set of SKUs and want to create entitlements for them (using | ||||
* default values). | * default values). | ||||
*/ | */ | ||||
public function registerEntitlement(\App\User $user, array $params = []) | public function registerEntitlement(\App\User $user, array $params = []) | ||||
{ | { | ||||
if (!$this->active) { | |||||
\Log::debug("Skipped registration of an entitlement for non-active SKU ($this->title)"); | |||||
return; | |||||
} | |||||
$wallet = $user->wallets()->get()[0]; | $wallet = $user->wallets()->get()[0]; | ||||
$entitlement = new \App\Entitlement(); | $entitlement = new \App\Entitlement(); | ||||
$entitlement->owner_id = $user->id; | $entitlement->owner_id = $user->id; | ||||
$entitlement->wallet_id = $wallet->id; | $entitlement->wallet_id = $wallet->id; | ||||
$entitlement->sku_id = $this->id; | $entitlement->sku_id = $this->id; | ||||
$entitlement->entitleable_type = $this->handler_class::entitleableClass(); | $entitlement->entitleable_type = $this->handler_class::entitleableClass(); | ||||
if ($user instanceof $entitlement->entitleable_type) { | if ($user instanceof $entitlement->entitleable_type) { | ||||
$entitlement->entitleable_id = $user->id; | $entitlement->entitleable_id = $user->id; | ||||
} else { | } else { | ||||
foreach ($params as $param) { | foreach ($params as $param) { | ||||
if ($param instanceof $entitlement->entitleable_type) { | if ($param instanceof $entitlement->entitleable_type) { | ||||
$entitlement->entitleable_id = $param->id; | $entitlement->entitleable_id = $param->id; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
if (empty($entitlement->entitleable_id)) { | if (empty($entitlement->entitleable_id)) { | ||||
if (method_exists($this->handler_class, 'createDefaultEntitleable')) { | if (method_exists($this->handler_class, 'createDefaultEntitleable')) { | ||||
$entitlement->entitleable_id = $this->handler_class::createDefaultEntitleable($user); | $entitlement->entitleable_id = $this->handler_class::createDefaultEntitleable($user); | ||||
} else { | } else { | ||||
// error | throw new Exception("Failed to create an entitlement for SKU ($this->title). Missing entitleable_id."); | ||||
} | } | ||||
} | } | ||||
$entitlement->save(); | $entitlement->save(); | ||||
} | } | ||||
} | } |