PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.1
GiveWP – Donation Plugin and Fundraising Platform v2.22.1
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 / TestData / Addons / RecurringDonations / RecurringDonationFactory.php
give / src / TestData / Addons / RecurringDonations Last commit date
PageFactory.php 4 years ago PageSeedCommand.php 4 years ago RecurringDonationFactory.php 4 years ago RecurringDonationRepository.php 4 years ago RecurringDonations.php 4 years ago ServiceProvider.php 4 years ago
RecurringDonationFactory.php
195 lines
1 <?php
2
3 namespace Give\TestData\Addons\RecurringDonations;
4
5 use DateInterval;
6 use DateTime;
7 use Exception;
8 use Give\TestData\Framework\Factory;
9
10 /**
11 * Class RecurringDonationFactory
12 * @package Give\TestData\RecurringDonations
13 */
14 class RecurringDonationFactory extends Factory
15 {
16
17 /**
18 * @var int
19 */
20 private $customerId;
21
22 /**
23 * @var int
24 */
25 private $amount;
26
27 /**
28 * @var int
29 */
30 private $parentId;
31
32 /**
33 * @var int
34 */
35 private $productId;
36
37 /**
38 * @param int $id
39 */
40 public function setCustomerId($id)
41 {
42 $this->customerId = $id;
43 }
44
45 /**
46 * @return int
47 */
48 public function getCustomerId()
49 {
50 if (is_null($this->customerId) || ! $this->customerId) {
51 return $this->randomDonor();
52 }
53
54 return $this->customerId;
55 }
56
57 /**
58 * @return string[]
59 */
60 public function getPeriods()
61 {
62 return [
63 'day' => 'P1D',
64 'week' => 'P1W',
65 'month' => 'P1M',
66 'quarter' => 'P3M',
67 'year' => 'P1Y',
68 ];
69 }
70
71 /**
72 * @return string
73 */
74 public function getRandomPeriod()
75 {
76 return $this->faker->randomElement(array_keys($this->getPeriods()));
77 }
78
79 /**
80 * @param string $period
81 *
82 * @return string
83 */
84 public function getIntervalForPeriod($period)
85 {
86 $periods = $this->getPeriods();
87
88 return $periods[$period];
89 }
90
91 /**
92 * @param int $amount
93 */
94 public function setAmount($amount)
95 {
96 $this->amount = $amount;
97 }
98
99 /**
100 * @return mixed
101 */
102 public function getAmount()
103 {
104 if (is_null($this->amount) || ! $this->amount) {
105 return $this->randomAmount();
106 }
107
108 return $this->amount;
109 }
110
111 /**
112 * @param int $id
113 */
114 public function setParentDonationId($id)
115 {
116 $this->parentId = $id;
117 }
118
119 /**
120 * @return int
121 */
122 public function getParentDonationId()
123 {
124 if (is_null($this->parentId) || ! $this->parentId) {
125 return $this->randomDonation();
126 }
127
128 return $this->parentId;
129 }
130
131 /**
132 * @return string
133 */
134 public function getRandomStatus()
135 {
136 // Remove expired
137 $statuses = array_filter(
138 give_recurring_get_subscription_statuses_key(),
139 function ($status) {
140 return ('expired' !== $status);
141 }
142 );
143
144 return $this->faker->randomElement($statuses);
145 }
146
147 /**
148 * @param int $id
149 */
150 public function setProductId($id)
151 {
152 $this->productId = $id;
153 }
154
155 /**
156 * @return int
157 */
158 public function getProductId()
159 {
160 if (is_null($this->productId) || ! $this->productId) {
161 return $this->randomDonationForm();
162 }
163
164 return $this->productId;
165 }
166
167 /**
168 * @return array
169 * @throws Exception
170 */
171 public function definition()
172 {
173 $amount = $this->getAmount();
174 $period = $this->getRandomPeriod();
175 $date_created = $this->faker->dateTimeThisYear()->format('Y-m-d H:i:s');
176 $date_expire = new DateTime($date_created);
177
178 // Set the correct expiration date
179 $date_expire->add(new DateInterval($this->getIntervalForPeriod($period)));
180
181 return [
182 'customer_id' => $this->getCustomerId(),
183 'period' => $period,
184 'frequency' => 1,
185 'initial_amount' => $amount,
186 'recurring_amount' => $amount,
187 'parent_payment_id' => $this->getParentDonationId(),
188 'product_id' => $this->getProductId(),
189 'created' => $date_created,
190 'expiration' => $date_expire->format('Y-m-d H:i:s'),
191 'status' => $this->getRandomStatus(),
192 ];
193 }
194 }
195