<?php
namespace App\Controller\AppModule;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Entity\PaperDetails;
use App\Entity\ContactUs;
use App\Entity\Payment;
use App\Entity\Category;
use App\Entity\PagesInfo;
use App\Entity\Faq;
class RedirectController extends AbstractController
{
public function lanidngInstall(){
$imageFolder = $this->getParameter('index_image'); // replace with your image directory
$images = glob($imageFolder . '/*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$imageNames = array_map(function($image) {
return basename($image);
}, $images);
// dd($imageNames);
// return $this->render('landing/landing.html.twig', ['imageNames' => $imageNames]);
$message = false;
return $this->render('landing/contact_us.html.twig',["message" => $message]);
}
public function AllJournals(Request $request,EntityManagerInterface $em){
$queryParams = $request->query->all();
$journal_type = $request->query->get('journal_type');
$allJournals = [];
$categorys = [];
$sub_cat_name = "";
if(!empty($journal_type)){
if($journal_type == "all"){
$allJournals = $em->getRepository(PaperDetails::class)->findBy(["status" => true]);
}elseif(isset($queryParams['sub_cat'])){
$allJournals = $em->getRepository(PaperDetails::class)->findBy(["journal_type" => $journal_type, "status" => true, 'sub_cat' => $queryParams['sub_cat'] ]);
$sub_cat = $em->getRepository(Category::class)->findOneBy(["id" => $queryParams['sub_cat']]);
$sub_cat_name = $sub_cat->getSubCatName();
}
else{
$allJournals = $em->getRepository(PaperDetails::class)->findBy(["journal_type" => $journal_type, "status" => true]);
$categorys = $em->getRepository(Category::class)->findBy(["parent_cat" => $journal_type, "status" => true]);
}
}
// dd($allJournals,$categorys);
return $this->render('landing/journals.html.twig', ["allJournals" => $allJournals, "journal_type" => $journal_type, "categorys" => $categorys, 'sub_cat_name' =>$sub_cat_name]);
}
public function contractPage( Request $request,EntityManagerInterface $em){
$message = false;
if ($request->isMethod('POST')) {
// Retrieve all form attributes
$formData = $request->request->all();
$firstName = $formData['firstName'];
$lastName = $formData['lastName'];
$email = $formData['email'];
$mobileNo = $formData['mobileNo'];
$message = $formData['message'];
$contactUs = new ContactUs();
$contactUs->setFirstName($firstName);
$contactUs->setLastName($lastName);
$contactUs->setEmail($email);
$contactUs->setMobileNo($mobileNo);
$contactUs->setMessage($message);
$em->persist($contactUs);
$em->flush();
$message = true;
}
return $this->render('landing/contact_us.html.twig',["message" => $message]);
}
public function deleteUser( Request $request,EntityManagerInterface $em){
$message = false;
$email = "";
if ($request->isMethod('POST')) {
// Retrieve all form attributes
$formData = $request->request->all();
$email = $formData['email'];
// $contactUs = new ContactUs();
// $contactUs->setFirstName($firstName);
// $contactUs->setLastName($lastName);
// $contactUs->setEmail($email);
// $contactUs->setMobileNo($mobileNo);
// $contactUs->setMessage($message);
// $em->persist($contactUs);
// $em->flush();
$message = true;
}
return $this->render('landing/deleteuser.html.twig',["message" => $message,"email"=>$email]);
}
public function journalDetails(Request $request,EntityManagerInterface $em){
$journal_id = $request->query->get('journal_id');
$journalDetails = [];
$journal_content = "";
if(!empty($journal_id)){
$journalDetails = $em->getRepository(PaperDetails::class)->findOneBy(["id" => $journal_id, "status" => true]);
$sub_cat_id = $journalDetails->getSubCat();
$sub_cat = $em->getRepository(Category::class)->findOneBy(["id" => $sub_cat_id]);
if(!empty($sub_cat)){
$journal_content = $sub_cat->getCatContent();
}
}
// dd($journalDetails);
return $this->render('landing/journal_details.html.twig', ["journalDetails" => $journalDetails, "journal_content" => $journal_content ]);
}
public function journalSubmition( Request $request){
// dd('here');
if ($request->isMethod('POST')) {
$data = $request->request->all();
$fileData = $request->files->all();
$allData = array_merge($data, $fileData);
// Define required fields
$requiredFields = [
'firstName', 'lastName', 'affiliation', 'telephone', 'email',
'journalName', 'paperTitle', 'abstract', 'paperUpload', 'coverPhoto' , 'journalType'
];
// Check if all required fields exist and are not empty
$missingFields = [];
foreach ($requiredFields as $field) {
if (!array_key_exists($field, $allData) || empty($allData[$field])) {
$missingFields[] = $field;
}
}
// Return error if any required fields are missing
if (!empty($missingFields)) {
// return new JsonResponse(['message' => 'The following fields are required: ' . implode(', ', $missingFields)], 400);
}
// dd($allData,$missingFields);
$paperDetails = new PaperDetails();
$paperDetails->setAuthorFirstName($allData['firstName']);
$paperDetails->setAuthorLastName($allData['lastName']);
$paperDetails->setAuthorAffiliation($allData['affiliation']);
$paperDetails->setAuthorMobileNo($allData['telephone']);
$paperDetails->setAuthorEmail($allData['email']);
$paperDetails->setJournalName($allData['journalName']);
$paperDetails->setPaperTitle($allData['paperTitle']);
$paperDetails->setAbstract($allData['abstract']);
$paperDetails->setJournalType($allData['journalType']);
if (isset($allData['coFirstName']) && !empty($allData['coFirstName']) &&
isset($allData['coLastName']) && !empty($allData['coLastName']) &&
isset($allData['coAffiliation']) && !empty($allData['coAffiliation']) &&
isset($allData['coTelephone']) && !empty($allData['coTelephone']) &&
isset($allData['coEmail']) && !empty($allData['coEmail'])) {
$paperDetails->setCoAuFirstName($allData['coFirstName']);
$paperDetails->setCoAuLastName($allData['coLastName']);
$paperDetails->setCoAuAffiliation($allData['coAffiliation']);
$paperDetails->setCoAuMobileNo($allData['coTelephone']);
$paperDetails->setCoAuEmail($allData['coEmail']);
}
if (isset($allData['sub_cat'])){
$paperDetails->setSubCat($allData['sub_cat']);
}
$em = $this->getDoctrine()->getManager();
$em->persist($paperDetails);
$em->flush();
// Handle cover photo upload
/** @var UploadedFile $coverPhotoFile */
$coverPhotoFile = $allData['coverPhoto'];
if ($coverPhotoFile) {
// Generate unique cover photo file name using paperDetails ID
$coverPhotoFileName = 'cover_' . $paperDetails->getId() . '.' . $coverPhotoFile->guessExtension();
// Move the cover photo file to the designated directory
$coverPhotoFile->move($this->getParameter('cover_photo_directory'), $coverPhotoFileName);
$paperDetails->setCoverUrl($this->getParameter('cover_photo_directory') . '/' . $coverPhotoFileName);
// Set the cover photo URL in the paperDetails object
// $paperDetails->setCoverUrl($coverPhotoFileName);
}
// Handle PDF file upload
/** @var UploadedFile $pdfFile */
$pdfFile = $allData['paperUpload'];
if ($pdfFile) {
// Generate unique PDF file name using paperDetails ID
$pdfFileName = 'paper_' . $paperDetails->getId() . '.' . $pdfFile->guessExtension();
// Move the PDF file to the designated directory
$pdfFile->move($this->getParameter('pdf_directory'), $pdfFileName);
// Set the PDF file URL in the paperDetails object
$paperDetails->setPaperUrl($this->getParameter('pdf_directory') . '/' . $pdfFileName);
// $paperDetails->setPaperUrl($pdfFileName);
}
// Save the paperDetails object to the database
$em->persist($paperDetails);
$em->flush();
return $this->render('landing/landing.html.twig');
// dd($data,$coverPhotoFileName,$pdfFileName);
}
return $this->render('landing/journal_submition.html.twig');
}
public function catalog(Request $request,EntityManagerInterface $em){
$allJournals = $em->getRepository(PaperDetails::class)->findBy(["catalog_status" => true]);
return $this->render('landing/catalog.html.twig', ["allJournals" => $allJournals]);
}
public function paymentDetails(Request $request,EntityManagerInterface $em){
$paymentDetails = $this->getDoctrine()->getRepository(Payment::class)->findOneBy([]);
return $this->render('landing/paymentDetails.html.twig', ["payment" => $paymentDetails ]);
}
public function autoherGuid(Request $request,EntityManagerInterface $em){
return $this->render('landing/autoher.html.twig');
}
public function doiDetails(Request $request,EntityManagerInterface $em){
$paymentDetails = $this->getDoctrine()->getRepository(Payment::class)->findOneBy([]);
return $this->render('landing/doi.html.twig', ["payment" => $paymentDetails ]);
}
public function aboutUs(Request $request,EntityManagerInterface $em){
$PagesInfo = $this->getDoctrine()->getRepository(PagesInfo::class)->findOneBy([]);
$contant = "";
if(!empty($PagesInfo)){
$contant = htmlspecialchars_decode($PagesInfo->getAboutUs());
}
return $this->render('landing/about_us.html.twig',["PagesInfo" => $contant]);
// return $this->render('landing/about_us.html.twig');
}
public function termsPage(Request $request,EntityManagerInterface $em){
$PagesInfo = $this->getDoctrine()->getRepository(PagesInfo::class)->findOneBy([]);
$contant = "";
if(!empty($PagesInfo)){
$contant = htmlspecialchars_decode($PagesInfo->getTermsData());
}
return $this->render('landing/termPage.html.twig',["PagesInfo" => $contant]);
}
public function privacyPage(Request $request,EntityManagerInterface $em){
$PagesInfo = $this->getDoctrine()->getRepository(PagesInfo::class)->findOneBy([]);
$contant = "";
if(!empty($PagesInfo)){
$contant = htmlspecialchars_decode($PagesInfo->getPolicyData());
}
return $this->render('landing/privacy.html.twig',["PagesInfo" => $contant]);
}
public function careerPage(Request $request,EntityManagerInterface $em){
$PagesInfo = $this->getDoctrine()->getRepository(PagesInfo::class)->findOneBy([]);
$contant = "";
if(!empty($PagesInfo)){
$contant = htmlspecialchars_decode($PagesInfo->getCareerData());
}
return $this->render('landing/career.html.twig',["PagesInfo" => $contant]);
}
public function faqPage(Request $request,EntityManagerInterface $em){
$PagesInfo = $this->getDoctrine()->getRepository(Faq::class)->findBy([]);
return $this->render('landing/faq.html.twig',["faqs" => $PagesInfo]);
}
public function logoLink(Request $request,EntityManagerInterface $em){
$PagesInfo = $this->getDoctrine()->getRepository(PagesInfo::class)->findOneBy([]);
// dd($PagesInfo);
$logoLink = [
"facebook" => "#",
"twitter" => "#",
"instagram" => "#",
"linkdin" => "#"
];
if(!empty($PagesInfo)){
$logoLink = [
"facebook" => $PagesInfo->getFaceLink(),
"twitter" => $PagesInfo->getTwiterLink(),
"instagram" => $PagesInfo->getInstaLink(),
"linkdin" => $PagesInfo->getLinkdenLink()
];
}
return new JsonResponse(['status' => 200, "logo_Link" => $logoLink]);
}
}