PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.0
GiveWP – Donation Plugin and Fundraising Platform v2.27.0
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 3 years ago
DonationQueryData.php
202 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 2.23.0 remove parentId property
19 * @since 2.19.6
20 */
21 final class DonationQueryData
22 {
23 /**
24 * @var Money
25 */
26 public $amount;
27 /**
28 * @var string
29 */
30 public $exchangeRate;
31 /**
32 * @var Money
33 */
34 public $feeAmountRecovered;
35 /**
36 * @var int
37 */
38 public $donorId;
39 /**
40 * @var string
41 */
42 public $firstName;
43 /**
44 * @var string
45 */
46 public $lastName;
47 /**
48 * @var string
49 */
50 public $email;
51 /**
52 * @var int
53 */
54 public $id;
55 /**
56 * @var DonationStatus
57 */
58 public $status;
59 /**
60 * @var int
61 */
62 public $subscriptionId;
63 /**
64 * @var DateTime
65 */
66 public $updatedAt;
67 /**
68 * @var DateTime
69 */
70 public $createdAt;
71 /**
72 * @var string
73 */
74 public $gatewayId;
75 /**
76 * @var DonationMode
77 */
78 public $mode;
79 /**
80 * @var DonationType
81 */
82 public $type;
83 /**
84 * @var int
85 */
86 public $formId;
87 /**
88 * @var BillingAddress
89 */
90 public $billingAddress;
91 /**
92 * @var string
93 */
94 public $formTitle;
95 /**
96 * @var string
97 */
98 public $purchaseKey;
99 /**
100 * @var string
101 */
102 public $donorIp;
103 /**
104 * @var bool
105 */
106 public $anonymous;
107 /**
108 * @var int
109 */
110 public $levelId;
111 /**
112 * @var string
113 */
114 public $gatewayTransactionId;
115 /**
116 * @var string|null
117 */
118 public $company;
119 /**
120 * @var string|null
121 */
122 public $comment;
123
124 /**
125 * Convert data from object to Donation
126 *
127 * @since 2.23.0 remove parentId property
128 * @since 2.22.0 add support for company field
129 * @since 2.20.0 update for new amount property, fee amount recovered, and exchange rate
130 * @since 2.19.6
131 *
132 * @param object $donationQueryObject
133 *
134 * @return self
135 */
136 public static function fromObject($donationQueryObject): self
137 {
138 $self = new static();
139
140 $currency = $donationQueryObject->{DonationMetaKeys::CURRENCY()->getKeyAsCamelCase()};
141 $feeAmountRecovered = $donationQueryObject->{DonationMetaKeys::FEE_AMOUNT_RECOVERED()->getKeyAsCamelCase()};
142
143 $self->id = (int)$donationQueryObject->id;
144 $self->formId = (int)$donationQueryObject->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
145 $self->formTitle = $donationQueryObject->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
146 $self->amount = Money::fromDecimal(
147 $donationQueryObject->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()},
148 $currency
149 );
150 $self->feeAmountRecovered = $feeAmountRecovered ? Money::fromDecimal($feeAmountRecovered, $currency) : null;
151 $self->exchangeRate = $donationQueryObject->{DonationMetaKeys::EXCHANGE_RATE()->getKeyAsCamelCase()};
152 $self->donorId = (int)$donationQueryObject->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
153 $self->firstName = $donationQueryObject->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase()};
154 $self->lastName = $donationQueryObject->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
155 $self->email = $donationQueryObject->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
156 $self->gatewayId = $donationQueryObject->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()};
157 $self->createdAt = Temporal::toDateTime($donationQueryObject->createdAt);
158 $self->updatedAt = Temporal::toDateTime($donationQueryObject->updatedAt);
159 $self->status = new DonationStatus($donationQueryObject->status);
160 $self->subscriptionId = (int)$donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()};
161 $self->mode = new DonationMode($donationQueryObject->{DonationMetaKeys::MODE()->getKeyAsCamelCase()});
162 $self->billingAddress = BillingAddress::fromArray([
163 'country' => $donationQueryObject->{DonationMetaKeys::BILLING_COUNTRY()->getKeyAsCamelCase()},
164 'city' => $donationQueryObject->{DonationMetaKeys::BILLING_CITY()->getKeyAsCamelCase()},
165 'state' => $donationQueryObject->{DonationMetaKeys::BILLING_STATE()->getKeyAsCamelCase()},
166 'zip' => $donationQueryObject->{DonationMetaKeys::BILLING_ZIP()->getKeyAsCamelCase()},
167 'address1' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS1()->getKeyAsCamelCase()},
168 'address2' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS2()->getKeyAsCamelCase()},
169 ]);
170 $self->purchaseKey = $donationQueryObject->{DonationMetaKeys::PURCHASE_KEY()->getKeyAsCamelCase()};
171 $self->donorIp = $donationQueryObject->{DonationMetaKeys::DONOR_IP()->getKeyAsCamelCase()};
172 $self->anonymous = (bool)$donationQueryObject->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
173 $self->levelId = (string)$donationQueryObject->{DonationMetaKeys::LEVEL_ID()->getKeyAsCamelCase()};
174 $self->gatewayTransactionId = $donationQueryObject->{DonationMetaKeys::GATEWAY_TRANSACTION_ID()
175 ->getKeyAsCamelCase()};
176 $self->company = $donationQueryObject->{DonationMetaKeys::COMPANY()
177 ->getKeyAsCamelCase()};
178 $self->comment = $donationQueryObject->{DonationMetaKeys::COMMENT()
179 ->getKeyAsCamelCase()};
180
181 if (!empty($donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()})) {
182 $self->type = DonationType::SUBSCRIPTION();
183 } elseif ($self->subscriptionId) {
184 $self->type = DonationType::RENEWAL();
185 } else {
186 $self->type = DonationType::SINGLE();
187 }
188
189 return $self;
190 }
191
192 /**
193 * Convert DTO to Donation
194 */
195 public function toDonation(): Donation
196 {
197 $attributes = get_object_vars($this);
198
199 return new Donation($attributes);
200 }
201 }
202