<?php
namespace App\Controller\parc;
use App\Entity\Classification;
use App\Entity\Evenement;
use App\Entity\Media;
use App\Entity\User;
use App\Form\MediaType;
use App\Form\ProfilImageType;
use App\Repository\ClassificationRepository;
use App\Repository\EvenementRepository;
use App\Repository\MediaRepository;
use App\Repository\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use function Sodium\add;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Security;
class ParcController extends AbstractController
{
/**
* @var SessionInterface
*/
private $user;
/**
* @var User|null
*/
private $userConnecter;
private $baseUrl;
public function __construct(Security $security,UserRepository $repository, RequestStack $requestStack)
{
$this->user = $security->getUser();
$this->baseUrl = $requestStack->getCurrentRequest()->getSchemeAndHttpHost();
$this->userConnecter = $repository->find($this->user->getId());
}
/**
* @Route("/parc/confirmation",name="parc.confirmation.compte")
* @param UserRepository $repository
* @return Response
*/
public function cofirmationCompte(UserRepository $repository):Response
{
$id = $this->user->getId();
if (!is_dir("users/" . $id)) {
mkdir("users/" . $id);
mkdir("users/" . $id . "/images");
mkdir("users/" . $id . "/medias");
$repository->EtatCompteUpdt($id);
if ($this->userConnecter->getTypeCompteUser() === 1) {
return $this->redirectToRoute('parc.image');
}
return $this->redirectToRoute('parc.image.signature');
// }
// return $this->redirectToRoute('parc.index');
}
}
/**
* @Route("/parc",name="parc.index")
* @IsGranted("ROLE_ADMIN")
* @param UserRepository $userRepository
* @return Response
*/
public function index(UserRepository $userRepository){
$id = $this->user->getId();
if(!is_dir("users/".$id)) {
return $this->redirectToRoute('parc.confirmation.compte');
}
$media = new Media();
$form = $this->createForm(MediaType::class,$media);
if($this->userConnecter->getTypeCompteUser() === 1){
$UserInfo1 = $userRepository->UserMembrePrefereChoeur(12,$id);
$count = $userRepository->count(['id' => $userRepository->UserMembrePrefereChoeurCount($id)]);
return $this->render('parc/index.html.twig',[
'User' => $this->user,
'UserInfo2' => $UserInfo1,
'form' => $form->createView(),
'totalPreference' => $count
]);
}
$count = $userRepository->count(['id' => $userRepository->UserMembreSignateurCount()]);
$UserInfo2 = $userRepository->UserMembre(12);
return $this->render('parc/profil_signature/index.html.twig',[
'UserInfo2' => $UserInfo2,
'totalPreference' => $count,
'User' => $this->user
]);
}
/**
* @Route("/parc/nouveau/{i}",name="edit.profilImage")
* @param UserRepository $repository
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function edit(UserRepository $repository,Request $request)
{
$user = new User();
$id = $this->user->getId();
$flag = $request->get('i');
$form = $this->createForm(ProfilImageType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$fichier = explode(',', $user->getBase64img());
$decode = base64_decode($fichier[1]);
$default = $this->uniqueId() . '.jpg';
if(!is_dir("users/".$id)) {
mkdir("users/" . $id);
mkdir("users/" . $id . "/images");
mkdir("users/" . $id . "/medias");
}
$fp = fopen('users/'.$id.'/images/'. $default, 'w');
fwrite($fp, $decode);
fclose($fp);
if($flag === '0'){
$repository->UserUpdt('http://chovie.afisarl.com/users/'.$id.'/images/'.$default,$id);
}
else{
$repository->UserUpdtSignature('http://chovie.afisarl.com/users/'.$id.'/images/'.$default,$id);
}
$id = $request->get('id');
return $this->redirectToRoute('parc.index',[
'id' => $id,
]);
}
if($flag === '0'){
return $this->redirectToRoute('parc.image');
}
return $this->redirectToRoute('parc.image.signature');
}
/**
* @Route("/parc/new_media/q?=dy4hixwwH{slug}btred45",name="parc.new_media",requirements={"slug": "[a-z0-9\-]*"})
* @param Request $request
* @param EntityManagerInterface $em
* @param EvenementRepository $evenementRepository
* @param ClassificationRepository $classificationRepository
* @return JsonResponse
*/
public function new_media(Request $request,EntityManagerInterface $em, EvenementRepository $evenementRepository, ClassificationRepository $classificationRepository){
$media = new Media();
$form = $this->createForm(MediaType::class,$media);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$md5 = md5(uniqid());
if(!is_dir("users/" . $media->getUserPub()->getId())){
mkdir("users/" . $media->getUserPub()->getId());
mkdir("users/" . $media->getUserPub()->getId() . "/images");
mkdir("users/" . $media->getUserPub()->getId() . "/medias");
mkdir("users/" . $media->getUserPub()->getId() . "/images/couverture");
}
if(!is_dir("users/" . $media->getUserPub()->getId() . "/images/couverture")){
mkdir("users/" . $media->getUserPub()->getId() . "/images/couverture");
}
$type = $_FILES['FichierMp4']['type'];
$file = $_FILES['FichierMp4']['tmp_name'];
$filename = $this->uniqueId().'-'.$media->getUserPub()->getId();
mkdir('users/'.$media->getUserPub()->getId().'/medias/'.$filename);
$path = 'users/'.$media->getUserPub()->getId().'/medias/'.$filename.'/';
$path_couverture = 'users/'.$media->getUserPub()->getId().'/images/couverture/';
$fname = $_FILES['FichierMp4']['name'];
$files = new UploadedFile($file,$fname,$type);
$fileN = $filename.'.'.$files->guessExtension();
$files->move(
$path,
$fileN
);
$media->setNomExtMedia($filename);
if(!is_dir("users/" . $media->getUserPub()->getId() . "/images/couverture/".$md5)){
mkdir("users/" . $media->getUserPub()->getId() . "/images/couverture/".$md5);
}
$total = count($_FILES['FichierImages']['name']);
$pathCouverture = 'users/'.$media->getUserPub()->getId().'/images/couverture/'.$md5.'/';
$AllNameImage = '';
for( $i=0 ; $i < $total ; $i++ ) {
$tmpFilePath = $_FILES['FichierImages']['tmp_name'][$i];
$file_extension = $_FILES['FichierImages']['type'][$i];
$validextensions = array("image/jpeg", "image/jpg", "image/png");
$ext = explode('/', basename($file_extension));
$filename = $pathCouverture . $md5 . "-".$i.".". $ext[0];
if (($_FILES["FichierImages"]["size"][$i] < 1000000)
&& in_array($file_extension, $validextensions)) {
move_uploaded_file($tmpFilePath, $filename);
$flag = $total - 1 == $i ? '' :'#-@';
$AllNameImage .= $this->baseUrl.'/'.$filename.$flag;
}
}
$media->setUrlCouverture($AllNameImage);
$media->setUser($media->getUserPub()->getId());
if($media->getEvenements()->current())
$evenementRepository->find($media->getEvenements()->current())->addMedium($media);
if($media->getClassifications()->current())
$classificationRepository->find($media->getClassifications()->current())->addMedium($media);
$em->persist($media);
$em->flush();
return $this->json(['message' => '1'],200);
}
return $this->json(['message' => '0'], 200);
}
/**
* Permet d'afficher les publications du parc
*
* @Route("/parc/monparc/php?q=1x09yb88z{q}", name="monp.parc")
* @ParamConverter("user", options={"id" = "q"})
* @param MediaRepository $repository
* @param Request $request
* @return Response
*/
public function monparc(MediaRepository $repository,Request $request):Response
{
$user = $this->user->getId();
$flag = 5;
$visi = $request->get('q');
$req_user = $repository->getMedia($user,$flag,$visi);
return $this->render('parc/_play_media_parc.html.twig',[
'q' => $flag,
'Media' => $req_user,
'User' => $this->user
]);
}
/**
* Permet d'afficher les publications du clan
*
* @Route("/parc/monclan/clan/php?q=2x09yb88z{q}", name="monclan.parc")
* @ParamConverter("user", options={"id" = "q"})
* @param MediaRepository $repository
* @param UserRepository $userRepository
* @param Request $request
* @return Response
*/
public function monclan(MediaRepository $repository,UserRepository $userRepository,Request $request):Response
{
$user = $this->user->getId();
$clan = $userRepository->find($user);
$clan_id = $clan->getClan()->getId();
$req_user = $repository->getMediaClan($clan_id,2,$user);
return $this->render('parc/_play_media_parc.html.twig',[
'q' => '6',
'Media' => $req_user,
'User' => $this->user
]);
}
/**
* Permet d'afficher les publications de la congrégation (Eglise)
*
* @Route("/parc/monEglise/eglise/php?q=3x09yb88z{q}", name="monEglise.parc")
* @ParamConverter("user", options={"id" = "q"})
* @param MediaRepository $repository
* @param UserRepository $userRepository
* @param Request $request
* @return Response
*/
public function monEglise(MediaRepository $repository,UserRepository $userRepository,Request $request):Response
{
$user = $this->user->getId();
$Eglise = $userRepository->find($user);
$eglise_id = $Eglise->getEglise()->getId();
$req_user = $repository->getMediaClan($eglise_id,3,$user);
return $this->render('parc/_play_media_parc.html.twig',[
'q' => '7',
'Media' => $req_user,
'User' => $this->user
]);
}
/**
* @Route("/parc/edit_profil_image", name="parc.image")
* @param UserRepository $userRepository
* @return Response
*/
public function edit_profil_image(UserRepository $userRepository):Response
{
$user = $this->user->getId();
$UserInfo = $userRepository->find($user);
$user = new User();
$FormProfil = $this->createForm(ProfilImageType::class,$user);
return $this->render('parc/editerImageProfil/profil_image.html.twig',[
'q' => $user->getId(),
'form' => $FormProfil->createView(),
'User' => $UserInfo
]);
}
/**
* @Route("/parc/edit_profil_image_signature", name="parc.image.signature")
* @param UserRepository $userRepository
* @return Response
*/
public function edit_profil_image_signature(UserRepository $userRepository):Response
{
$user = $this->user->getId();
$UserInfo = $userRepository->find($user);
$user = new User();
$FormProfil = $this->createForm(ProfilImageType::class,$user);
return $this->render('parc/editerImageProfil/profil_image_signature.html.twig',[
'q' => $user->getId(),
'form' => $FormProfil->createView(),
'User' => $UserInfo
]);
}
/**
* @return string
*/
private function uniqueId():string {
return md5(uniqid());
}
}