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