<?php
namespace App\Controller;
use http\Header;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Events;
use Pimcore\Model\DataObject\Service;
use Pimcore\Model\DataObject\Userloyaltyprogram;
use App\Form\RegistrationFormType;
use App\Form\CofiqueRegistrationFormType;
use Symfony\Contracts\Translation\TranslatorInterface;
use Pimcore\Model\DataObject\EventRegistrationForm;
use Pimcore\Model\DataObject\CofiqueRegistrationForm;
use Pimcore\Model\Asset\Image;
use App\Service\EmailService;
use CustomerManagementFrameworkBundle\CustomerSaveValidator\Exception\DuplicateCustomerException;
//use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
class EventsController extends FrontendController
{
public function eventAction(Request $request){
$featured_events = new Events\Listing();
$featured_events->setCondition('featured IN (?)','1');
//$featured_events->addConditionParam('date_time >= ?',time());
$featured_events->setLimit(1);
$featured_events->load();
$F_event_id = 0;
foreach($featured_events as $Featured_events){
$F_event_id=$Featured_events->getId();
break;
}
//most recent event
$recent_events = new Events\Listing();
// $recent_events->setCondition('date_time >= ?',time());
//$recent_events->setOrderKey("date_time");
//$recent_events->setOrder("asc");
$recent_events->setLimit(1);
$recent_events->load();
$R_event_id =0;
foreach($recent_events as $Recent_events){
$R_event_id = $Recent_events->getId();
break;
}
$events = new Events\Listing();
$currentDateTime = new \DateTime();
if($request->get('data')){
if($request->get('data') == 'Upcoming_Events'){
$events->setCondition('date_time > ?',strtotime($currentDateTime->format('Y-m-d H:i')));
}elseif ($request->get('data') == 'Past_Events') {
$events->setCondition('date_time < ?',strtotime($currentDateTime->format('Y-m-d H:i')));
}
}else{
$events->setCondition('date_time < ?',strtotime($currentDateTime->format('Y-m-d H:i')));
}
$events->load();
return $this->render('events/events.html.twig',[
'events'=>$events,
'featuredevents'=>$featured_events,
'recent_events'=>$Recent_events
]);
}
public function eventdetailsAction(Request $request)
{
$request->get('url');
$event_detail = new Events\Listing();
$event_detail->setCondition('url = ?',[$request->get('url')]);
$event_detail->load();
foreach($event_detail as $eventdetail){
$obj_id = $eventdetail->getId();
break;
}
$uid = $this->get('session')->get('loginUID');
$Liked = new Userloyaltyprogram\Listing();
$Liked->setCondition("op_name = ? and u_id = ? and obj_data__id = ?",['Like',$uid,$obj_id]);
$Liked->load();
return $this->render('events/events-detail.html.twig',
[
'eventdetail'=>$eventdetail,
'Liked'=>$Liked,
]
);
}
/**
* @Route("/{locale}/events/chef-competition", name="event_competition")
*/
public function eventCompetitionAction(Request $request, TranslatorInterface $translator)
{
$errors = [];
$form = $this->createForm(RegistrationFormType::class, null, [
'translator' => $translator,
]);
$form->handleRequest($request);
if ($form->isSubmitted()) {
// Remember scroll position before form submission
if ($form->isValid()) {
$data = $form->getData();
$user = EventRegistrationForm::getByEmailAddress($data["emailAddress"], true);
if ($user && $user instanceof EventRegistrationForm) {
$this->addFlash("danger", $translator->trans("Email already exists. Please use a different email address."));
return $this->redirectToRoute('event_competition', ['locale' => $request->getLocale(), '_fragment' => 'yourAnchor']);
} else {
$asset=$this->uploadImage($form->get('dishImage'));
//$data['assetFile'] = $asset;
if ($this->saveUser($data,$asset)) {
$mail = new EmailService();
// $request->getLocale()
$doc = '/en/emails/user_registration';
if($request->getLocale() == 'ar'){
$doc = '/ar/emails/user_registration';
}
$mail->sendEmail($data['emailAddress'], 'Thank You for Registering in the first ZADK & GCS Saudi Fusion Culinary Competition!', $doc, $data);
$data['assetFile'] = $asset;
$mail->sendEmail('naa@goody.com.sa', $data['fullName'], '/en/emails/registration_user_data', $data);
$mail->sendEmail('chef.chris@zadk.com.sa', $data['fullName'], '/en/emails/registration_user_data', $data);
$mail->sendEmail('bmr@goody.com.sa', $data['fullName'], '/en/emails/registration_user_data', $data);
$this->addFlash("success", $translator->trans("Thank you for registering! We will contact you soon."));
// Redirect to the anchor after form submission
return $this->redirectToRoute('event_competition', ['locale' => $request->getLocale(), '_fragment' => 'yourAnchor']);
}
}
}
}
// If the form is not valid or not submitted, render the template without redirection
return $this->render('events/events-competition.html.twig', [
'form' => $form->createView()
]);
}
public function errorEventAction(Request $request){
// return $this->json(['something'=>'soemthing']);
// dd($httpException.getStatusCode());
return $this->render('errors/error-en.html.twig');
}
// /**
// * @Route("/registration-form", name="registration-form")
// */
// public function registrationAction(Request $request ,TranslatorInterface $translator){
// $errors =[];
// $form = $this->createForm(RegistrationFormType::class,null, [
// 'translator' => $translator,
// ]);
// $form->handleRequest($request);
// if ($form->isSubmitted() && $form->isValid()) {
// $data = $form->getData();
// try{
// $user=EventRegistrationForm::getByEmailAddress($data["emailAddress"],true);
// if($this->saveUser($data)){
// $mail=new EmailService();
// $mail->sendEmail($data['emailAddress'],'Thank You for Registering in the first ZADK & GCS Saudi Fusion Culinary Competition!','/en/emails/user_registration',$data);
// $mail->sendEmail('samrat.kumar@centric.ae',$data['fullName'],'/en/emails/registration_user_data',$data);
// $this->addFlash("success",$translator->trans("Thank you for your query. Our representatives wil respond to your query very soon."));
// }
// $response = $this->redirectToRoute('registration-form');
// } catch (DuplicateCustomerException $e) {
// $errors[] = $translator->trans(
// 'account.customer-already-exists',
// [
// $customer->getEmail(),
// $urlGenerator->generate('account-password-send-recovery', ['email' => $customer->getEmail()])
// ]
// );
// } catch (\Exception $e) {
// $errors[] = $e->getMessage();
// }
// }
// if ($form->isSubmitted() && !$form->isValid()) {
// foreach ($form->getErrors() as $error) {
// $errors[] = $error->getMessage();
// }
// }
// return $this->render('events/event-registationform.html.twig', [
// 'form' => $form->createView(),
// 'errors' => $errors,
// ]);
// }
public function saveUser($data,$asset){
$register=new EventRegistrationForm();
$register->setParent(Service::createFolderByPath('Registration ZDAK/'.date('Y')."/".date('M').'/'.date('d')."/"));
$register->setKey($data["emailAddress"]);
$register->setFullName($data["fullName"]);
$register->setEmailAddress($data["emailAddress"]);
$register->setPhoneNumber($data["phoneNumber"]);
$register->setCountry("Saudi Arabia");
$register->setCity($data["city"]);
$register->setBirthYear($data["birthYear"]);
$register->setGender($data["gender"]);
$register->setCurrentPlaceOfEmployment($data["currentPlaceOfEmployment"]);
$register->setYearOfExperience($data["yearOfExperience"]);
$register->setPositionTitle($data["positionTitle"]);
$register->setTellUsMoreAboutYourself($data["tellUsMoreAboutYourself"]);
$register->setHowDidYouHearAboutTheCompetition($data["howDidYouHearAboutTheCompetition"]);
$register->setDishToPresent($data["dishToPresent"]);
$register->setDishImage($asset);
$register->setHaveYouParticipatedInSimilarCompetition(true);
$register->setDoYouUseGcsProduct(true);
if($data["haveYouParticipatedInSimilarCompetition"]=='no'){
$register->setHaveYouParticipatedInSimilarCompetition(false);
}
if($data["doYouUseGcsProduct"]=='no'){
$register->setDoYouUseGcsProduct(false);
}
$register->setNameYourFavoriteProducts($data["nameYourFavoriteProducts"]);
$register->setCompetitionName($data["competitionName"]);
$register->setPublished(true);
$register->save();
return true;
}
public function uploadImage($file)
{
$asset = new Image();
$uploadedFile = $file->getData();
$asset->setFilename(strtotime(date('y-m-d H:i:s')).'-'.$uploadedFile->getClientOriginalName());
$asset->setData(file_get_contents($uploadedFile));
$parent = \Pimcore\Model\Asset\Service::createFolderByPath('/event_form_image/');
$asset->setParent($parent);
$asset->save();
return $asset;
}
public function cofiqueBaristaCompetitionAction(Request $request, TranslatorInterface $translator){
$errors = [];
$form = $this->createForm(CofiqueRegistrationFormType::class, null, [
'translator' => $translator,
]);
$form->handleRequest($request);
if ($form->isSubmitted()) {
// Remember scroll position before form submission
if ($form->isValid()) {
$data = $form->getData();
$user = CofiqueRegistrationForm::getByEmailAddress($data["emailAddress"], true);
if ($user && $user instanceof CofiqueRegistrationForm) {
$this->addFlash("danger", $translator->trans("Email already exists. Please use a different email address."));
return $this->redirectToRoute('cofique_barista_competition', ['locale' => $request->getLocale(), '_fragment' => 'yourAnchor']);
} else {
if ($this->saveUserCofiqueData($data)) {
$mail = new EmailService();
// $request->getLocale()
$doc = '/en/emails/cofique_thankyou_email_en';
if($request->getLocale() == 'ar'){
$doc = '/ar/emails/cofique_thankyou_email_ar';
}
$mail->sendEmail($data['emailAddress'], 'Thank You for Registering for the Cofique Barista Competition!', $doc, $data);
$mail->sendEmail('reine.tohme@centric.ae', $data['fullName'], '/en/emails/cofique_registration_user', $data);
// $mail->sendEmail('naa@goody.com.sa', $data['fullName'], '/en/emails/cofique_registration_user', $data);
// $mail->sendEmail('chef.chris@zadk.com.sa', $data['fullName'], '/en/emails/cofique_registration_user', $data);
// $mail->sendEmail('bmr@goody.com.sa', $data['fullName'], '/en/emails/cofique_registration_user', $data);
$this->addFlash("success", $translator->trans("Thank you for registering! We will contact you soon."));
// Redirect to the anchor after form submission
return $this->redirectToRoute('cofique_barista_competition', ['locale' => $request->getLocale(), '_fragment' => 'yourAnchor']);
}
}
}
}
return $this->render('events/cofique-barista-competition.html.twig', [
'form' => $form->createView()
]);
}
public function saveUserCofiqueData($data){
$register=new CofiqueRegistrationForm();
$register->setParent(Service::createFolderByPath('Registration Cofique/'.date('Y')."/".date('M').'/'.date('d')."/"));
$register->setKey($data["emailAddress"]);
$register->setFullName($data["fullName"]);
$register->setEmailAddress($data["emailAddress"]);
$register->setPhoneNumber($data["phoneNumber"]);
$register->setCountry("Saudi Arabia");
$register->setCity($data["city"]);
$register->setBirthYear($data["birthYear"]);
$register->setGender($data["gender"]);
$register->setCurrentPlaceOfEmployment($data["currentPlaceOfEmployment"]);
$register->setYearOfExperience($data["yearOfExperience"]);
$register->setPositionTitle($data["positionTitle"]);
$register->setTellUsMoreAboutYourself($data["tellUsMoreAboutYourself"]);
$register->setHowDidYouHearAboutTheCompetition($data["howDidYouHearAboutTheCompetition"]);
$register->setHaveYouParticipatedInSimilarCompetition(true);
$register->setDoYouUseGcsProduct(true);
$register->setDoYouHaveFoodAllergies(true);
$register->setAreYouAvailableForTravel(true);
if($data["haveYouParticipatedInSimilarCompetition"]=='no'){
$register->setHaveYouParticipatedInSimilarCompetition(false);
}
if($data["doYouUseGcsProduct"]=='no'){
$register->setDoYouUseGcsProduct(false);
}
if($data["doYouHaveFoodAllergies"]=='no'){
$register->setDoYouUseGcsProduct(false);
}
if($data["areYouAvailableForTravel"]=='no'){
$register->setDoYouUseGcsProduct(false);
}
$register->setNameYourFavoriteProducts($data["nameYourFavoriteProducts"]);
$register->setCompetitionName($data["competitionName"]);
$register->setPleaseSpecifyFood($data["pleaseSpecifyFood"]);
$register->setPublished(true);
$register->save();
return true;
}
/**
* @Route("/{locale}/events/barista-course", name="competion-baresta")
*/
public function barestaCourseAction(Request $request)
{
$locate = $request->getLocale();
$url = $request->get('turl');
$ref = $request->server->get('REDIRECT_URL');
$this->get('session')->set('refURL', $ref);
$email = $this->get('session')->get('loginUserId');
if ($email) {
return $this->render('competition/baresta-course.html.twig');
} else {
return $this->redirect('/en/signin');
}
}
/**
* @Route("/{locale}/events/lifestyle-course", name="competion-baresta")
*/
public function lifestyleCourseAction(Request $request)
{
$locate = $request->getLocale();
$url = $request->get('turl');
$ref = $request->server->get('REDIRECT_URL');
$this->get('session')->set('refURL', $ref);
$email = $this->get('session')->get('loginUserId');
if ($email) {
return $this->render('competition/lifestyle-course.html.twig');
} else {
return $this->redirect('/en/signin');
}
}
}
?>