<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use App\Services\ProcessEditFlatForm;
use App\Entity\User;
use App\Entity\Flat;
use App\Entity\RentalConditions;
use App\Form\Type\FlatType;
class EditFlat extends AbstractController{
/**
* @Route("{_locale}/user/edit-flat/{id}", name="edit_flat", requirements={"_locale": "es|en"})
*/
public function index($id = '', Request $request){
//get user
$user = $this->getUser();
//get room data
$flat = $this->getDoctrine()->getRepository(Flat::class)
->findOneBy(array('id' => $id, 'user'=>$user->getId() ));
//rental conditions array
$rp = $this->getDoctrine()->getRepository(RentalConditions::class);
$rtConditons = $rp->findOneBy(['listingType' => 'flat']);
//create form
$form =$this->createForm(FlatType::class, $flat);
//get form data
$form->handleRequest($request);
//saved or not saved state
$savedOk = '';
if ($form->isSubmitted() && $form->isValid()) {
/** @var UploadedFile $brochureFile */
$brochureFile = $form->get('images')->getData();
//store each image name
$imageArray = array();
foreach($brochureFile as $k => $v){
$newFilename = uniqid().'.'.$v->guessExtension();
// Move the file to the directory where brochures are stored
try {
$v->move(
$this->getParameter('flat_media'),
$newFilename
);
$imageArray[] = $newFilename;
} catch (FileException $e) {
continue;
}
}
//create ProcessRoomPublishForm bject
$saveFlatService = new ProcessEditFlatForm($this->getDoctrine()->getManager(),
$imageArray,
$user,
$id);
$savedOk = $saveFlatService->editFlat($form);
}
if($savedOk == true){
return $this->redirectToRoute('edit_flat', ['id'=>$id]);
}
//var_dump($savedOk);die();
return $this->render('user/edit/_edit_flat.html.twig', [
'flat'=>$flat,
'form'=>$form->createView(),
'conditions'=>$rtConditons
]);
}
}