PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.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 3 years ago DonationResponseData.php 3 years ago
DonationQueryData.php
196 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 /**
121 * Convert data from object to Donation
122 *
123 * @since 2.23.0 remove parentId property
124 * @since 2.22.0 add support for company field
125 * @since 2.20.0 update for new amount property, fee amount recovered, and exchange rate
126 * @since 2.19.6
127 *
128 * @param object $donationQueryObject
129 *
130 * @return self
131 */
132 public static function fromObject($donationQueryObject): self
133 {
134 $self = new static();
135
136 $currency = $donationQueryObject->{DonationMetaKeys::CURRENCY()->getKeyAsCamelCase()};
137 $feeAmountRecovered = $donationQueryObject->{DonationMetaKeys::FEE_AMOUNT_RECOVERED()->getKeyAsCamelCase()};
138
139 $self->id = (int)$donationQueryObject->id;
140 $self->formId = (int)$donationQueryObject->{DonationMetaKeys::FORM_ID()->getKeyAsCamelCase()};
141 $self->formTitle = $donationQueryObject->{DonationMetaKeys::FORM_TITLE()->getKeyAsCamelCase()};
142 $self->amount = Money::fromDecimal(
143 $donationQueryObject->{DonationMetaKeys::AMOUNT()->getKeyAsCamelCase()},
144 $currency
145 );
146 $self->feeAmountRecovered = $feeAmountRecovered ? Money::fromDecimal($feeAmountRecovered, $currency) : null;
147 $self->exchangeRate = $donationQueryObject->{DonationMetaKeys::EXCHANGE_RATE()->getKeyAsCamelCase()};
148 $self->donorId = (int)$donationQueryObject->{DonationMetaKeys::DONOR_ID()->getKeyAsCamelCase()};
149 $self->firstName = $donationQueryObject->{DonationMetaKeys::FIRST_NAME()->getKeyAsCamelCase()};
150 $self->lastName = $donationQueryObject->{DonationMetaKeys::LAST_NAME()->getKeyAsCamelCase()};
151 $self->email = $donationQueryObject->{DonationMetaKeys::EMAIL()->getKeyAsCamelCase()};
152 $self->gatewayId = $donationQueryObject->{DonationMetaKeys::GATEWAY()->getKeyAsCamelCase()};
153 $self->createdAt = Temporal::toDateTime($donationQueryObject->createdAt);
154 $self->updatedAt = Temporal::toDateTime($donationQueryObject->updatedAt);
155 $self->status = new DonationStatus($donationQueryObject->status);
156 $self->subscriptionId = (int)$donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_ID()->getKeyAsCamelCase()};
157 $self->mode = new DonationMode($donationQueryObject->{DonationMetaKeys::MODE()->getKeyAsCamelCase()});
158 $self->billingAddress = BillingAddress::fromArray([
159 'country' => $donationQueryObject->{DonationMetaKeys::BILLING_COUNTRY()->getKeyAsCamelCase()},
160 'city' => $donationQueryObject->{DonationMetaKeys::BILLING_CITY()->getKeyAsCamelCase()},
161 'state' => $donationQueryObject->{DonationMetaKeys::BILLING_STATE()->getKeyAsCamelCase()},
162 'zip' => $donationQueryObject->{DonationMetaKeys::BILLING_ZIP()->getKeyAsCamelCase()},
163 'address1' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS1()->getKeyAsCamelCase()},
164 'address2' => $donationQueryObject->{DonationMetaKeys::BILLING_ADDRESS2()->getKeyAsCamelCase()},
165 ]);
166 $self->purchaseKey = $donationQueryObject->{DonationMetaKeys::PURCHASE_KEY()->getKeyAsCamelCase()};
167 $self->donorIp = $donationQueryObject->{DonationMetaKeys::DONOR_IP()->getKeyAsCamelCase()};
168 $self->anonymous = (bool)$donationQueryObject->{DonationMetaKeys::ANONYMOUS()->getKeyAsCamelCase()};
169 $self->levelId = (string)$donationQueryObject->{DonationMetaKeys::LEVEL_ID()->getKeyAsCamelCase()};
170 $self->gatewayTransactionId = $donationQueryObject->{DonationMetaKeys::GATEWAY_TRANSACTION_ID()
171 ->getKeyAsCamelCase()};
172 $self->company = $donationQueryObject->{DonationMetaKeys::COMPANY()
173 ->getKeyAsCamelCase()};
174
175 if (!empty($donationQueryObject->{DonationMetaKeys::SUBSCRIPTION_INITIAL_DONATION()->getKeyAsCamelCase()})) {
176 $self->type = DonationType::SUBSCRIPTION();
177 } elseif ($self->subscriptionId) {
178 $self->type = DonationType::RENEWAL();
179 } else {
180 $self->type = DonationType::SINGLE();
181 }
182
183 return $self;
184 }
185
186 /**
187 * Convert DTO to Donation
188 */
189 public function toDonation(): Donation
190 {
191 $attributes = get_object_vars($this);
192
193 return new Donation($attributes);
194 }
195 }
196