PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.18.0
GiveWP – Donation Plugin and Fundraising Platform v4.18.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 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 All 257 releases
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Responses / Credit / LedgerPage.php

LedgerPage.php in GiveWP – Donation Plugin and Fundraising Platform 4.18.0, at vendor/vendor-prefixed/stellarwp/licensing-api-client/src/Responses/Credit/LedgerPage.php

149 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit;
4
5 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Contracts\Response;
6 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\ValueObjects\LedgerEntry;
7 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\ValueObjects\PageMeta;
8 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\ValueObjects\PaginationLinks;
9
10 /**
11 * Represents a cursor-paginated credits ledger response.
12 *
13 * @implements Response<array{
14 * entries: list<array{
15 * id: int,
16 * pool_id: int,
17 * entitlement_id_at_event: int,
18 * tier_at_event: string,
19 * domain: string,
20 * product_slug: string,
21 * credit_type: string,
22 * entry_type: string,
23 * amount: int,
24 * period_start: string|null,
25 * idempotency_key: string,
26 * created_at: string
27 * }>,
28 * links: array{
29 * first: string,
30 * last: string|null,
31 * prev: string|null,
32 * next: string|null
33 * },
34 * meta: array{
35 * page: array{
36 * total: int,
37 * limit: int,
38 * max_size: int
39 * }
40 * }
41 * }>
42 */
43 final class LedgerPage implements Response
44 {
45 /**
46 * @var list<LedgerEntry>
47 */
48 public array $entries;
49
50 public PaginationLinks $links;
51
52 public PageMeta $page;
53
54 /**
55 * @param list<LedgerEntry> $entries
56 */
57 private function __construct(array $entries, PaginationLinks $links, PageMeta $page) {
58 $this->entries = $entries;
59 $this->links = $links;
60 $this->page = $page;
61 }
62
63 /**
64 * @param array{
65 * entries: list<array{
66 * id: int,
67 * pool_id: int,
68 * entitlement_id_at_event: int,
69 * tier_at_event: string,
70 * domain: string,
71 * product_slug: string,
72 * credit_type: string,
73 * entry_type: string,
74 * amount: int,
75 * period_start: string|null,
76 * idempotency_key: string,
77 * created_at: string
78 * }>,
79 * links: array{
80 * first: string,
81 * last: string|null,
82 * prev: string|null,
83 * next: string|null
84 * },
85 * meta: array{
86 * page: array{
87 * total: int,
88 * limit: int,
89 * max_size: int
90 * }
91 * }
92 * } $attributes
93 */
94 public static function from(array $attributes): self {
95 return new self(
96 array_map(
97 static fn (array $entry): LedgerEntry => LedgerEntry::from($entry),
98 $attributes['entries']
99 ),
100 PaginationLinks::from($attributes['links']),
101 PageMeta::from($attributes['meta']['page'])
102 );
103 }
104
105 /**
106 * @return array{
107 * entries: list<array{
108 * id: int,
109 * pool_id: int,
110 * entitlement_id_at_event: int,
111 * tier_at_event: string,
112 * domain: string,
113 * product_slug: string,
114 * credit_type: string,
115 * entry_type: string,
116 * amount: int,
117 * period_start: string|null,
118 * idempotency_key: string,
119 * created_at: string
120 * }>,
121 * links: array{
122 * first: string,
123 * last: string|null,
124 * prev: string|null,
125 * next: string|null
126 * },
127 * meta: array{
128 * page: array{
129 * total: int,
130 * limit: int,
131 * max_size: int
132 * }
133 * }
134 * }
135 */
136 public function toArray(): array {
137 return [
138 'entries' => array_map(
139 static fn (LedgerEntry $entry): array => $entry->toArray(),
140 $this->entries
141 ),
142 'links' => $this->links->toArray(),
143 'meta' => [
144 'page' => $this->page->toArray(),
145 ],
146 ];
147 }
148 }
149