You need to sign in or sign up before continuing.
Select Git revision
local.php.dist
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
IntervenantViewHelper.php 4.82 KiB
<?php
namespace Application\View\Helper\Intervenant;
use Application\Constants;
use Zend\View\Helper\AbstractHtmlElement;
use Application\Entity\Db\Intervenant;
use Application\Entity\Db\Traits\IntervenantAwareTrait;
/**
* Description of Intervenant
*
* @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
*/
class IntervenantViewHelper extends AbstractHtmlElement
{
use IntervenantAwareTrait;
/**
*
* @param Intervenant $intervenant
*
* @return self
*/
public function __invoke(Intervenant $intervenant = null)
{
if ($intervenant) $this->setIntervenant($intervenant);
return $this;
}
public function __toString()
{
return $this->render();
}
/**
*
*
* @return string Code HTML
*/
public function render()
{
$entity = $this->getIntervenant();
if (!$entity) {
return '';
}
$vars = [
'identite' => [
"NOM prénom" => $entity,
"Civilité" => (string)$entity->getCivilite(),
"Date de naissance" => (string)$entity->getDateNaissance()->format(Constants::DATE_FORMAT),
"Commune de naissance" => (string)$entity->getCommuneNaissance() ?: '<span class="inconnu">(Inconnue)</span>',
"Pays de naissance" => (string)$entity->getPaysNaissance(),
],
'coordonnees' => [
"Email" => $entity->getEmailPro() ?: '<span class="inconnu">(Inconnu)</span>',
"Téléphone perso" => $entity->getTelPerso() ?: '<span class="inconnu">(Inconnu)</span>',
"Téléphone pro" => $entity->getTelPro() ?: '<span class="inconnu">(Inconnu)</span>',
"Adresse" => nl2br($entity->getAdresse(false)),
],
'metier' => [
"Type d'intervenant" => $entity->getStatut()->getTypeIntervenant(),
"Statut de l'intervenant" => $entity->getStatut(),
"N° {$entity->getSource()}" => $entity->getSourceCode(),
"Affectation principale" => $entity->getStructure() ?: '<span class="inconnu">(Inconnue)</span>',
"Affectation recherche" => count($aff = $entity->getAffectation()) ? implode(" ; ", $aff->toArray()) : '<span class="inconnu">(Inconnue)</span>',
"Discipline" => $entity->getDiscipline() ?: '<span class="inconnu">(Inconnue)</span>',
"Montant de l'indemnité FC" => $entity->getMontantIndemniteFc() !== null ? \UnicaenApp\Util::formattedEuros($entity->getMontantIndemniteFc()) : '<span class="inconnu">(Inconnue)</span>',
],
'divers' => [
"Id" => $entity->getId(),
//"Id de connexion" => ($u = $entity->getUtilisateur()) ? $u->getUsername() : "(Aucun)",
],
];
$html = '';
foreach ($vars as $bloc => $vvs) {
$html .= "<dl class=\"intervenant intervenant-$bloc dl-horizontal\">\n";
foreach ($vvs as $key => $value) {
$html .= "\t<dt>$key :</dt><dd>$value</dd>\n";
}
$html .= "</dl>";
}
if ($entity->getHistoDestruction()) {
$msg = 'Cet intervenant a été supprimé de OSE le ' . $entity->getHistoDestruction()->format(Constants::DATE_FORMAT) . '.';
if ($entity->getSource()->getCode() !== \Application\Service\SourceService::CODE_SOURCE_OSE) {
$msg .= ' Sa fiche ne remonte plus depuis l\'application ' . $entity->getSource() . '.';
}
$html .= '<div class="alert alert-danger">' . $msg . '</div>';
}
//$html .= $this->getView()->historique($entity); => pas de sens ici
return $html;
}
public function renderLink()
{
$intervenant = $this->getIntervenant();
if (!$intervenant) return '';
if ($intervenant->getHistoDestruction()) {
return '<span class="bg-danger"><abbr title="Cet intervenant a été supprimé de OSE">' . $intervenant . '</abbr></span>';
}
$pourl = $this->getView()->url('intervenant/voir', ['intervenant' => $intervenant->getId()]);
$out = '<a href="' . $pourl . '" data-po-href="' . $pourl . '" class="ajax-modal">' . $intervenant . '</a>';
return $out;
}
public function renderTitle(?string $title)
{
$title = 'tt' . $title;
$intervenant = $this->getIntervenant();
//echo $intervenant . ' <small>' . $intervenant->getStatut() . '</small>';
$this->getView()->headTitle()->append($intervenant->getNomUsuel())->append($title);
$title .= ' <small>' . $intervenant . '</small>';
echo $this->getView()->tag('h1', ['class' => 'page-header'])->html($title);
}
}