Entities & Repos
This commit is contained in:
		
							
								
								
									
										0
									
								
								src/Entity/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/Entity/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										190
									
								
								src/Entity/Bible.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								src/Entity/Bible.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,190 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
|  | ||||
| use App\Repository\BibleRepository; | ||||
| use Doctrine\DBAL\Types\Types; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: BibleRepository::class)] | ||||
| class Bible implements JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $book = null; | ||||
|  | ||||
|     #[ORM\Column] | ||||
|     private ?int $chapter = null; | ||||
|  | ||||
|     #[ORM\Column] | ||||
|     private ?int $verse = null; | ||||
|  | ||||
|     #[ORM\Column(type: Types::TEXT, nullable: true)] | ||||
|     private ?string $content = null; | ||||
|  | ||||
|     #[ORM\Column] | ||||
|     private ?int $book_index = null; | ||||
|  | ||||
|     #[ORM\Column(length: 20, nullable: true)] | ||||
|     private ?string $label = null; | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getBook(): ?string | ||||
|     { | ||||
|         return $this->book; | ||||
|     } | ||||
|  | ||||
|     public function setBook(string $book): static | ||||
|     { | ||||
|         $this->book = $book; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getChapter(): ?int | ||||
|     { | ||||
|         return $this->chapter; | ||||
|     } | ||||
|  | ||||
|     public function setChapter(int $chapter): static | ||||
|     { | ||||
|         $this->chapter = $chapter; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getVerse(): ?int | ||||
|     { | ||||
|         return $this->verse; | ||||
|     } | ||||
|  | ||||
|     public function setVerse(int $verse): static | ||||
|     { | ||||
|         $this->verse = $verse; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getContent(): ?string | ||||
|     { | ||||
|         return $this->content; | ||||
|     } | ||||
|  | ||||
|     public function setContent(?string $content): static | ||||
|     { | ||||
|         $this->content = $content; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getBookIndex(): ?int | ||||
|     { | ||||
|         return $this->book_index; | ||||
|     } | ||||
|  | ||||
|     public function setBookIndex(int $book_index): static | ||||
|     { | ||||
|         $this->book_index = $book_index; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getLabel(): ?string | ||||
|     { | ||||
|         return $this->label; | ||||
|     } | ||||
|  | ||||
|     public function setLabel(?string $label): static | ||||
|     { | ||||
|         $this->label = $label; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function findBook(string $reference): string | ||||
|     { | ||||
|         $book = ''; | ||||
|         $tmp = explode(' ', $reference); | ||||
|         $book = "{$tmp[0]}"; | ||||
|  | ||||
|         if(count($tmp) > 2) { | ||||
|             $book = "{$tmp[0]}{$tmp[1]}"; | ||||
|         } | ||||
|  | ||||
|         return $book; | ||||
|     } | ||||
|  | ||||
|     public static function findChapter(string $reference): string | ||||
|     { | ||||
|         $chapter = ''; | ||||
|         $tmp = explode(' ', $reference); | ||||
|  | ||||
|         if(count($tmp) > 2) { | ||||
|             $passage = $tmp[2]; | ||||
|         } else { | ||||
|             $passage = $tmp[1]; | ||||
|         } | ||||
|  | ||||
|         $tmp = explode(':', $passage); | ||||
|         $chapter = $tmp[0]; | ||||
|  | ||||
|         return $chapter; | ||||
|     } | ||||
|  | ||||
|     public static function findVerse(string $reference): int|array|bool | ||||
|     { | ||||
|         $verses = null; | ||||
|         $semicolon = strpos($reference, ':'); | ||||
|         if ($semicolon === false) { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         $tmp = substr($reference, $semicolon + 1); | ||||
|  | ||||
|         if(strpos($tmp, '-') !== false) { | ||||
|             $verses = explode('-', $tmp); | ||||
|         } else { | ||||
|             $verses = (int) $tmp; | ||||
|         } | ||||
|  | ||||
|         return $verses; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->getId(), | ||||
|             'book' => $this->getBook(), | ||||
|             'chapter' => $this->getChapter(), | ||||
|             'verse' => $this->getVerse(), | ||||
|             'content' => $this->getContent(), | ||||
|             'book_index' => $this->getBookIndex(), | ||||
|             'label' => $this->getLabel(), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										196
									
								
								src/Entity/Note.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								src/Entity/Note.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,196 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
| use App\Repository\NoteRepository; | ||||
| use Doctrine\DBAL\Types\Types; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: NoteRepository::class)] | ||||
| class Note implements JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $title = null; | ||||
|  | ||||
|     #[ORM\Column(type: Types::DATE_MUTABLE)] | ||||
|     private ?\DateTimeInterface $date = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $passage = null; | ||||
|  | ||||
|     #[ORM\Column(type: Types::JSON, nullable: true)] | ||||
|     private ?array $refs = null; | ||||
|  | ||||
|     #[ORM\Column(type: Types::TEXT, nullable: true)] | ||||
|     private ?string $text = null; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'notes')] | ||||
|     private ?Speaker $speaker = null; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'notes')] | ||||
|     private ?Series $series = null; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'notes')] | ||||
|     private ?User $user = null; | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getTitle(): ?string | ||||
|     { | ||||
|         return $this->title; | ||||
|     } | ||||
|  | ||||
|     public function setTitle(string $title): static | ||||
|     { | ||||
|         $this->title = $title; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getDate(): ?\DateTimeInterface | ||||
|     { | ||||
|         return $this->date; | ||||
|     } | ||||
|  | ||||
|     public function setDate(\DateTimeInterface $date): static | ||||
|     { | ||||
|         $this->date = $date; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getPassage(): ?string | ||||
|     { | ||||
|         return $this->passage; | ||||
|     } | ||||
|  | ||||
|     public function setPassage(string $passage): static | ||||
|     { | ||||
|         $this->passage = $passage; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getRefs(): ?array | ||||
|     { | ||||
|         return $this->refs; | ||||
|     } | ||||
|  | ||||
|     public function setRefs(?array $refs): static | ||||
|     { | ||||
|         $this->refs = $refs; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function addRef(Reference $ref): static | ||||
|     { | ||||
|         $this->refs[] = $ref; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getText(): ?string | ||||
|     { | ||||
|         return $this->text; | ||||
|     } | ||||
|  | ||||
|     public function setText(?string $text): static | ||||
|     { | ||||
|         $this->text = $text; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getSpeaker(): ?Speaker | ||||
|     { | ||||
|         return $this->speaker; | ||||
|     } | ||||
|  | ||||
|     public function setSpeaker(?Speaker $speaker): static | ||||
|     { | ||||
|         $this->speaker = $speaker; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getSeries(): ?Series | ||||
|     { | ||||
|         return $this->series; | ||||
|     } | ||||
|  | ||||
|     public function setSeries(?Series $series): static | ||||
|     { | ||||
|         $this->series = $series; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getUser(): ?User | ||||
|     { | ||||
|         return $this->user; | ||||
|     } | ||||
|  | ||||
|     public function setUser(?User $user): static | ||||
|     { | ||||
|         $this->user = $user; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function toLink(): string | ||||
|     { | ||||
|         return "<a href='#' onclick=\"retrieveNote('{$this->id}')\">". | ||||
|             $this->title. | ||||
|             "</a>"; | ||||
|     } | ||||
|  | ||||
|     public function toTableRow(): string | ||||
|     { | ||||
|         return "<tr>". | ||||
|             "<td>{$this->toLink()}</td>". | ||||
|             "<td>{$this->speaker->getName()}</td>". | ||||
|             "<td>{$this->passage}</td>". | ||||
|             "<td>{$this->date->format('M j, Y')}</td>". | ||||
|         "</tr>"; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->getId(), | ||||
|             'title' => $this->getTitle(), | ||||
|             'date' => $this->getDate(), | ||||
|             'passage' => $this->getPassage(), | ||||
|             'refs' => $this->getRefs(), | ||||
|             'text' => $this->getText(), | ||||
|             'speaker' => $this->getSpeaker(), | ||||
|             'series' => $this->getSeries(), | ||||
|             'user' => $this->getUser(), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										124
									
								
								src/Entity/Reference.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								src/Entity/Reference.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
| use App\Repository\ReferenceRepository; | ||||
| use Doctrine\DBAL\Types\Types; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: ReferenceRepository::class)] | ||||
| class Reference implements JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $type = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $name = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $label = null; | ||||
|  | ||||
|     #[ORM\Column(nullable: true)] | ||||
|     private ?int $ndx = null; | ||||
|  | ||||
|     #[ORM\Column(type: Types::TEXT, nullable: true)] | ||||
|     private ?string $content = null; | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getType(): ?string | ||||
|     { | ||||
|         return $this->type; | ||||
|     } | ||||
|  | ||||
|     public function setType(string $type): static | ||||
|     { | ||||
|         $this->type = $type; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getName(): ?string | ||||
|     { | ||||
|         return $this->name; | ||||
|     } | ||||
|  | ||||
|     public function setName(string $name): static | ||||
|     { | ||||
|         $this->name = $name; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getLabel(): ?string | ||||
|     { | ||||
|         return $this->label; | ||||
|     } | ||||
|  | ||||
|     public function setLabel(string $label): static | ||||
|     { | ||||
|         $this->label = $label; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getNdx(): ?int | ||||
|     { | ||||
|         return $this->ndx; | ||||
|     } | ||||
|  | ||||
|     public function setNdx(int $ndx): static | ||||
|     { | ||||
|         $this->ndx = $ndx; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getContent(): ?string | ||||
|     { | ||||
|         return $this->content; | ||||
|     } | ||||
|  | ||||
|     public function setContent(?string $content): static | ||||
|     { | ||||
|         $this->content = $content; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->id, | ||||
|             'type' => $this->type, | ||||
|             'name' => $this->name, | ||||
|             'label' => $this->label, | ||||
|             'ndx' => $this->ndx, | ||||
|             'content' => $this->content, | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										134
									
								
								src/Entity/Series.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								src/Entity/Series.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,134 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
| use App\Repository\SeriesRepository; | ||||
| use Doctrine\Common\Collections\ArrayCollection; | ||||
| use Doctrine\Common\Collections\Collection; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: SeriesRepository::class)] | ||||
| class Series implements JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $name = null; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'series')] | ||||
|     private ?User $user = null; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'series')] | ||||
|     private ?Template $template = null; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Note> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'series')] | ||||
|     private Collection $notes; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->notes = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getName(): ?string | ||||
|     { | ||||
|         return $this->name; | ||||
|     } | ||||
|  | ||||
|     public function setName(string $name): static | ||||
|     { | ||||
|         $this->name = $name; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getUser(): ?User | ||||
|     { | ||||
|         return $this->user; | ||||
|     } | ||||
|  | ||||
|     public function setUser(?User $user): static | ||||
|     { | ||||
|         $this->user = $user; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getTemplate(): ?Template | ||||
|     { | ||||
|         return $this->template; | ||||
|     } | ||||
|  | ||||
|     public function setTemplate(?Template $template): static | ||||
|     { | ||||
|         $this->template = $template; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Note> | ||||
|      */ | ||||
|     public function getNotes(): Collection | ||||
|     { | ||||
|         return $this->notes; | ||||
|     } | ||||
|  | ||||
|     public function addNote(Note $note): static | ||||
|     { | ||||
|         if (!$this->notes->contains($note)) { | ||||
|             $this->notes->add($note); | ||||
|             $note->setSeries($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeNote(Note $note): static | ||||
|     { | ||||
|         if ($this->notes->removeElement($note)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($note->getSeries() === $this) { | ||||
|                 $note->setSeries(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->getId(), | ||||
|             'name' => $this->getName(), | ||||
|             'note_count' => count($this->getNotes()), | ||||
|             'template' => $this->getTemplate(), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										118
									
								
								src/Entity/Speaker.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								src/Entity/Speaker.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,118 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
| use App\Repository\SpeakerRepository; | ||||
| use Doctrine\Common\Collections\ArrayCollection; | ||||
| use Doctrine\Common\Collections\Collection; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: SpeakerRepository::class)] | ||||
| class Speaker implements JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $name = null; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'speakers')] | ||||
|     private ?User $user = null; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Note> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'speaker')] | ||||
|     private Collection $notes; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->notes = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function getName(): ?string | ||||
|     { | ||||
|         return $this->name; | ||||
|     } | ||||
|  | ||||
|     public function setName(string $name): static | ||||
|     { | ||||
|         $this->name = $name; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getUser(): ?User | ||||
|     { | ||||
|         return $this->user; | ||||
|     } | ||||
|  | ||||
|     public function setUser(?User $user): static | ||||
|     { | ||||
|         $this->user = $user; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Note> | ||||
|      */ | ||||
|     public function getNotes(): Collection | ||||
|     { | ||||
|         return $this->notes; | ||||
|     } | ||||
|  | ||||
|     public function addNote(Note $note): static | ||||
|     { | ||||
|         if (!$this->notes->contains($note)) { | ||||
|             $this->notes->add($note); | ||||
|             $note->setSpeaker($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeNote(Note $note): static | ||||
|     { | ||||
|         if ($this->notes->removeElement($note)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($note->getSpeaker() === $this) { | ||||
|                 $note->setSpeaker(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->getId(), | ||||
|             'name' => $this->getName(), | ||||
|             'note_count' => count($this->notes), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										134
									
								
								src/Entity/Template.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								src/Entity/Template.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,134 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
| use App\Repository\TemplateRepository; | ||||
| use Doctrine\Common\Collections\ArrayCollection; | ||||
| use Doctrine\Common\Collections\Collection; | ||||
| use Doctrine\DBAL\Types\Types; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: TemplateRepository::class)] | ||||
| class Template implements JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $name = null; | ||||
|  | ||||
|     #[ORM\Column(type: Types::TEXT)] | ||||
|     private ?string $content = null; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Series> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Series::class, mappedBy: 'template')] | ||||
|     private Collection $series; | ||||
|  | ||||
|     #[ORM\ManyToOne(inversedBy: 'templates')] | ||||
|     private ?User $user = null; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->series = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getName(): ?string | ||||
|     { | ||||
|         return $this->name; | ||||
|     } | ||||
|  | ||||
|     public function setName(string $name): static | ||||
|     { | ||||
|         $this->name = $name; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getContent(): ?string | ||||
|     { | ||||
|         return $this->content; | ||||
|     } | ||||
|  | ||||
|     public function setContent(string $content): static | ||||
|     { | ||||
|         $this->content = $content; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Series> | ||||
|      */ | ||||
|     public function getSeries(): Collection | ||||
|     { | ||||
|         return $this->series; | ||||
|     } | ||||
|  | ||||
|     public function addSeries(Series $series): static | ||||
|     { | ||||
|         if (!$this->series->contains($series)) { | ||||
|             $this->series->add($series); | ||||
|             $series->setTemplate($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeSeries(Series $series): static | ||||
|     { | ||||
|         if ($this->series->removeElement($series)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($series->getTemplate() === $this) { | ||||
|                 $series->setTemplate(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getUser(): ?User | ||||
|     { | ||||
|         return $this->user; | ||||
|     } | ||||
|  | ||||
|     public function setUser(?User $user): static | ||||
|     { | ||||
|         $this->user = $user; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->getId(), | ||||
|             'name' => $this->getName(), | ||||
|             'content' => $this->getContent(), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										302
									
								
								src/Entity/User.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										302
									
								
								src/Entity/User.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,302 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Entity; | ||||
|  | ||||
| use JsonSerializable; | ||||
| use App\Repository\UserRepository; | ||||
| use Doctrine\Common\Collections\ArrayCollection; | ||||
| use Doctrine\Common\Collections\Collection; | ||||
| use Doctrine\ORM\Mapping as ORM; | ||||
| use Symfony\Bridge\Doctrine\Types\UuidType; | ||||
| use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; | ||||
| use Symfony\Component\Security\Core\User\UserInterface; | ||||
| use Symfony\Component\Uid\Uuid; | ||||
|  | ||||
| #[ORM\Entity(repositoryClass: UserRepository::class)] | ||||
| #[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_EMAIL', fields: ['email'])] | ||||
| class User implements UserInterface, PasswordAuthenticatedUserInterface, JsonSerializable | ||||
| { | ||||
|     #[ORM\Id] | ||||
|     #[ORM\Column(type: UuidType::NAME, unique: true)] | ||||
|     #[ORM\GeneratedValue(strategy: 'CUSTOM')] | ||||
|     #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')] | ||||
|     private ?Uuid $id = null; | ||||
|  | ||||
|     #[ORM\Column(length: 180)] | ||||
|     private ?string $email = null; | ||||
|  | ||||
|     /** | ||||
|      * @var list<string> The user roles | ||||
|      */ | ||||
|     #[ORM\Column] | ||||
|     private array $roles = []; | ||||
|  | ||||
|     /** | ||||
|      * @var string The hashed password | ||||
|      */ | ||||
|     #[ORM\Column] | ||||
|     private ?string $password = null; | ||||
|  | ||||
|     #[ORM\Column(length: 255)] | ||||
|     private ?string $name = null; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Series> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Series::class, mappedBy: 'user')] | ||||
|     private Collection $series; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Speaker> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Speaker::class, mappedBy: 'user')] | ||||
|     private Collection $speakers; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Template> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Template::class, mappedBy: 'user')] | ||||
|     private Collection $templates; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<int, Note> | ||||
|      */ | ||||
|     #[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'user')] | ||||
|     private Collection $notes; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->series = new ArrayCollection(); | ||||
|         $this->speakers = new ArrayCollection(); | ||||
|         $this->templates = new ArrayCollection(); | ||||
|         $this->notes = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function getId(): ?Uuid | ||||
|     { | ||||
|         return $this->id; | ||||
|     } | ||||
|  | ||||
|     public function setId(?Uuid $id): static | ||||
|     { | ||||
|         $this->id = $id; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public static function idFromString(string $id): Uuid | ||||
|     { | ||||
|         return Uuid::fromString($id); | ||||
|     } | ||||
|  | ||||
|     public function getEmail(): ?string | ||||
|     { | ||||
|         return $this->email; | ||||
|     } | ||||
|  | ||||
|     public function setEmail(string $email): static | ||||
|     { | ||||
|         $this->email = $email; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * A visual identifier that represents this user. | ||||
|      * | ||||
|      * @see UserInterface | ||||
|      */ | ||||
|     public function getUserIdentifier(): string | ||||
|     { | ||||
|         return (string) $this->email; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see UserInterface | ||||
|      * | ||||
|      * @return list<string> | ||||
|      */ | ||||
|     public function getRoles(): array | ||||
|     { | ||||
|         $roles = $this->roles; | ||||
|         // guarantee every user at least has ROLE_USER | ||||
|         $roles[] = 'ROLE_USER'; | ||||
|  | ||||
|         return array_unique($roles); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param list<string> $roles | ||||
|      */ | ||||
|     public function setRoles(array $roles): static | ||||
|     { | ||||
|         $this->roles = $roles; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see PasswordAuthenticatedUserInterface | ||||
|      */ | ||||
|     public function getPassword(): string | ||||
|     { | ||||
|         return $this->password; | ||||
|     } | ||||
|  | ||||
|     public function setPassword(string $password): static | ||||
|     { | ||||
|         $this->password = $password; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see UserInterface | ||||
|      */ | ||||
|     public function eraseCredentials(): void | ||||
|     { | ||||
|         // If you store any temporary, sensitive data on the user, clear it here | ||||
|         // $this->plainPassword = null; | ||||
|     } | ||||
|  | ||||
|     public function getName(): ?string | ||||
|     { | ||||
|         return $this->name; | ||||
|     } | ||||
|  | ||||
|     public function setName(string $name): static | ||||
|     { | ||||
|         $this->name = $name; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Series> | ||||
|      */ | ||||
|     public function getSeries(): Collection | ||||
|     { | ||||
|         return $this->series; | ||||
|     } | ||||
|  | ||||
|     public function addSeries(Series $series): static | ||||
|     { | ||||
|         if (!$this->series->contains($series)) { | ||||
|             $this->series->add($series); | ||||
|             $series->setUser($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeSeries(Series $series): static | ||||
|     { | ||||
|         if ($this->series->removeElement($series)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($series->getUser() === $this) { | ||||
|                 $series->setUser(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Speaker> | ||||
|      */ | ||||
|     public function getSpeakers(): Collection | ||||
|     { | ||||
|         return $this->speakers; | ||||
|     } | ||||
|  | ||||
|     public function addSpeaker(Speaker $speaker): static | ||||
|     { | ||||
|         if (!$this->speakers->contains($speaker)) { | ||||
|             $this->speakers->add($speaker); | ||||
|             $speaker->setUser($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeSpeaker(Speaker $speaker): static | ||||
|     { | ||||
|         if ($this->speakers->removeElement($speaker)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($speaker->getUser() === $this) { | ||||
|                 $speaker->setUser(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Template> | ||||
|      */ | ||||
|     public function getTemplates(): Collection | ||||
|     { | ||||
|         return $this->templates; | ||||
|     } | ||||
|  | ||||
|     public function addTemplate(Template $template): static | ||||
|     { | ||||
|         if (!$this->templates->contains($template)) { | ||||
|             $this->templates->add($template); | ||||
|             $template->setUser($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeTemplate(Template $template): static | ||||
|     { | ||||
|         if ($this->templates->removeElement($template)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($template->getUser() === $this) { | ||||
|                 $template->setUser(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<int, Note> | ||||
|      */ | ||||
|     public function getNotes(): Collection | ||||
|     { | ||||
|         return $this->notes; | ||||
|     } | ||||
|  | ||||
|     public function addNote(Note $note): static | ||||
|     { | ||||
|         if (!$this->notes->contains($note)) { | ||||
|             $this->notes->add($note); | ||||
|             $note->setUser($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeNote(Note $note): static | ||||
|     { | ||||
|         if ($this->notes->removeElement($note)) { | ||||
|             // set the owning side to null (unless already changed) | ||||
|             if ($note->getUser() === $this) { | ||||
|                 $note->setUser(null); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function jsonSerialize(): array | ||||
|     { | ||||
|         return [ | ||||
|             'id' => $this->id, | ||||
|             'email' => $this->email, | ||||
|             'name' => $this->name, | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user