<?php
namespace App\Service;
use App\Entity\Animal;
use App\Entity\Event;
use App\Entity\EventData;
use App\Entity\Organization;
use App\Entity\Producer;
use App\Entity\Treatment;
use App\Entity\User;
use App\Entity\UserType;
use App\Service\Common\Tools;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Container\ContainerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Security;
use Symfony\Contracts\Translation\TranslatorInterface; /* */
class OrganizationService
{
use Tools;
private \App\Repository\OrganizationRepository|\Doctrine\ORM\EntityRepository $organizationRepository;
private \App\Repository\EventDataRepository|\Doctrine\ORM\EntityRepository $eventDataRepository;
private \App\Repository\AnimalRepository|\Doctrine\ORM\EntityRepository $animalRepository;
private \App\Repository\UserRepository|\Doctrine\ORM\EntityRepository $userRepository;
private \App\Repository\TreatmentRepository|\Doctrine\ORM\EntityRepository $treatmentRepository;
private TokenStorageInterface $tokenStorage;
private Security $security;
private TranslatorInterface $translator;
private ContainerInterface $container;
private EntityManagerInterface $em;
public function __construct(
ContainerInterface $container,
EntityManagerInterface $em,
TokenStorageInterface $tokenStorage,
Security $security,
TranslatorInterface $translator
) {
$this->container = $container;
$this->em = $em;
$this->organizationRepository = $this->em->getRepository(Organization::class);
$this->eventDataRepository = $this->em->getRepository(EventData::class);
$this->animalRepository = $this->em->getRepository(Animal::class);
$this->userRepository = $this->em->getRepository(User::class);
$this->treatmentRepository = $this->em->getRepository(Treatment::class);
$this->tokenStorage = $tokenStorage;
$this->security = $security;
$this->translator = $translator; /* */
}
public function getListCsv( Request $request )
{/*{{{*/
$_ = $this->translator; /* */
$repository = $this->organizationRepository;
/* DEBUG: sin no tiene la organizacion muestra todo, ojo */
$organizationId = $this->security->getUser()->getOrganization()?->getId();
$qb = $repository->getListQuery( $organizationId );
$qb = $repository->filterBuilder( $request, $qb );
return $this->getCsv( $request, $repository, $qb );
}/*}}}*/
/* de logica ligera */
public function create(Organization $organization) {
$this->em->persist($organization);
$this->em->flush();
return $organization;
}
public function findAll()
{
return $this->organizationRepository->findAll();
}
public function findBy($criteria, $order = null, $limit = null, $offset = null)
{
return $this->organizationRepository->findBy($criteria, $order, $limit, $offset);
}
/**
* @param $criteria
* @return object|null
*/
public function findOneBy($criteria)
{
return $this->organizationRepository->findOneBy($criteria);
}
public function findOrganizationsByUser()
{
# Organizations List
$user = $this->tokenStorage->getToken()->getUser();
$organizations = $this->organizationRepository->findOrganizationsByUser($user);
return $organizations;
}
/* migrado de OrganizationSeeker.php */
}