<?php

namespace AppBundle\Controller;

use AppBundle\Type\UploadType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class FileController extends Controller 
{
    /**
     * @Route("/upload")
     */
    public function uploadAction(Request $request)
    {
        $form = $this->createForm(UploadType::class);

        $form->handleRequest($request);
        if ($form->isSubmitted()) {
            /** @var UploadedFile $uploadedFile */
            $uploadedFile = $form['file']->getData();
            
            $file = $this->get('file_uploader')->upload(
            	$uploadedFile,
            	$uploadedFile->getClientOriginalName()
            );
            
            return new RedirectResponse($this->generateUrl('file', ['id' => $file->getId()]));
        }

        return $this->render('upload.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    /**
     * @Route("/file/{id}", name="file", requirements={"id": "\d+"})
     */
    public function getOneAction(Request $request, $id)
    {
        $file = $this->getDoctrine()->getRepository('AppBundle:File')->find($id);
        if (!$file) {
            throw new NotFoundHttpException();
        }

        return $this->render('file.html.twig', [
            'file' => $file,
        ]);
    }
}