PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / Donations / DataTransferObjects / DonationQueryData.php
give / src / Donations / DataTransferObjects Last commit date
DonationQueryData.php 7 months ago
DonationQueryData.php
223 lines
1 <?php
2
3 namespace Give\Donations\DataTransferObjects;
4
5 use DateTime;
6 use Give\Donations\Models\Donation;
7 use Give\Donations\Properties\BillingAddress;
8 use Give\Donations\ValueObjects\DonationMetaKeys;
9 use Give\Donations\ValueObjects\DonationMode;
10 use Give\Donations\ValueObjects\DonationStatus;
11 use Give\Donations\ValueObjects\DonationType;
12 use Give\Framework\Support\Facades\DateTime\Temporal;
13 use Give\Framework\Support\ValueObjects\Money;
14
15 /**
16 * Class DonationData
17 *
18 * @since 3.2.0 added honorific property
19 * @since 2.23.0 remove parentId property
20 * @since 2.19.6
21 */
22 final class DonationQueryData
23 {
24 /**
25 * @var Money
26 */
27 public $amount;
28 /**
29 * @var string
30 */
31 public $exchangeRate;
32 /**
33 * @var Money
34 */
35 public $feeAmountRecovered;
36 /**
37 * @var int
38 */
39 public $donorId;
40 /**
41 * @var string
42 */
43 public $firstName;
44 /**
45 * @var string
46 */
47 public $lastName;
48 /**
49 * @var string
50 */
51 public $email;
52 /**
53 * @var string
54 */
55 public $phone;
56 /**
57 * @var int
58 */
59 public $id;
60 /**
61 * @var DonationStatus
62 */
63 public $status;
64 /**
65 * @var int
66 */
67 public $subscriptionId;
68 /**
69 * @var DateTime
70 */
71 public $updatedAt;
72 /**
73 * @var DateTime
74 */
75 public $createdAt;
76 /**
77 * @var string
78 */
79 public $gatewayId;
80 /**
81 * @var DonationMode
82 */
83 public $mode;
84 /**
85 * @var DonationType
86 */
87 public $type;
88 /**
89 * @var int
90 */
91 public $formId;
92 /**
93 * @var BillingAddress
94 */
95 public $billingAddress;
96 /**
97 * @var string
98 */
99 public $formTitle;
100 /**
101 * @var string
102 */
103 public $purchaseKey;
104 /**
105 * @var string
106 */
107 public $donorIp;
108 /**
109 * @var bool
110 */
111 public $anonymous;
112 /**
113 * @var int
114 */
115 public $levelId;
116 /**
117 * @var string
118 */
119 public $gatewayTransactionId;
120 /**
121 * @var string|null
122 */
123 public $company;
124 /**
125 * @var string|null
126 */
127 public $comment;
128 /**
129 * @var string|null
130 */
131 public $honorific;
132 /**
133 * @var int
134 */
135 public $campaignId;
136
137 /**
138 * Convert data from object to Donation
139 *
140 * @since 4.13.0 prevent fatal error when status is not valid
141 * @since 4.0.0 Added campaignId property
142 * @since 3.9.0 Add support for "phone" property
143 * @since 3.2.0 add fallback for donation mode
144 * @since 2.23.0 remove parentId property
145 * @since 2.22.0 add support for company field
146 * @since 2.20.0 update for new amount property, fee amount recovered, and exchange rate
147 * @since 2.19.6
148 *
149 * @param object $donationQueryObject
150 *
151 * @return self
152 */
153 public static function fromObject($donationQueryObject): self
154 {
155 $self = new static();
156
157 $currency = $donationQueryObject->{DonationMetaKeys::CURRENCY()->getKeyAsCamelCase()};
158 $feeAmountRecovered = $donationQueryObject->{DonationMetaKeys::FEE_AMOUNT_RECOVERED()->getKeyAsCamelCase()};
159 $donationMode = $donationQueryObject->{DonationMetaKeys::MODE()->getKeyAsCamelCase()};
160
161 $self->id = (int)$donationQueryObject->id;
162 $self->formId = (int)$donationQueryObject->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
163 $self->formTitle = $donationQueryObject->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
164 $self->amount = Money::fromDecimal(
165 $donationQueryObject->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()},
166 $currency
167 );
168 $self->feeAmountRecovered = $feeAmountRecovered ? Money::fromDecimal($feeAmountRecovered, $currency) : null;
169 $self->exchangeRate = $donationQueryObject->{DonationMetaKeys::EXCHANGE_RATE()->getKeyAsCamelCase()};
170 $self->donorId = (int)$donationQueryObject->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
171 $self->honorific = $donationQueryObject->{DonationMetaKeys::HONORIFIC()->getKeyAsCamelCase()};
172 $self->firstName = $donationQueryObject->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase()};
173 $self->lastName = $donationQueryObject->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
174 $self->email = $donationQueryObject->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
175 $self->phone = $donationQueryObject->{DonationMetaKeys::PHONE()->getKeyAsCamelCase()};
176 $self->gatewayId = $donationQueryObject->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()};
177 $self->createdAt = Temporal::toDateTime($donationQueryObject->createdAt);
178 $self->updatedAt = Temporal::toDateTime($donationQueryObject->updatedAt);
179 $self->status = new DonationStatus(DonationStatus::isValid($donationQueryObject->status) ? $donationQueryObject->status : DonationStatus::PENDING);
180 $self->subscriptionId = (int)$donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()};
181 $self->mode = DonationMode::isValid($donationMode) ? new DonationMode($donationMode) : DonationMode::LIVE();
182 $self->billingAddress = BillingAddress::fromArray([
183 'country' => $donationQueryObject->{DonationMetaKeys::BILLING_COUNTRY()->getKeyAsCamelCase()},
184 'city' => $donationQueryObject->{DonationMetaKeys::BILLING_CITY()->getKeyAsCamelCase()},
185 'state' => $donationQueryObject->{DonationMetaKeys::BILLING_STATE()->getKeyAsCamelCase()},
186 'zip' => $donationQueryObject->{DonationMetaKeys::BILLING_ZIP()->getKeyAsCamelCase()},
187 'address1' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS1()->getKeyAsCamelCase()},
188 'address2' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS2()->getKeyAsCamelCase()},
189 ]);
190 $self->purchaseKey = $donationQueryObject->{DonationMetaKeys::PURCHASE_KEY()->getKeyAsCamelCase()};
191 $self->donorIp = $donationQueryObject->{DonationMetaKeys::DONOR_IP()->getKeyAsCamelCase()};
192 $self->anonymous = (bool)$donationQueryObject->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
193 $self->levelId = (string)$donationQueryObject->{DonationMetaKeys::LEVEL_ID()->getKeyAsCamelCase()};
194 $self->gatewayTransactionId = $donationQueryObject->{DonationMetaKeys::GATEWAY_TRANSACTION_ID()
195 ->getKeyAsCamelCase()};
196 $self->company = $donationQueryObject->{DonationMetaKeys::COMPANY()
197 ->getKeyAsCamelCase()};
198 $self->comment = $donationQueryObject->{DonationMetaKeys::COMMENT()
199 ->getKeyAsCamelCase()};
200 $self->campaignId = (int)$donationQueryObject->{DonationMetaKeys::CAMPAIGN_ID()->getKeyAsCamelCase()};
201
202 if (!empty($donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()})) {
203 $self->type = DonationType::SUBSCRIPTION();
204 } elseif ($self->subscriptionId) {
205 $self->type = DonationType::RENEWAL();
206 } else {
207 $self->type = DonationType::SINGLE();
208 }
209
210 return $self;
211 }
212
213 /**
214 * Convert DTO to Donation
215 */
216 public function toDonation(): Donation
217 {
218 $attributes = get_object_vars($this);
219
220 return new Donation($attributes);
221 }
222 }
223