PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.21.2
GiveWP – Donation Plugin and Fundraising Platform v2.21.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Subscriptions / Factories / SubscriptionFactory.php
give / src / Subscriptions / Factories Last commit date
SubscriptionFactory.php 4 years ago
SubscriptionFactory.php
85 lines
1 <?php
2
3 namespace Give\Subscriptions\Factories;
4
5 use Exception;
6 use Give\Donations\Models\Donation;
7 use Give\Donations\ValueObjects\DonationStatus;
8 use Give\Donors\Models\Donor;
9 use Give\Framework\Models\Factories\ModelFactory;
10 use Give\Framework\Support\ValueObjects\Money;
11 use Give\Subscriptions\Models\Subscription;
12 use Give\Subscriptions\ValueObjects\SubscriptionPeriod;
13 use Give\Subscriptions\ValueObjects\SubscriptionStatus;
14
15 class SubscriptionFactory extends ModelFactory
16 {
17
18 /**
19 * @since 2.20.0 update default donorId to create factory
20 * @since 2.19.6
21 *
22 * @return array
23 * @throws Exception
24 */
25 public function definition()
26 {
27 return [
28 'amount' => new Money($this->faker->numberBetween(25, 50000), 'USD'),
29 'period' => SubscriptionPeriod::MONTH(),
30 'frequency' => $this->faker->numberBetween(1, 4),
31 'donorId' => Donor::factory()->create()->id,
32 'installments' => $this->faker->numberBetween(0, 12),
33 'feeAmountRecovered' => new Money(0, 'USD'),
34 'status' => SubscriptionStatus::PENDING(),
35 'donationFormId' => 1
36 ];
37 }
38
39 /**
40 * @since 2.19.6
41 *
42 * @throws Exception
43 */
44 public function createRenewal($subscriptionId, array $attributes = [])
45 {
46 return Donation::factory()->create(
47 array_merge([
48 'status' => DonationStatus::RENEWAL(),
49 'subscriptionId' => $subscriptionId,
50 'parentId' => give()->subscriptions->getInitialDonationId($subscriptionId),
51 ], $attributes)
52 );
53 }
54
55 /**
56 * @since 2.19.6
57 *
58 * @param $model
59 * @return void
60 * @throws Exception
61 */
62 public function afterCreating($model)
63 {
64 /** @var Subscription $subscription */
65 $subscription = $model;
66
67 // check if initial donation ID (parent_payment_id has been recorded
68 $initialDonationId = give()->subscriptions->getInitialDonationId($subscription->id);
69
70 // for backwards compatability update the subscription parent_payment_id column
71 if (!$initialDonationId) {
72 $donation = Donation::factory()->create(['donorId' => $subscription->donorId]);
73 give()->donations->updateLegacyDonationMetaAsInitialSubscriptionDonation($donation->id);
74 give()->subscriptions->updateLegacyColumns(
75 $subscription->id,
76 [
77 'parent_payment_id' => $donation->id,
78 'expiration' => $subscription->expiration()
79 ]
80 );
81 $subscription->gatewayId = $donation->gatewayId;
82 }
83 }
84 }
85