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 / EventTickets / Models / EventTicketType.php
give / src / EventTickets / Models Last commit date
Event.php 2 years ago EventTicket.php 11 months ago EventTicketType.php 2 years ago
EventTicketType.php
158 lines
1 <?php
2
3 namespace Give\EventTickets\Models;
4
5 use DateTime;
6 use Give\EventTickets\Factories\EventTicketTypeFactory;
7 use Give\EventTickets\Repositories\EventRepository;
8 use Give\EventTickets\Repositories\EventTicketRepository;
9 use Give\EventTickets\Repositories\EventTicketTypeRepository;
10 use Give\Framework\Exceptions\Primitives\Exception;
11 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
12 use Give\Framework\Models\Contracts\ModelCrud;
13 use Give\Framework\Models\Model;
14 use Give\Framework\Models\ModelQueryBuilder;
15 use Give\Framework\Models\ValueObjects\Relationship;
16 use Give\Framework\Support\Facades\DateTime\Temporal;
17 use Give\Framework\Support\ValueObjects\Money;
18
19 /**
20 * @since 3.6.0
21 */
22 class EventTicketType extends Model implements ModelCrud /*, ModelHasFactory */
23 {
24 /**
25 * @inheritdoc
26 */
27 protected $properties = [
28 'id' => 'int',
29 'eventId' => 'int',
30 'title' => 'string',
31 'description' => 'string',
32 'price' => Money::class,
33 'capacity' => 'int',
34 'createdAt' => DateTime::class,
35 'updatedAt' => DateTime::class,
36 ];
37
38 /**
39 * @inheritdoc
40 */
41 protected $relationships = [
42 'event' => Relationship::BELONGS_TO,
43 'eventTickets' => Relationship::HAS_MANY,
44 ];
45
46 /**
47 * @since 3.6.0
48 */
49 public static function find($id): ?EventTicketType
50 {
51 return give(EventTicketTypeRepository::class)->getById($id);
52 }
53
54 /**
55 * @since 3.6.0
56 */
57 public static function findByEvent($eventId): ModelQueryBuilder
58 {
59 return give(EventTicketTypeRepository::class)->queryByEventId($eventId);
60 }
61
62 /**
63 * @since 3.6.0
64 *
65 * @throws Exception|InvalidArgumentException
66 */
67 public static function create(array $attributes): EventTicketType
68 {
69 $event = new static($attributes);
70
71 give(EventTicketTypeRepository::class)->insert($event);
72
73 return $event;
74 }
75
76 /**
77 * @since 3.6.0
78 *
79 * @throws Exception|InvalidArgumentException
80 */
81 public function save(): void
82 {
83 if (!$this->id) {
84 give(EventTicketTypeRepository::class)->insert($this);
85 } else{
86 give(EventTicketTypeRepository::class)->update($this);
87 }
88 }
89
90 /**
91 * @since 3.6.0
92 *
93 * @throws Exception|InvalidArgumentException
94 */
95 public function delete(): bool
96 {
97 return give(EventTicketTypeRepository::class)->delete($this);
98 }
99
100 /**
101 * @since 3.6.0
102 *
103 * @return ModelQueryBuilder<EventTicketType>
104 */
105 public static function query(): ModelQueryBuilder
106 {
107 return give(EventTicketTypeRepository::class)->prepareQuery();
108 }
109
110 /**
111 * @since 3.6.0
112 *
113 * @return ModelQueryBuilder<Event>
114 */
115 public function event(): ModelQueryBuilder
116 {
117 return give(EventRepository::class)->queryById($this->eventId);
118 }
119
120
121 /**
122 * @since 3.6.0
123 *
124 * @return ModelQueryBuilder<EventTicket>
125 */
126 public function eventTickets(): ModelQueryBuilder
127 {
128 return give(EventTicketRepository::class)->queryByTicketTypeId($this->id);
129 }
130
131 /**
132 * @since 3.6.0
133 *
134 * @param object $object
135 */
136 public static function fromQueryBuilderObject($object): EventTicketType
137 {
138 return new EventTicketType([
139 'id' => (int)$object->id,
140 'eventId' => (int)$object->event_id,
141 'title' => $object->title,
142 'description' => $object->description,
143 'price' => new Money($object->price, give_get_currency()),
144 'capacity' => (int)$object->capacity,
145 'createdAt' => Temporal::toDateTime($object->created_at),
146 'updatedAt' => Temporal::toDateTime($object->updated_at),
147 ]);
148 }
149
150 /**
151 * @since 3.6.0
152 */
153 public static function factory(): EventTicketTypeFactory
154 {
155 return new EventTicketTypeFactory(static::class);
156 }
157 }
158