mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 01:08:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| /*
 | |
|  * Chill is a software for social workers
 | |
|  *
 | |
|  * For the full copyright and license information, please view
 | |
|  * the LICENSE file that was distributed with this source code.
 | |
|  */
 | |
| 
 | |
| namespace Chill\MainBundle\Templating\Entity;
 | |
| 
 | |
| use Chill\MainBundle\Entity\User;
 | |
| use Chill\MainBundle\Templating\TranslatableStringHelper;
 | |
| use DateTimeImmutable;
 | |
| 
 | |
| use Symfony\Component\Templating\EngineInterface;
 | |
| use Symfony\Contracts\Translation\TranslatorInterface;
 | |
| use function array_merge;
 | |
| 
 | |
| class UserRender implements ChillEntityRenderInterface
 | |
| {
 | |
|     public const DEFAULT_OPTIONS = [
 | |
|         'main_scope' => true,
 | |
|         'user_job' => true,
 | |
|         'absence' => true,
 | |
|     ];
 | |
| 
 | |
|     private EngineInterface $engine;
 | |
| 
 | |
|     private TranslatableStringHelper $translatableStringHelper;
 | |
| 
 | |
|     private TranslatorInterface $translator;
 | |
| 
 | |
|     public function __construct(TranslatableStringHelper $translatableStringHelper, EngineInterface $engine, TranslatorInterface $translator)
 | |
|     {
 | |
|         $this->translatableStringHelper = $translatableStringHelper;
 | |
|         $this->engine = $engine;
 | |
|         $this->translator = $translator;
 | |
|     }
 | |
| 
 | |
|     public function renderBox($entity, array $options): string
 | |
|     {
 | |
|         $opts = array_merge(self::DEFAULT_OPTIONS, $options);
 | |
| 
 | |
|         return $this->engine->render('@ChillMain/Entity/user.html.twig', [
 | |
|             'user' => $entity,
 | |
|             'opts' => $opts,
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param User $entity
 | |
|      */
 | |
|     public function renderString($entity, array $options): string
 | |
|     {
 | |
|         $opts = array_merge(self::DEFAULT_OPTIONS, $options);
 | |
| 
 | |
|         $str = $entity->getLabel();
 | |
| 
 | |
|         if (null !== $entity->getUserJob() && $opts['user_job']) {
 | |
|             $str .= ' (' . $this->translatableStringHelper
 | |
|                 ->localize($entity->getUserJob()->getLabel()) . ')';
 | |
|         }
 | |
| 
 | |
|         if (null !== $entity->getMainScope() && $opts['main_scope']) {
 | |
|             $str .= ' (' . $this->translatableStringHelper
 | |
|                 ->localize($entity->getMainScope()->getName()) . ')';
 | |
|         }
 | |
| 
 | |
|         if ($entity->isAbsent() && $opts['absence']) {
 | |
|             $str .= ' (' . $this->translator->trans('absence.Absent') . ')';
 | |
|         }
 | |
| 
 | |
|         return $str;
 | |
|     }
 | |
| 
 | |
|     public function supports($entity, array $options): bool
 | |
|     {
 | |
|         return $entity instanceof User;
 | |
|     }
 | |
| }
 |