196 lines
5.5 KiB
PHP
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;
|
|
}
|
|
}
|