PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.12.2
GiveWP – Donation Plugin and Fundraising Platform v3.12.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 / Donations / DataTransferObjects / DonationQueryData.php
give / src / Donations / DataTransferObjects Last commit date
DonationQueryData.php 2 years ago
DonationQueryData.php
216 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 /**
134 * Convert data from object to Donation
135 *
136 * @since 3.9.0 Add support for "phone" property
137 * @since 3.2.0 add fallback for donation mode
138 * @since 2.23.0 remove parentId property
139 * @since 2.22.0 add support for company field
140 * @since 2.20.0 update for new amount property, fee amount recovered, and exchange rate
141 * @since 2.19.6
142 *
143 * @param object $donationQueryObject
144 *
145 * @return self
146 */
147 public static function fromObject($donationQueryObject): self
148 {
149 $self = new static();
150
151 $currency = $donationQueryObject->{DonationMetaKeys::CURRENCY()->getKeyAsCamelCase()};
152 $feeAmountRecovered = $donationQueryObject->{DonationMetaKeys::FEE_AMOUNT_RECOVERED()->getKeyAsCamelCase()};
153 $donationMode = $donationQueryObject->{DonationMetaKeys::MODE()->getKeyAsCamelCase()};
154
155 $self->id = (int)$donationQueryObject->id;
156 $self->formId = (int)$donationQueryObject->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
157 $self->formTitle = $donationQueryObject->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
158 $self->amount = Money::fromDecimal(
159 $donationQueryObject->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()},
160 $currency
161 );
162 $self->feeAmountRecovered = $feeAmountRecovered ? Money::fromDecimal($feeAmountRecovered, $currency) : null;
163 $self->exchangeRate = $donationQueryObject->{DonationMetaKeys::EXCHANGE_RATE()->getKeyAsCamelCase()};
164 $self->donorId = (int)$donationQueryObject->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
165 $self->honorific = $donationQueryObject->{DonationMetaKeys::HONORIFIC()->getKeyAsCamelCase()};
166 $self->firstName = $donationQueryObject->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase()};
167 $self->lastName = $donationQueryObject->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
168 $self->email = $donationQueryObject->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
169 $self->phone = $donationQueryObject->{DonationMetaKeys::PHONE()->getKeyAsCamelCase()};
170 $self->gatewayId = $donationQueryObject->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()};
171 $self->createdAt = Temporal::toDateTime($donationQueryObject->createdAt);
172 $self->updatedAt = Temporal::toDateTime($donationQueryObject->updatedAt);
173 $self->status = new DonationStatus($donationQueryObject->status);
174 $self->subscriptionId = (int)$donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()};
175 $self->mode = DonationMode::isValid($donationMode) ? new DonationMode($donationMode) : DonationMode::LIVE();
176 $self->billingAddress = BillingAddress::fromArray([
177 'country' => $donationQueryObject->{DonationMetaKeys::BILLING_COUNTRY()->getKeyAsCamelCase()},
178 'city' => $donationQueryObject->{DonationMetaKeys::BILLING_CITY()->getKeyAsCamelCase()},
179 'state' => $donationQueryObject->{DonationMetaKeys::BILLING_STATE()->getKeyAsCamelCase()},
180 'zip' => $donationQueryObject->{DonationMetaKeys::BILLING_ZIP()->getKeyAsCamelCase()},
181 'address1' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS1()->getKeyAsCamelCase()},
182 'address2' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS2()->getKeyAsCamelCase()},
183 ]);
184 $self->purchaseKey = $donationQueryObject->{DonationMetaKeys::PURCHASE_KEY()->getKeyAsCamelCase()};
185 $self->donorIp = $donationQueryObject->{DonationMetaKeys::DONOR_IP()->getKeyAsCamelCase()};
186 $self->anonymous = (bool)$donationQueryObject->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
187 $self->levelId = (string)$donationQueryObject->{DonationMetaKeys::LEVEL_ID()->getKeyAsCamelCase()};
188 $self->gatewayTransactionId = $donationQueryObject->{DonationMetaKeys::GATEWAY_TRANSACTION_ID()
189 ->getKeyAsCamelCase()};
190 $self->company = $donationQueryObject->{DonationMetaKeys::COMPANY()
191 ->getKeyAsCamelCase()};
192 $self->comment = $donationQueryObject->{DonationMetaKeys::COMMENT()
193 ->getKeyAsCamelCase()};
194
195 if (!empty($donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()})) {
196 $self->type = DonationType::SUBSCRIPTION();
197 } elseif ($self->subscriptionId) {
198 $self->type = DonationType::RENEWAL();
199 } else {
200 $self->type = DonationType::SINGLE();
201 }
202
203 return $self;
204 }
205
206 /**
207 * Convert DTO to Donation
208 */
209 public function toDonation(): Donation
210 {
211 $attributes = get_object_vars($this);
212
213 return new Donation($attributes);
214 }
215 }
216