<commit_before><?php

namespace DocumentBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use DocumentBundle\Entity\Documento;
use DocumentBundle\Form\Type\DocumentoType;
use DocumentBundle\Form\Type\DocumentoEditType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use FOS\UserBundle\Model\UserInterface;
use UserBundle\Entity\Usuario;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;

/**
 * Documento controller.
 *
 * @Route("/documento")
 */
class DocumentoController extends Controller
{
    /**
     * Lists all Documento entities.
     *
     * @Route("/", name="documento")
     * @Method("GET")
     * @Template()
     */
    public function indexDocumentoAction()
    {
        $em = $this->getDoctrine()->getManager();

        $entities = $em->getRepository('DocumentBundle:Documento')->findAll();

        return [
            'entities' => $entities,
        ];
    }
    /**
     * Creates a new Documento entity.
     *
     * @Route("/",name="documento_create")
     * @Method("POST")
     * @Template("DocumentBundle:Documento:newDocumento.html.twig")
     */
    public function createAction(Request $request)
    {
        $usuario = $this->get('security.token_storage')->getToken()->getUser();
        if (!is_object($usuario) || !$usuario instanceof UserInterface) {
            throw new AccessDeniedException('El usuario no tiene acceso.');
        }
        $entity = new Documento();
        $entity->setUsuario($usuario);
        $form = $this->createNewForm($entity, $usuario);
        $form->handleRequest($request);
        $em = $this->getDoctrine()->getManager();

        $pre_duplicados = $em->getRepository('DocumentBundle:Documento')->findBy([
                    'curso' => $entity->getCurso(),
        ]);

        foreach ($pre_duplicados as $duplicado) {
            foreach($form['documentFile'] as $documento){
                if ($duplicado->getDocumentFixedName() == $documento->getClientOriginalName()) {
                    $this->get('braincrafted_bootstrap.flash')->error(sprintf('El nombre del documento ya existe en el curso'));

                    return [
                        'duplicado' => $duplicado,
                        'form' => $form->createView(),
                    ];
                }
            }
        }

        if ($form->isValid()) {

            //método que guarda cada archivo con entidad separada
            $cantidadDocs = $this->setMultipleUpload($form->getData());

            $em = $this->getDoctrine()->getManager();

            $entities = $em->getRepository('DocumentBundle:Documento')->findAll();
            $cantidad = count($entities);
            $entidades = [];
            $contadorActual = 0;

            //No me acuerdo para que es este ciclo
            //pero creo que es para mostrar los últimos documentos creados
            foreach($entities as $entidad){
                if ($contadorActual>($cantidad-$cantidadDocs)){
                    $entidades[] = $entidad;
                }
                $contadorActual = $contadorActual+1;
            }   

            //ahora, enviar correos
            $usuarios = $entity->getCurso()->getUsuarios();
            foreach($usuarios as $user ){
                //los args son el correo de la persona que subió el archivo
                //los correos de los usuarios asignados al curso, incluyendo al creador del curso.
                $this->sendEmail($usuario->getEmail(), $user->getEmail());
            }

            return $this->render('DocumentBundle:Documento:indexDocumento.html.twig',[
                    'entities' => $entidades
                ]);
        }

        return [
            'entity' => $entity,
            'form' => $form->createView(),
        ];
    }

