Page MenuHomePhorge

D1504.1775285318.diff
No OneTemporary

Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None

D1504.1775285318.diff

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
@@ -97,11 +97,19 @@
{
// Start calculating the costs for the consumption of this entitlement if the
// existing consumption spans >= 14 days.
- // anything's free for 14 days
+ //
+ // Effect is that anything's free for the first 14 days
if ($entitlement->created_at >= Carbon::now()->subDays(14)) {
return;
}
+ // Determine if we're still within the free first month
+ $freeMonthEnds = $entitlement->wallet->created_at->copy()->addMonthsWithoutOverflow(1);
+
+ if ($freeMonthEnds >= Carbon::now()) {
+ return;
+ }
+
$cost = 0;
// get the discount rate applied to the wallet.
diff --git a/src/app/Wallet.php b/src/app/Wallet.php
--- a/src/app/Wallet.php
+++ b/src/app/Wallet.php
@@ -60,6 +60,22 @@
public function chargeEntitlements($apply = true)
{
+ // This wallet has been created less than a month ago, this is the trial period
+ if ($this->created_at >= Carbon::now()->subMonthsWithoutOverflow(1)) {
+ // Move all the current entitlement's updated_at timestamps forward to one month after
+ // this wallet was created.
+ $freeMonthEnds = $this->created_at->copy()->addMonthsWithoutOverflow(1);
+
+ foreach ($this->entitlements()->get()->fresh() as $entitlement) {
+ if ($entitlement->updated_at < $freeMonthEnds) {
+ $entitlement->updated_at = $freeMonthEnds;
+ $entitlement->save();
+ }
+ }
+
+ return 0;
+ }
+
$charges = 0;
$discount = $this->getDiscountRate();
@@ -80,7 +96,7 @@
continue;
}
- // created more than a month ago -- was it billed?
+ // updated last more than a month ago -- was it billed?
if ($entitlement->updated_at <= Carbon::now()->subMonthsWithoutOverflow(1)) {
$diff = $entitlement->updated_at->diffInMonths(Carbon::now());
@@ -93,7 +109,9 @@
continue;
}
- $entitlement->updated_at = $entitlement->updated_at->copy()->addMonthsWithoutOverflow($diff);
+ $entitlement->updated_at = $entitlement->updated_at->copy()
+ ->addMonthsWithoutOverflow($diff);
+
$entitlement->save();
if ($cost == 0) {
diff --git a/src/database/seeds/production/PackageSeeder.php b/src/database/seeds/production/PackageSeeder.php
--- a/src/database/seeds/production/PackageSeeder.php
+++ b/src/database/seeds/production/PackageSeeder.php
@@ -15,6 +15,7 @@
*/
public function run()
{
+ $skuActiveSync = Sku::firstOrCreate(['title' => 'activesync']);
$skuGroupware = Sku::firstOrCreate(['title' => 'groupware']);
$skuMailbox = Sku::firstOrCreate(['title' => 'mailbox']);
$skuStorage = Sku::firstOrCreate(['title' => 'storage']);
@@ -31,7 +32,8 @@
$skus = [
$skuMailbox,
$skuGroupware,
- $skuStorage
+ $skuStorage,
+ $skuActiveSync
];
$package->skus()->saveMany($skus);

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 4, 6:48 AM (2 d, 13 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18822738
Default Alt Text
D1504.1775285318.diff (3 KB)

Event Timeline