File: /home/undanet/www/PortalEmpleo/src/Repository/DBUserRepository.php
<?php
namespace PortalEmpleo\Repository;
require __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/../../bootstrap.php';
use Dotenv\Dotenv;
use PortalEmpleo\Entity\User;
use Doctrine\Common\Collections\Criteria;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class DBUserRepository extends AbstractController
{
private $dotenv;
private $entityManager;
public function __construct()
{
}
private function loadEnv()
{
try{
$dotenv = Dotenv::createImmutable(__DIR__ . "/../../");
$dotenv->load();
$em = getEntityManager();
return $em;
}
catch (Exception $ex){
echo $exception->getMessage();
return null;
}
}
public function obtenerUsuarios()
{
try{
$entityManager = $this->loadEnv();
//$lUsers = getEntityManager()->getRepository(User::class)->findAll();
/*$lUsers = getEntityManager()->getRepository(User::class)->where([
'stage!=' => false,
])->find();*/
$lUsers = $entityManager->getRepository(User::class)
->createQueryBuilder('u')
->where('u.baja = false')
->orWhere('u.baja is NULL')
->orderBy('u.id', 'ASC')
->getQuery()
->execute();
//Otra forma que funciona, pero devuelve un LazyCriteriaCollection en lugar de una lista de elementos de la clase
/*$criteria = Criteria::create()
->where(Criteria::expr()->isNull('baja'))
->orWhere(Criteria::expr()->eq('baja', false)); //tambien existe andWhere
$lUsers = $entityManager->getRepository(User::class)->matching($criteria);*/
$entityManager->getConnection()->close();
return $lUsers;
}
catch (Exception $ex){
echo $exception->getMessage();
return null;
}
}
/**
* @Route("/modificarUsuario/{id}/{name}")
*/
public function modificarUsuario($id, $name)
{
try{
$entityManager = $this->loadEnv();
$user = $entityManager->getRepository(User::class)->find($id);
if (!$user) {
throw $this->createNotFoundException(
'No se encuentra el usuario con el id '.$id
);
}
$user = $user->setUsername($name);
$entityManager->flush();
$entityManager->clear();
$entityManager->getConnection()->close();
}
catch (Exception $exception){
echo $exception->getMessage();
}
}
public function eliminarUsuario($id)
{
try{
$entityManager = $this->loadEnv();
$user = $entityManager->getRepository(User::class)->find($id);
/*FUNCIONA EL RECUPERAR PERO LUEGO NO DEJA HACER EL SETTER (ver tambien la funcion obtenerUsuarios)
$criteria = Criteria::create()
->where(Criteria::expr()->eq('id',$id))
->andWhere(
Criteria::expr()->orX(
Criteria::expr()->isNull('baja'),
Criteria::expr()->eq('baja', false)
)
);
$user = $entityManager->getRepository(User::class)->matching($criteria);*/
if (!$user) {
throw $this->createNotFoundException(
'No se encuentra el usuario con el id '.$id
);
}
$user = $user->setBaja(true);
$entityManager->flush();
$entityManager->clear();
$entityManager->getConnection()->close();
}
catch (Exception $exception){
echo $exception->getMessage();
}
}
/**
* @Route("/altaNuevoUsuario/{name}")
*/
public function altaNuevoUsuario($name)
{
try{
$entityManager = $this->loadEnv();
$user = new User($name);
$user = $user->setBaja(false);
$entityManager->persist($user);
$entityManager->flush();
$entityManager->clear();
$entityManager->getConnection()->close();
}catch (Exception $exception){
echo $exception->getMessage();
}
}
}
?>