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 / Donors / Models / DonorNote.php
give / src / Donors / Models Last commit date
Donor.php 1 year ago DonorModelQueryBuilder.php 1 year ago DonorNote.php 1 year ago
DonorNote.php
136 lines
1 <?php
2
3 namespace Give\Donors\Models;
4
5 use DateTime;
6 use Exception;
7 use Give\Donors\Factories\DonorNoteFactory;
8 use Give\Donors\ValueObjects\DonorNoteType;
9 use Give\Framework\Models\Contracts\ModelCrud;
10 use Give\Framework\Models\Contracts\ModelHasFactory;
11 use Give\Framework\Models\Model;
12 use Give\Framework\Models\ModelQueryBuilder;
13 use Give\Framework\Models\ValueObjects\Relationship;
14 use Give\Framework\Support\Facades\DateTime\Temporal;
15
16 /**
17 * @since 4.4.0
18 *
19 * @property int $id
20 * @property int $donorId
21 * @property string $content
22 * @property DonorNoteType $type
23 * @property DateTime $createdAt
24 * @property Donor $donor
25 */
26 class DonorNote extends Model implements ModelCrud, ModelHasFactory
27 {
28 /**
29 * @inheritdoc
30 */
31 protected $properties = [
32 'id' => 'int',
33 'donorId' => 'int',
34 'content' => 'string',
35 'type' => DonorNoteType::class,
36 'createdAt' => DateTime::class,
37 ];
38
39 /**
40 * @inheritdoc
41 */
42 protected $relationships = [
43 'donor' => Relationship::BELONGS_TO,
44 ];
45
46 /**
47 * @since 4.4.0
48 */
49 public static function find($id): ?DonorNote
50 {
51 return give()->donors->notes->getById($id);
52 }
53
54 /**
55 * @since 4.4.0
56 *
57 * @throws Exception
58 */
59 public static function create(array $attributes): DonorNote
60 {
61 $donorNote = new static($attributes);
62
63 give()->donors->notes->insert($donorNote);
64
65 return $donorNote;
66 }
67
68 /**
69 * @since 4.4.0
70 *
71 * @throws Exception
72 */
73 public function save(): DonorNote
74 {
75 if ( ! $this->id) {
76 give()->donors->notes->insert($this);
77 } else {
78 give()->donors->notes->update($this);
79 }
80
81 return $this;
82 }
83
84 /**
85 * @since 4.4.0
86 *
87 * @throws Exception
88 */
89 public function delete(): bool
90 {
91 return give()->donors->notes->delete($this);
92 }
93
94 /**
95 * @since 4.4.0
96 *
97 * @return ModelQueryBuilder<DonorNote>
98 */
99 public static function query(): ModelQueryBuilder
100 {
101 return give()->donors->notes->prepareQuery();
102 }
103
104 /**
105 * @since 4.4.0
106 *
107 * @return ModelQueryBuilder<Donor>
108 */
109 public function donor(): ModelQueryBuilder
110 {
111 return give()->donors->queryById($this->donorId);
112 }
113
114 /**
115 * @since 4.4.0
116 */
117 public static function fromQueryBuilderObject($object): DonorNote
118 {
119 return new DonorNote([
120 'id' => (int)$object->id,
121 'type' => $object->type ? new DonorNoteType($object->type) : DonorNoteType::ADMIN(),
122 'donorId' => (int)$object->donorId,
123 'content' => (string)$object->content,
124 'createdAt' => Temporal::toDateTime($object->createdAt),
125 ]);
126 }
127
128 /**
129 * @since 4.4.0
130 */
131 public static function factory(): DonorNoteFactory
132 {
133 return new DonorNoteFactory(static::class);
134 }
135 }
136