mirror of
https://github.com/quentin-g-dev/afup.git
synced 2026-04-30 04:33:15 +02:00
123 lines
4.1 KiB
PHP
123 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace AppBundle\Event\Model\Repository;
|
|
|
|
use AppBundle\Event\Model\Event;
|
|
use CCMBenchmark\Ting\Repository\HydratorSingleObject;
|
|
use CCMBenchmark\Ting\Repository\Metadata;
|
|
use CCMBenchmark\Ting\Repository\MetadataInitializer;
|
|
use CCMBenchmark\Ting\Repository\Repository;
|
|
use CCMBenchmark\Ting\Serializer\SerializerFactoryInterface;
|
|
|
|
class EventRepository extends Repository implements MetadataInitializer
|
|
{
|
|
/**
|
|
* @return Event|null
|
|
*/
|
|
public function getNextEvent()
|
|
{
|
|
$query = $this
|
|
->getQuery('SELECT id, path FROM afup_forum WHERE date_debut > NOW() ORDER BY date_debut LIMIT 1')
|
|
;
|
|
$events = $query->query($this->getCollection(new HydratorSingleObject()));
|
|
if ($events->count() === 0) {
|
|
return null;
|
|
}
|
|
return $events->first();
|
|
}
|
|
|
|
|
|
public static function initMetadata(SerializerFactoryInterface $serializerFactory, array $options = [])
|
|
{
|
|
$metadata = new Metadata($serializerFactory);
|
|
$metadata->setEntity(Event::class);
|
|
$metadata->setConnectionName('main');
|
|
$metadata->setDatabase($options['database']);
|
|
$metadata->setTable('afup_forum');
|
|
|
|
$metadata
|
|
->addField([
|
|
'columnName' => 'id',
|
|
'fieldName' => 'id',
|
|
'primary' => true,
|
|
'autoincrement' => true,
|
|
'type' => 'int'
|
|
])
|
|
->addField([
|
|
'columnName' => 'titre',
|
|
'fieldName' => 'title',
|
|
'type' => 'string'
|
|
])
|
|
->addField([
|
|
'columnName' => 'nb_places',
|
|
'fieldName' => 'seats',
|
|
'type' => 'int'
|
|
])
|
|
->addField([
|
|
'columnName' => 'date_debut',
|
|
'fieldName' => 'dateStart',
|
|
'type' => 'datetime',
|
|
'serializer_options' => [
|
|
'unserialize' => ['unSerializeUseFormat' => false]
|
|
]
|
|
|
|
])
|
|
->addField([
|
|
'columnName' => 'date_fin',
|
|
'fieldName' => 'dateEnd',
|
|
'type' => 'datetime',
|
|
'serializer_options' => [
|
|
'unserialize' => ['unSerializeUseFormat' => false]
|
|
]
|
|
])
|
|
->addField([
|
|
'columnName' => 'date_fin_appel_projet',
|
|
'fieldName' => 'dateEndCallForProjects',
|
|
'type' => 'datetime',
|
|
'serializer_options' => [
|
|
'unserialize' => ['unSerializeUseFormat' => true, 'format' => 'U']
|
|
]
|
|
])
|
|
->addField([
|
|
'columnName' => 'date_fin_appel_conferencier',
|
|
'fieldName' => 'dateEndCallForPapers',
|
|
'type' => 'datetime',
|
|
'serializer_options' => [
|
|
'unserialize' => ['unSerializeUseFormat' => true, 'format' => 'U']
|
|
]
|
|
])
|
|
->addField([
|
|
'columnName' => 'date_fin_prevente',
|
|
'fieldName' => 'dateEndPreSales',
|
|
'type' => 'datetime',
|
|
'serializer_options' => [
|
|
'unserialize' => ['unSerializeUseFormat' => true, 'format' => 'U']
|
|
]
|
|
])
|
|
->addField([
|
|
'columnName' => 'date_fin_vente',
|
|
'fieldName' => 'dateEndSales',
|
|
'type' => 'datetime',
|
|
'serializer_options' => [
|
|
'unserialize' => ['unSerializeUseFormat' => true, 'format' => 'U']
|
|
]
|
|
])
|
|
->addField([
|
|
'columnName' => 'text',
|
|
'fieldName' => 'cfp',
|
|
'type' => 'json',
|
|
'serializer_options' => [
|
|
'unserialize' => ['assoc' => true]
|
|
]
|
|
])
|
|
->addField([
|
|
'columnName' => 'path',
|
|
'fieldName' => 'path',
|
|
'type' => 'string'
|
|
])
|
|
;
|
|
|
|
return $metadata;
|
|
}
|
|
}
|