<?php
namespace App\Controller;
use Doctrine\DBAL\Query\QueryBuilder;
use Pimcore\Controller\FrontendController;
use Pimcore\Mail;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject\Application;
use Pimcore\Model\DataObject\ApplicationWorkshop;
use Pimcore\Model\Document\Listing;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends FrontendController
{
/**
* @Template
* @param Request $request
* @return array
*/
public function defaultAction(Request $request)
{
return [
'title' => $request->get('title'),
'length' => $request->get('length'),
'location' => $request->get('location'),
'production' => $request->get('production'),
'address' => $request->get('address'),
'phone' => $request->get('phone'),
'email' => $request->get('email'),
'contact' => $request->get('contact'),
'producer' => $request->get('producer'),
'director' => $request->get('director'),
'screenplay' => $request->get('screenplay'),
'camera' => $request->get('camera'),
'editing' => $request->get('editing'),
'photography' => $request->get('photography'),
'rest' => $request->get('rest'),
'synopsisSl' => $request->get('synopsisSl'),
'synopsisEn' => $request->get('synopsisEn'),
'CV' => $request->get('CV'),
'website' => $request->get('website'),
'password' => $request->get('password'),
'name' => $request->get('name'),
'birthdate' => $request->get('birthdate'),
'experience' => $request->get('experience'),
'subject' => $request->get('subject'),
'ownEquipment' => $request->get('ownEquipment'),
'equipment' => $request->get('equipment'),
'smallGroup' => $request->get('smallGroup'),
'recommendation' => $request->get('recommendation'),
];
}
public function portalAction()
{
$listing = new Listing();
$listing->onCreateQueryBuilder(
function (QueryBuilder $queryBuilder) {
$queryBuilder->join('documents', 'documents_editables', 'de',
'documents.id = de.documentId AND de.type = "date" AND de.name = "date"')
->orderBy('de.data', 'DESC');
}
);
$listing->setCondition("`path` LIKE '/novice/%'")
->setOrderKey(['id', 'published'])
->setOrder('desc')
->setLimit(3);
return $this->render('default/portal.html.twig', [
'news' => $listing
]);
}
public function applicationAction(Request $request)
{
$view = [];
$view['success'] = false;
$view['error'] = false;
if ($request->getMethod() === Request::METHOD_POST) {
$view['success'] = true;
// @todo process captcha
$application = new Application();
$application->setKey($request->get('title'));
$application->setParentId(2);
$application->setTitle($request->get('title'));
$application->setLength($request->get('length'));
$application->setLocation($request->get('location'));
$application->setProduction($request->get('production'));
$application->setAddress($request->get('address'));
$application->setPhone($request->get('phone'));
$application->setEmail($request->get('email'));
$application->setContact($request->get('contact'));
$application->setProducer($request->get('producer'));
$application->setDirector($request->get('director'));
$application->setScreenplay($request->get('screenplay'));
$application->setCamera($request->get('camera'));
$application->setEditing($request->get('editing'));
$application->setPhotography($request->get('photography'));
$application->setRest($request->get('rest'));
$application->setSynopsisSl($request->get('synopsisSl'));
$application->setSynopsisEn($request->get('synopsisEn'));
$application->setCV($request->get('CV'));
$application->setWebsite($request->get('website'));
$application->setPassword($request->get('password'));
$application->setPublished(true);
// photo upload
// $application->setLength($request->get('length'));
// $application->setLength($request->get('length'));
try {
/** @var UploadedFile $photo1 */
$photo1 = $request->files->get('photo1');
$filename = md5_file($photo1->getRealPath()) . '.' . $photo1->getClientOriginalExtension();
$newAsset = Asset\Image::getByPath("/prijave/2022/" . $filename);
if (!$newAsset) {
$newAsset = new Asset\Image();
$newAsset->setFilename($filename);
$newAsset->setData(file_get_contents($photo1->getRealPath()));
$newAsset->setParent(Asset::getByPath("/prijave/2022"));
$newAsset->save();
}
$application->setMainPhoto($newAsset);
/** @var UploadedFile $photo2 */
$photo2 = $request->files->get('photo2');
$filename = md5_file($photo2->getRealPath()) . '.' . $photo2->getClientOriginalExtension();
$newAsset2 = Asset\Image::getByPath("/prijave/2022/" . $filename);
if (!$newAsset2) {
$newAsset2 = new Asset\Image();
$newAsset2->setFilename($filename);
$newAsset2->setData(file_get_contents($photo2->getRealPath()));
$newAsset2->setParent(Asset::getByPath("/prijave/2022"));
$newAsset2->save();
}
$application->setDirectorPhoto($newAsset2);
$application->save();
} catch (\Exception $e) {
$view['error'] = true;
$view['success'] = false;
}
// send mail
$params = [
'title' => $request->get('title'),
'length' => $request->get('length'),
'location' => $request->get('location'),
'production' => $request->get('production'),
'address' => $request->get('address'),
'phone' => $request->get('phone'),
'email' => $request->get('email'),
'contact' => $request->get('contact'),
'producer' => $request->get('producer'),
'director' => $request->get('director'),
'screenplay' => $request->get('screenplay'),
'camera' => $request->get('camera'),
'editing' => $request->get('editing'),
'photography' => $request->get('photography'),
'rest' => $request->get('rest'),
'synopsisSl' => $request->get('synopsisSl'),
'synopsisEn' => $request->get('synopsisEn'),
'CV' => $request->get('CV'),
'website' => $request->get('website'),
'password' => $request->get('password'),
];
$mail = new Mail();
$mail->setDocument('/email/prijavnica');
$mail->setParams($params);
try {
$mail->send();
} catch (\Exception $e) {
$view['error'] = true;
$view['success'] = false;
}
}
return $this->render('default/application.html.twig', $view);
}
public function applicationLuksuzAction(Request $request)
{
$view = [];
$view['success'] = false;
$view['error'] = false;
if ($request->getMethod() === Request::METHOD_POST) {
$view['success'] = true;
// @todo process captcha
$application = new ApplicationWorkshop();
$application->setParentId(62);
$application->setName($request->get('name'));
$application->setAddress($request->get('address'));
$application->setPhone($request->get('phone'));
$application->setEmail($request->get('email'));
$application->setBirthdate($request->get('birthdate'));
$application->setExperience($request->get('experience'));
$application->setSubject($request->get('subject'));
$application->setOwnEquipment($request->get('ownEquipment'));
$application->setequipment($request->get('equipment'));
$application->setSmallGroup($request->get('smallGroup'));
$application->setRecommendation($request->get('recommendation'));
$application->setPublished(true);
$key = \Pimcore\Model\Element\Service::getValidKey($request->get('name'), 'object');
$application->setKey($key);
$key = \Pimcore\Model\Element\Service::getUniqueKey($application);
$application->setKey($key);
$application->save();
// send mail
$params = [
'name' => $request->get('name'),
'address' => $request->get('address'),
'phone' => $request->get('phone'),
'email' => $request->get('email'),
'birthdate' => $request->get('birthdate'),
'experience' => $request->get('experience'),
'subject' => $request->get('subject'),
'ownEquipment' => $request->get('ownEquipment'),
'equipment' => $request->get('equipment'),
'smallGroup' => $request->get('smallGroup'),
'recommendation' => $request->get('recommendation'),
];
$mail = new Mail();
$mail->setDocument('/email/prijavnica_luksuz');
$mail->setParams($params);
try {
$mail->send();
} catch (\Exception $e) {
$view['error'] = true;
$view['success'] = false;
}
}
return $this->render('default/applicationLuksuz.html.twig', $view);
}
public function newsAction()
{
$listing = new Listing();
$listing->setCondition("`parentId` = 3")
->setOrderKey(['key', 'published'])
->setOrder('desc');
$listing->onCreateQueryBuilder(
function (QueryBuilder $queryBuilder) {
$queryBuilder->join('documents', 'documents_editables', 'de',
'documents.id = de.documentId AND de.type = "date" AND de.name = "date"')
->orderBy('de.data', 'DESC');
}
);
return $this->render('default/news.html.twig', [
'news' => $listing
]);
}
public function newsDetailAction()
{
return $this->render('default/newsDetail.html.twig');
}
}