Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
33 / 33
100.00% covered (success)
100.00%
18 / 18
CRAP
100.00% covered (success)
100.00%
1 / 1
OlzEntity
100.00% covered (success)
100.00%
33 / 33
100.00% covered (success)
100.00%
18 / 18
23
100.00% covered (success)
100.00%
1 / 1
 getOwnerUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setOwnerUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOwnerRole
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setOwnerRole
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getCreatedAt
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setCreatedAt
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getCreatedByUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setCreatedByUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLastModifiedAt
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLastModifiedAt
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLastModifiedByUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLastModifiedByUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDeletedAt
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDeletedAt
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getDeletedByUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDeletedByUser
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 exists
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
4
 getMetaData
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace Olz\Entity\Common;
4
5use Doctrine\ORM\Mapping as ORM;
6use Olz\Common\Utils\WithUtilsTrait;
7use Olz\Entity\Roles\Role;
8use Olz\Entity\Users\User;
9
10#[ORM\MappedSuperclass]
11class OlzEntity {
12    use WithUtilsTrait;
13
14    #[ORM\ManyToOne(targetEntity: User::class)]
15    #[ORM\JoinColumn(name: 'owner_user_id', referencedColumnName: 'id', nullable: true)]
16    protected ?User $owner_user;
17
18    #[ORM\ManyToOne(targetEntity: Role::class)]
19    #[ORM\JoinColumn(name: 'owner_role_id', referencedColumnName: 'id', nullable: true)]
20    protected ?Role $owner_role;
21
22    #[ORM\Column(type: 'datetime', nullable: false, options: ['default' => 'CURRENT_TIMESTAMP'])]
23    protected \DateTime $created_at;
24
25    #[ORM\ManyToOne(targetEntity: User::class)]
26    #[ORM\JoinColumn(name: 'created_by_user_id', referencedColumnName: 'id', nullable: true)]
27    protected ?User $created_by_user;
28
29    #[ORM\Column(type: 'datetime', nullable: false, options: ['default' => 'CURRENT_TIMESTAMP'])]
30    protected \DateTime $last_modified_at;
31
32    #[ORM\ManyToOne(targetEntity: User::class)]
33    #[ORM\JoinColumn(name: 'last_modified_by_user_id', referencedColumnName: 'id', nullable: true)]
34    protected ?User $last_modified_by_user;
35
36    #[ORM\Column(type: 'datetime', nullable: true)]
37    protected ?\DateTime $deleted_at = null;
38
39    #[ORM\ManyToOne(targetEntity: User::class)]
40    #[ORM\JoinColumn(name: 'deleted_by_user_id', referencedColumnName: 'id', nullable: true)]
41    protected ?User $deleted_by_user = null;
42
43    public function getOwnerUser(): ?User {
44        return $this->owner_user;
45    }
46
47    public function setOwnerUser(?User $new_value): void {
48        $this->owner_user = $new_value;
49    }
50
51    public function getOwnerRole(): ?Role {
52        return $this->owner_role;
53    }
54
55    public function setOwnerRole(?Role $new_value): void {
56        $this->owner_role = $new_value;
57    }
58
59    public function getCreatedAt(): \DateTime {
60        return $this->created_at;
61    }
62
63    public function setCreatedAt(\DateTime $new_value): void {
64        $this->created_at = $new_value;
65    }
66
67    public function getCreatedByUser(): ?User {
68        return $this->created_by_user;
69    }
70
71    public function setCreatedByUser(?User $new_value): void {
72        $this->created_by_user = $new_value;
73    }
74
75    public function getLastModifiedAt(): \DateTime {
76        return $this->last_modified_at;
77    }
78
79    public function setLastModifiedAt(\DateTime $new_value): void {
80        $this->last_modified_at = $new_value;
81    }
82
83    public function getLastModifiedByUser(): ?User {
84        return $this->last_modified_by_user;
85    }
86
87    public function setLastModifiedByUser(?User $new_value): void {
88        $this->last_modified_by_user = $new_value;
89    }
90
91    public function getDeletedAt(): ?\DateTime {
92        return $this->deleted_at;
93    }
94
95    public function setDeletedAt(?\DateTime $new_value): void {
96        $this->deleted_at = $new_value;
97    }
98
99    public function getDeletedByUser(): ?User {
100        return $this->deleted_by_user;
101    }
102
103    public function setDeletedByUser(?User $new_value): void {
104        $this->deleted_by_user = $new_value;
105    }
106
107    public function exists(?\DateTime $at = null): bool {
108        $date_time = $at ?? new \DateTime($this->dateUtils()->getIsoNow());
109        $created_at = $this->getCreatedAt();
110        if ($created_at > $date_time) {
111            return false; // Not yet created
112        }
113        // Has been created
114        $deleted_at = $this->getDeletedAt();
115        if ($deleted_at === null) {
116            return true; // Never deleted
117        }
118        if ($deleted_at < $date_time) {
119            return false; // Already deleted
120        }
121        return true;
122    }
123
124    /** @return array{ownerUserId: ?int, ownerRoleId: ?int, onOff: bool} */
125    public function getMetaData(): array {
126        $owner_user = $this->getOwnerUser();
127        $owner_role = $this->getOwnerRole();
128        return [
129            'ownerUserId' => $owner_user ? $owner_user->getId() : null,
130            'ownerRoleId' => $owner_role ? $owner_role->getId() : null,
131            'onOff' => $this->getDeletedAt() === null,
132        ];
133    }
134}