Files
caprigis-api/src/Repository/BibliographyRepository.php
2026-05-22 16:12:09 +02:00

196 lines
5.5 KiB
PHP

<?php
namespace App\Repository;
use App\Entity\Bibliography;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
/**
* @extends ServiceEntityRepository<Bibliography>
*/
class BibliographyRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Bibliography::class);
}
/**
* @return Bibliography[]
*/
public function findAllBySite(int $siteId): array
{
$conn = $this->getEntityManager()->getConnection();
$sql = '
SELECT
b.id,
b.citazione,
b.riferimento,
bs.pagine
FROM bibliografia b
INNER JOIN bibliografia_sito bs ON bs.id_bibliografia = b.id
WHERE bs.id_sito = :siteId
ORDER BY bs.ordine ASC
';
$stmt = $conn->prepare($sql);
$results = $stmt->executeQuery(['siteId' => $siteId])->fetchAllAssociative();
$entities = [];
foreach ($results as $row) {
$biblio = new Bibliography();
$biblio->setId($row['id']);
$biblio->setCitation($row['citazione']);
$biblio->setReference($row['riferimento']);
$biblio->setPages($row['pagine']);
$entities[] = $biblio;
}
return $entities;
}
/**
* @return Bibliography[]
*/
public function findAllByNotConserved(int $notConservedId): array
{
$conn = $this->getEntityManager()->getConnection();
$sql = '
SELECT
b.id,
b.citazione,
b.riferimento,
bs.pagine
FROM bibliografia b
INNER JOIN bibliografia_non_conser bs ON bs.id_bibliografia = b.id
WHERE bs.id_non_conser = :notConservedId
ORDER BY bs.ordine ASC
';
$stmt = $conn->prepare($sql);
$results = $stmt->executeQuery(['notConservedId' => $notConservedId])->fetchAllAssociative();
$entities = [];
foreach ($results as $row) {
$biblio = new Bibliography();
$biblio->setId($row['id']);
$biblio->setCitation($row['citazione']);
$biblio->setReference($row['riferimento']);
$biblio->setPages($row['pagine']);
$entities[] = $biblio;
}
return $entities;
}
/**
* @return Bibliography[]
*/
public function findAllByFinding(int $findingId): array
{
$conn = $this->getEntityManager()->getConnection();
$sql = '
SELECT
b.id,
b.citazione,
b.riferimento,
bs.pagine
FROM bibliografia b
INNER JOIN bibliografia_rinvenim bs ON bs.id_bibliografia = b.id
WHERE bs.id_rinvenimento = :findingId
ORDER BY bs.ordine ASC
';
$stmt = $conn->prepare($sql);
$results = $stmt->executeQuery(['findingId' => $findingId])->fetchAllAssociative();
$entities = [];
foreach ($results as $row) {
$biblio = new Bibliography();
$biblio->setId($row['id']);
$biblio->setCitation($row['citazione']);
$biblio->setReference($row['riferimento']);
$biblio->setPages($row['pagine']);
$entities[] = $biblio;
}
return $entities;
}
/**
* @return Bibliography[]
*/
public function findAllByReuse(int $reuseId): array
{
$conn = $this->getEntityManager()->getConnection();
$sql = '
SELECT
b.id,
b.citazione,
b.riferimento,
br.pagine
FROM bibliografia b
INNER JOIN bibliografia_reimpiego br ON br.id_bibliografia = b.id
WHERE br.id_reimpiego = :reuseId
ORDER BY br.ordine ASC
';
$stmt = $conn->prepare($sql);
$results = $stmt->executeQuery(['reuseId' => $reuseId])->fetchAllAssociative();
$entities = [];
foreach ($results as $row) {
$biblio = new Bibliography();
$biblio->setId($row['id']);
$biblio->setCitation($row['citazione']);
$biblio->setReference($row['riferimento']);
$biblio->setPages($row['pagine']);
$entities[] = $biblio;
}
return $entities;
}
/**
* @return Bibliography[]
*/
public function findAllByPrehistoric(int $prehistoricId): array
{
$conn = $this->getEntityManager()->getConnection();
$sql = '
SELECT
b.id,
b.citazione,
b.riferimento,
br.pagine
FROM bibliografia b
INNER JOIN bibliografia_preistoria br ON br.id_bibliografia = b.id
WHERE br.id_preistoria = :prehistoricId
ORDER BY br.ordine ASC
';
$stmt = $conn->prepare($sql);
$results = $stmt->executeQuery(['prehistoricId' => $prehistoricId])->fetchAllAssociative();
$entities = [];
foreach ($results as $row) {
$biblio = new Bibliography();
$biblio->setId($row['id']);
$biblio->setCitation($row['citazione']);
$biblio->setReference($row['riferimento']);
$biblio->setPages($row['pagine']);
$entities[] = $biblio;
}
return $entities;
}
}