Add Site entity (draft)
This commit is contained in:
parent
70f1b7090a
commit
5fa894e56a
323
src/Entity/Site.php
Normal file
323
src/Entity/Site.php
Normal file
@ -0,0 +1,323 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\RecordInterface;
|
||||
use App\Repository\SiteRepository;
|
||||
use DateTimeImmutable;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use App\RecordStatus;
|
||||
use Doctrine\Common\Collections\Collection as DoctrineCollection;
|
||||
|
||||
#[ORM\Entity(repositoryClass: SiteRepository::class)]
|
||||
#[ORM\Table(name: 'conservation_place')]
|
||||
class Site implements RecordInterface
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column(name: 'id')]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\Column(name: 'stato')]
|
||||
private ?int $status = null;
|
||||
|
||||
#[ORM\Column(name: 'modif')]
|
||||
private ?DateTimeImmutable $modifiedAt = null;
|
||||
|
||||
#[ORM\Column(name: 'nome_sito', type: Types::TEXT)]
|
||||
private ?string $name = null;
|
||||
|
||||
#[ORM\Column(name: 'nome_ant_sito', type: Types::TEXT)]
|
||||
private ?string $ancientName = null;
|
||||
|
||||
//#[ORM\Column(name: 'coord_sito', type: Types::TEXT)]
|
||||
private ?float $lat = null;
|
||||
|
||||
private ?float $lng = null;
|
||||
|
||||
#[ORM\Column(name: 'stato_mod_sito', length: 40)]
|
||||
private ?string $country = null;
|
||||
|
||||
#[ORM\Column(name: 'desc_sito', type: Types::TEXT)]
|
||||
private ?string $description = null;
|
||||
|
||||
#[ORM\Column(name: 'desc_br_sito', type: Types::TEXT)]
|
||||
private ?string $shortDescription = null;
|
||||
|
||||
#[ORM\Column(name: 'id_est_sito', type: Types::TEXT)]
|
||||
private ?string $externalIdentifier = null;
|
||||
|
||||
#[ORM\Column(name: 'link_sito', type: Types::TEXT)]
|
||||
private ?string $link = null;
|
||||
|
||||
#[ORM\Column(name: 'sogg_sito', type: Types::TEXT)]
|
||||
private ?string $subjectHeadings = null;
|
||||
|
||||
#[ORM\Column(name: 'uri_sito', type: Types::TEXT)]
|
||||
private ?string $uri = null;
|
||||
|
||||
#[ORM\Column(name: 'resp', length: 100)]
|
||||
private ?string $owner = null;
|
||||
|
||||
#[ORM\Column(name: 'note_sito', type: Types::TEXT)]
|
||||
private ?string $notes = null;
|
||||
|
||||
#[ORM\Column(length: 100, name: 'editor')]
|
||||
private ?string $editor = null;
|
||||
|
||||
#[ORM\Column(length: 100, name: 'creator')]
|
||||
private ?string $creator = null;
|
||||
|
||||
// TODO: These are references to vocabs
|
||||
#[ORM\Column(name: 'dir_aut_sito')]
|
||||
private ?int $authorRights = null;
|
||||
|
||||
#[ORM\Column(name: 'dir_acc_sito')]
|
||||
private ?int $accessRights = null;
|
||||
|
||||
#[ORM\Column(name: 'lic_sito')]
|
||||
private ?int $license = null;
|
||||
|
||||
#[ORM\JoinTable(name: 'rel_sito_collezione')]
|
||||
#[ORM\JoinColumn(name: 'Sito_id_sito', referencedColumnName: 'id')]
|
||||
#[ORM\InverseJoinColumn(name: 'Collezione_id_coll', referencedColumnName: 'id')]
|
||||
#[ORM\ManyToMany(targetEntity: Collection::class, inversedBy: 'conservation_place')]
|
||||
private DoctrineCollection $collections;
|
||||
|
||||
private bool $isEditable = false;
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getStatus(): ?string
|
||||
{
|
||||
$status = RecordStatus::tryFrom($this->status);
|
||||
return $status->toString();
|
||||
}
|
||||
|
||||
public function setStatus(int $status): static
|
||||
{
|
||||
$this->status = $status;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getModifiedAt(): ?DateTimeImmutable
|
||||
{
|
||||
return $this->modifiedAt;
|
||||
}
|
||||
|
||||
public function setModifiedAt(DateTimeImmutable $modifiedAt): static
|
||||
{
|
||||
$this->modifiedAt = $modifiedAt;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getOwner(): ?string
|
||||
{
|
||||
return $this->owner;
|
||||
}
|
||||
|
||||
public function setOwner(string $owner): static
|
||||
{
|
||||
$this->owner = $owner;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getEditor(): ?string
|
||||
{
|
||||
return $this->editor;
|
||||
}
|
||||
|
||||
public function setEditor(string $editor): static
|
||||
{
|
||||
$this->editor = $editor;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCreator(): ?string
|
||||
{
|
||||
return $this->creator;
|
||||
}
|
||||
|
||||
public function setCreator(string $creator): static
|
||||
{
|
||||
$this->creator = $creator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getName(): ?string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function setName(string $name): static
|
||||
{
|
||||
$this->name = $name;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCountry(): ?string
|
||||
{
|
||||
return $this->country;
|
||||
}
|
||||
|
||||
public function setCountry(string $country): static
|
||||
{
|
||||
$this->country = $country;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getAncientName(): ?string
|
||||
{
|
||||
return $this->ancientName;
|
||||
}
|
||||
|
||||
public function setAncientName(string $ancientName): static
|
||||
{
|
||||
$this->ancientName = $ancientName;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDescription(): ?string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
public function setDescription(string $description): static
|
||||
{
|
||||
$this->description = $description;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getShortDescription(): ?string
|
||||
{
|
||||
return $this->shortDescription;
|
||||
}
|
||||
|
||||
public function setShortDescription(string $shortDescription): static
|
||||
{
|
||||
$this->shortDescription = $shortDescription;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getExternalIdentifier(): ?string
|
||||
{
|
||||
return $this->externalIdentifier;
|
||||
}
|
||||
|
||||
public function setExternalIdentifier(string $externalIdentifier): static
|
||||
{
|
||||
$this->externalIdentifier = $externalIdentifier;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getLink(): ?string
|
||||
{
|
||||
return $this->link;
|
||||
}
|
||||
|
||||
public function setLink(string $link): static
|
||||
{
|
||||
$this->link = $link;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getSubjectHeadings(): ?string
|
||||
{
|
||||
return $this->subjectHeadings;
|
||||
}
|
||||
|
||||
public function setSubjectHeadings(string $subjectHeadings): static
|
||||
{
|
||||
$this->subjectHeadings = $subjectHeadings;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUri(): ?string
|
||||
{
|
||||
return $this->uri;
|
||||
}
|
||||
|
||||
public function setUri(string $uri): static
|
||||
{
|
||||
$this->uri = $uri;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getNotes(): ?string
|
||||
{
|
||||
return $this->notes;
|
||||
}
|
||||
|
||||
public function setNotes(string $notes): static
|
||||
{
|
||||
$this->notes = $notes;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCollections(): ?DoctrineCollection
|
||||
{
|
||||
return $this->collections;
|
||||
}
|
||||
|
||||
public function setCollections(DoctrineCollection $collections): static
|
||||
{
|
||||
$this->collections = $collections;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getEditableStatus(): bool
|
||||
{
|
||||
return $this->isEditable;
|
||||
}
|
||||
|
||||
public function setEditableStatus(bool $status): static
|
||||
{
|
||||
$this->isEditable = $status;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getLat(): float
|
||||
{
|
||||
return $this->lat;
|
||||
}
|
||||
|
||||
public function setLat(float $lat): static
|
||||
{
|
||||
$this->lat = $lat;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getLng(): float
|
||||
{
|
||||
return $this->lng;
|
||||
}
|
||||
|
||||
public function setLng(float $lng): static
|
||||
{
|
||||
$this->lng = $lng;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
96
src/Repository/SiteRepository.php
Normal file
96
src/Repository/SiteRepository.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Bibliography;
|
||||
use App\Entity\Site;
|
||||
use App\Entity\User;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\Query\ResultSetMappingBuilder;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<ConservationPlace>
|
||||
*/
|
||||
class SiteRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, Site::class);
|
||||
}
|
||||
|
||||
public function hasCreatorEditor(string $creator): bool
|
||||
{
|
||||
$em = $this->getEntityManager();
|
||||
$repo = $em->getRepository(User::class);
|
||||
|
||||
$creator = $repo->findOneBy(['username' => $creator]);
|
||||
|
||||
return in_array('ROLE_EDITOR', $creator->getRoles());
|
||||
}
|
||||
|
||||
public function findAllByCollection(int $collectionId): ?ArrayCollection
|
||||
{
|
||||
$rsm = new ResultSetMappingBuilder($this->getEntityManager());
|
||||
$rsm->addRootEntityFromClassMetadata('App\Entity\ConservationPlace', 'c');
|
||||
|
||||
$query = $this->getEntityManager()->createNativeQuery(
|
||||
"SELECT
|
||||
id,
|
||||
stato,
|
||||
editor,
|
||||
luogo_cons,
|
||||
com_cons
|
||||
FROM sito s
|
||||
JOIN rel_sito_collezione
|
||||
ON Sito_id_sito = id
|
||||
WHERE Collezione_id_coll = :collId",
|
||||
$rsm
|
||||
);
|
||||
$query->setParameter('collId', $collectionId);
|
||||
|
||||
return new ArrayCollection($query->getResult());
|
||||
}
|
||||
|
||||
public function findAllByObject(int $objectId): ?ArrayCollection
|
||||
{
|
||||
$rsm = new ResultSetMappingBuilder($this->getEntityManager());
|
||||
$rsm->addRootEntityFromClassMetadata('App\Entity\ConservationPlace', 'c');
|
||||
|
||||
$query = $this->getEntityManager()->createNativeQuery(
|
||||
"SELECT
|
||||
id,
|
||||
stato,
|
||||
editor,
|
||||
luogo_cons,
|
||||
com_cons
|
||||
FROM conservation_place c
|
||||
JOIN rel_conservazione_reperto
|
||||
ON Conservazione_id_cons = id
|
||||
WHERE Reperto_id_rep = :objectId",
|
||||
$rsm
|
||||
);
|
||||
$query->setParameter('objectId', $objectId);
|
||||
|
||||
return new ArrayCollection($query->getResult());
|
||||
}
|
||||
|
||||
public function coordinates(int $id): ?array
|
||||
{
|
||||
$conn = $this->getEntityManager()->getConnection();
|
||||
|
||||
$sql = '
|
||||
SELECT
|
||||
ST_X(coord_cons) as lng,
|
||||
ST_Y(coord_cons) as lat
|
||||
FROM sito s
|
||||
WHERE cp.id = :id
|
||||
';
|
||||
|
||||
$result = $conn->executeQuery($sql, ['id' => $id]);
|
||||
|
||||
|
||||
return $result->fetchAssociative();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user