initial commit

This commit is contained in:
greggy
2025-10-06 23:52:38 +02:00
parent ad46abd2ba
commit ba8483bec2
17 changed files with 505 additions and 92 deletions

View File

@@ -41,12 +41,8 @@ class Kampagne
#[ORM\Column(type: 'smallint')]
private int $reload = 0;
#[ORM\ManyToOne(targetEntity: Werbenetzwerk::class)]
#[ORM\JoinColumn(name: 'werbenetzwerk_id', referencedColumnName: 'werbenetzwerk', nullable: true)]
private ?Werbenetzwerk $werbenetzwerk = null;
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: true)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: true, onDelete: 'SET NULL')]
private ?User $user = null;
#[ORM\Column(type: 'datetime')]
@@ -183,17 +179,6 @@ class Kampagne
return $this->dateModified;
}
public function getWerbenetzwerk(): ?Werbenetzwerk
{
return $this->werbenetzwerk;
}
public function setWerbenetzwerk(?Werbenetzwerk $werbenetzwerk): self
{
$this->werbenetzwerk = $werbenetzwerk;
return $this;
}
public function getUser(): ?User
{
return $this->user;

View File

@@ -0,0 +1,96 @@
<?php
namespace Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
#[ORM\Table(name: 'reloadsperre')]
#[ORM\Index(name: 'idx_kampagne_user', columns: ['kampagne_id', 'user_id'])]
#[ORM\Index(name: 'idx_reload_bis', columns: ['reload_bis'])]
#[ORM\HasLifecycleCallbacks]
class Reloadsperre
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\ManyToOne(targetEntity: Kampagne::class)]
#[ORM\JoinColumn(name: 'kampagne_id', referencedColumnName: 'id', nullable: false, onDelete: 'RESTRICT')]
private Kampagne $kampagne;
#[ORM\ManyToOne(targetEntity: User::class)]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')]
private User $user;
#[ORM\Column(type: 'datetime')]
private \DateTimeInterface $reload_bis;
#[ORM\Column(type: 'integer', options: ['unsigned' => true])]
private int $ip;
#[ORM\Column(type: 'datetime')]
private \DateTimeInterface $dateCreated;
#[ORM\PrePersist]
public function setDateCreatedValue(): void
{
$this->dateCreated = new \DateTime();
}
// Getters and Setters
public function getId(): ?int
{
return $this->id;
}
public function getKampagne(): Kampagne
{
return $this->kampagne;
}
public function setKampagne(Kampagne $kampagne): self
{
$this->kampagne = $kampagne;
return $this;
}
public function getUser(): User
{
return $this->user;
}
public function setUser(User $user): self
{
$this->user = $user;
return $this;
}
public function getReloadBis(): \DateTimeInterface
{
return $this->reload_bis;
}
public function setReloadBis(\DateTimeInterface $reload_bis): self
{
$this->reload_bis = $reload_bis;
return $this;
}
public function getIp(): string
{
return long2ip($this->ip);
}
public function setIp(string $ip): self
{
$this->ip = ip2long($ip);
return $this;
}
public function getDateCreated(): \DateTimeInterface
{
return $this->dateCreated;
}
}

View File

@@ -22,6 +22,13 @@ class User
#[ORM\Column(type: 'string', length: 255)]
private string $password;
#[ORM\Column(type: 'string', columnDefinition: "ENUM('user', 'admin', 'werbenetzwerk')")]
private string $rolle = 'user';
#[ORM\ManyToOne(targetEntity: Werbenetzwerk::class)]
#[ORM\JoinColumn(name: 'werbenetzwerk_id', referencedColumnName: 'id', nullable: true, onDelete: 'SET NULL')]
private ?Werbenetzwerk $werbenetzwerk = null;
#[ORM\Column(type: 'datetime')]
private \DateTime $createdAt;
@@ -79,4 +86,39 @@ class User
$this->createdAt = $createdAt;
return $this;
}
public function getRolle(): string
{
return $this->rolle;
}
public function setRolle(string $rolle): self
{
if (!in_array($rolle, ['user', 'admin', 'werbenetzwerk'])) {
throw new \InvalidArgumentException('Rolle muss "user", "admin" oder "werbenetzwerk" sein');
}
$this->rolle = $rolle;
return $this;
}
public function isAdmin(): bool
{
return $this->rolle === 'admin';
}
public function isWerbenetzwerk(): bool
{
return $this->rolle === 'werbenetzwerk';
}
public function getWerbenetzwerk(): ?Werbenetzwerk
{
return $this->werbenetzwerk;
}
public function setWerbenetzwerk(?Werbenetzwerk $werbenetzwerk): self
{
$this->werbenetzwerk = $werbenetzwerk;
return $this;
}
}

View File

@@ -10,11 +10,9 @@ use Doctrine\ORM\Mapping as ORM;
class Werbenetzwerk
{
#[ORM\Id]
#[ORM\Column(type: 'string', length: 5)]
private string $werbenetzwerk;
#[ORM\Column(type: 'text')]
private string $name;
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'float')]
private float $umrechnungskurs;
@@ -33,26 +31,9 @@ class Werbenetzwerk
}
// Getters and Setters
public function getWerbenetzwerk(): string
public function getId(): ?int
{
return $this->werbenetzwerk;
}
public function setWerbenetzwerk(string $werbenetzwerk): self
{
$this->werbenetzwerk = $werbenetzwerk;
return $this;
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
return $this->id;
}
public function getUmrechnungskurs(): float