HEX
Server: Apache
System: Linux clpupre 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64
User: undanet (1000)
PHP: 7.4.3
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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();
        }
    }
}

?>