    private function setMultipleUpload($data)
    {
            $em = $this->getDoctrine()->getManager();
            $i=1;
           
            foreach ($data['documentFile'] as $item) {
                $document = new Documento();
                $document->setTipoDocumento($data['tipoDocumento']);
                $document->setCurso($data['curso']);
                $document->setUsuario($this->getUser());
                $document->setDocumentFile($item);
                $document->setMensaje($data['mensaje']);
                $em->persist($document);
                
                $i++;

            }<commit_msg>disable email<commit_after><?php

namespace DocumentBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use DocumentBundle\Entity\Documento;
use DocumentBundle\Form\Type\DocumentoType;
use DocumentBundle\Form\Type\DocumentoEditType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use FOS\UserBundle\Model\UserInterface;
use UserBundle\Entity\Usuario;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;

/**
 * Documento controller.
 *
 * @Route("/documento")
 */
class DocumentoController extends Controller
{
    /**
     * Lists all Documento entities.
     *
     * @Route("/", name="documento")
     * @Method("GET")
     * @Template()
     */
    public function indexDocumentoAction()
    {
        $em = $this->getDoctrine()->getManager();

        $entities = $em->getRepository('DocumentBundle:Documento')->findAll();

        return [
            'entities' => $entities,
        ];
    }
    /**
     * Creates a new Documento entity.
     *
     * @Route("/",name="documento_create")
     * @Method("POST")
     * @Template("DocumentBundle:Documento:newDocumento.html.twig")
     */
    public function createAction(Request $request)
    {
        $usuario = $this->get('security.token_storage')->getToken()->getUser();
        if (!is_object($usuario) || !$usuario instanceof UserInterface) {
            throw new AccessDeniedException('El usuario no tiene acceso.');
        }
        $entity = new Documento();
        $entity->setUsuario($usuario);
        $form = $this->createNewForm($entity, $usuario);
        $form->handleRequest($request);
        $em = $this->getDoctrine()->getManager();

        $pre_duplicados = $em->getRepository('DocumentBundle:Documento')->findBy([
                    'curso' => $entity->getCurso(),
        ]);

        foreach ($pre_duplicados as $duplicado) {
            foreach($form['documentFile'] as $documento){
                if ($duplicado->getDocumentFixedName() == $documento->getClientOriginalName()) {
                    $this->get('braincrafted_bootstrap.flash')->error(sprintf('El nombre del documento ya existe en el curso'));

                    return [
                        'duplicado' => $duplicado,
                        'form' => $form->createView(),
                    ];
                }
            }
        }

        if ($form->isValid()) {

            //método que guarda cada archivo con entidad separada
            $cantidadDocs = $this->setMultipleUpload($form->getData());

            $em = $this->getDoctrine()->getManager();

            $entities = $em->getRepository('DocumentBundle:Documento')->findAll();
            $cantidad = count($entities);
            $entidades = [];
            $contadorActual = 0;

            //No me acuerdo para que es este ciclo
            //pero creo que es para mostrar los últimos documentos creados
            foreach($entities as $entidad){
                if ($contadorActual>($cantidad-$cantidadDocs)){
                    $entidades[] = $entidad;
                }
                $contadorActual = $contadorActual+1;
            }   

            //ahora, enviar correos
            /*$usuarios = $entity->getCursos()->getUsuarios();
            foreach($usuarios as $user ){
                //los args son el correo de la persona que subió el archivo
                //los correos de los usuarios asignados al curso, incluyendo al creador del curso.
                $this->sendEmail($usuario->getEmail(), $user->getEmail());
            }*/

            return $this->render('DocumentBundle:Documento:indexDocumento.html.twig',[
                    'entities' => $entidades
                ]);
        }

        return [
            'entity' => $entity,
            'form' => $form->createView(),
        ];
    }

    private function setMultipleUpload($data)
    {
            $em = $this->getDoctrine()->getManager();
            $i=1;
           
            foreach ($data['documentFile'] as $item) {
                $document = new Documento();
                $document->setTipoDocumento($data['tipoDocumento']);
                $document->setCurso($data['curso']);
                $document->setUsuario($this->getUser());
                $document->setDocumentFile($item);
                $document->setMensaje($data['mensaje']);
                $em->persist($document);
                
                $i++;

            }
{'fraction_non_alphanumeric': 0.13630041724617525, 'fraction_numerical': 0.000641917192682144, 'mean_word_length': 2.1390194761584955, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 105, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5212677', 'n_tokens_mistral': 2570, 'n_tokens_neox': 2531, 'n_words': 457}