<?php
namespace App\Entity\OffreAccueil;
use App\Entity\AssistantMaternel\AssistantMaternel;
use App\Entity\Referentiel\Periode;
use App\Entity\Referentiel\TypeAccueil;
use App\Entity\Referentiel\LieuAccueil;
use App\Entity\Referentiel\TrancheAge;
use App\Entity\Referentiel\JourSemaine;
use App\Entity\Referentiel\TrancheHoraire;
use App\Entity\Referentiel\FrequenceDispo;
use \JsonSerializable;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="efc.oa_assmat_dispo_public", uniqueConstraints={
* @ORM\UniqueConstraint(name="unicite_dispo_public_creneau", columns={
* "id_assmat", "id_periode", "id_lieu_accueil", "id_type_accueil", "id_tranche_age", "id_jour_semaine", "id_tranche_horaire"
* })
* })
*/
class DispoPublicAssmat implements JsonSerializable
{
use \App\Entity\Commun\IdTrait;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\AssistantMaternel\AssistantMaternel", inversedBy="dispos_public")
* @ORM\JoinColumn(name="id_assmat", referencedColumnName="id", nullable=false)
*/
private $assmat;
use \App\Entity\Commun\Disponibilite\PeriodeTrait;
use \App\Entity\Commun\Disponibilite\LieuAccueilTrait;
use \App\Entity\Commun\Disponibilite\TypeAccueilTrait;
use \App\Entity\Commun\Disponibilite\TrancheAgeTrait;
use \App\Entity\Commun\Disponibilite\JourSemaineTrait;
use \App\Entity\Commun\Disponibilite\TrancheHoraireTrait;
use \App\Entity\Commun\Disponibilite\FrequenceDispoTrait;
use \App\Entity\Commun\Disponibilite\NombrePlacesLibresTrait;
use \App\Entity\Commun\Disponibilite\NombrePlacesTotalTrait;
use \App\Entity\Commun\DateCreationTrait;
use \App\Entity\Commun\DateModificationTrait;
/**
* Set assmat
*
* @param AssistantMaternel $assmat
*
* @return PlanningDispoPublic
*/
public function setAssmat($assmat)
{
$this->assmat = $assmat;
return $this;
}
/**
* Get assmat
*
* @return AssistantMaternel
*/
public function getAssmat()
{
return $this->assmat;
}
/**
* Constructor
*/
public function __construct(AssistantMaternel $assmat, Periode $periode, TypeAccueil $typeAccueil,
LieuAccueil $lieuAccueil, TrancheAge $trancheAge, TrancheHoraire $trancheHoraire, JourSemaine $jourSemaine, FrequenceDispo $frequenceDispo)
{
$this->assmat = $assmat;
$this->periode = $periode;
$this->type_accueil = $typeAccueil;
$this->lieu_accueil = $lieuAccueil;
$this->tranche_age = $trancheAge;
$this->tranche_horaire = $trancheHoraire;
$this->jour_semaine = $jourSemaine;
$this->frequence_dispo = $frequenceDispo;
$this->nombre_places_libres = 0;
$this->nombre_places_total = 0;
$this->setDateCreation(new \DateTime());
}
/*
* Implémentation de JsonSerializable
* Ne liste que les champs modifiables par les utilisateurs
*/
public function jsonSerialize()
{
return [
'j' => $this->jour_semaine->getId(),
'th' => $this->tranche_horaire->getId(),
'ta' => $this->tranche_age->getId(),
'f' => $this->frequence_dispo->getId(),
'nl' => $this->nombre_places_libres,
'nt' => $this->nombre_places_total
];
}
}