<?php
namespace App\Controller;
use App\Form\CourseCreateForm;
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\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\RequestStack;
use App\Entity\Article;
use App\Entity\ArticleImages;
use App\Entity\Cart;
use App\Entity\CategoryImages;
use App\Entity\CategoryCostplace;
use App\Entity\CourseAdditionalTimes;
use App\Entity\CourseAddPerson;
use App\Entity\CourseCategories;
use App\Entity\CoursePlace;
use App\Entity\CourseTimes;
use App\Entity\CourseImages;
use App\Entity\Course;
use App\Entity\CostPlace;
use App\Entity\Discount;
use App\Entity\ManualAppointment;
use App\Entity\OrderItems;
use App\Entity\Orders;
use App\Entity\User;
use App\Entity\UserCostplace;
use App\Entity\Userlog;
use App\Entity\TrainerPayment;
use App\Entity\Resource;
class CourseController extends AbstractController
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
// Accessing the session in the constructor is *NOT* recommended, since
// it might not be accessible yet or lead to unwanted side-effects
// $this->session = $requestStack->getSession();
}
function getUsedSlots($id)
{
$alreadyUsed = 0;
$alreadyUsed2 = 0;
$offline = 0;
$online = 0;
$repository = $this->getDoctrine()->getRepository(orderItems::class);
$orderItems = $repository->findBy(['oi_tid' => $id ]);
foreach($orderItems as $o)
{
$repository = $this->getDoctrine()->getRepository(Orders::class);
$order = $repository->findOneBy(['id' => $o->getOiOid() ]);
if($order->getOStatus() == '2'){continue;}
$pay = $order->getOPayment();
if($pay == '5')
{
$offline++;
}
else
{
$online++;
}
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
if($pay == '5')
{
continue;
}
}
else
{
$uid = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid->getURole();
if($pay == '5' && ($role == 1 || $role == 2) )
{
continue;
}
}
$alreadyUsed = $alreadyUsed + ($o->getOiAmount());
}
$em = $this->getDoctrine()->getManager();
$repo2Articles = $em->getRepository(ManualAppointment::class);
$alreadyUsed2 = $repo2Articles->createQueryBuilder('ma')
->select('count(ma.ma_tid)')
->where('ma.ma_tid = '. $id)
->getQuery()
->getSingleScalarResult();
$online = $online + $alreadyUsed2;
/*
$repository = $this->getDoctrine()->getRepository(courseTimes::class);
$times = $repository->findOneBy(['id' => $id ]);
$times->setCttOfflineCustomer($offline);
$times->setCttOnline($online);
$em->persist($times);
$em->flush();
*/
return intval($alreadyUsed + $alreadyUsed2);
}
public function checkHoliday($datum) {
if(function_exists("easter_date")) {
$teile = explode(".", $datum);
$tag = intval($teile[0]);
$monat = intval($teile[1]);
$jahr = intval($teile[2]);
$ostersonntag = date("d.m.Y", easter_date($jahr));
$osterteile = explode(".", $ostersonntag);
$ostertag = intval($osterteile[0]);
$ostermonat = intval($osterteile[1]);
$karfreitag = date("d.m.Y", mktime(0, 0, 0, $ostermonat, ($ostertag - 2), $jahr));
$karfreitagteile = explode(".", $karfreitag);
$karfreitagtag = intval($karfreitagteile[0]);
$karfreitagmonat = intval($karfreitagteile[1]);
$ostermontag = date("d.m.Y", mktime(0, 0, 0, $ostermonat, ($ostertag + 1), $jahr));
$ostermontagteile = explode(".", $ostermontag);
$ostermontagtag = intval($ostermontagteile[0]);
$ostermontagmonat = intval($ostermontagteile[1]);
$christihfahrt = date("d.m.Y", mktime(0, 0, 0, $ostermonat, ($ostertag + 39), $jahr));
$christihfahrtteile = explode(".", $christihfahrt);
$christihfahrttag = intval($christihfahrtteile[0]);
$christihfahrtmonat = intval($christihfahrtteile[1]);
$pfingsten = date("d.m.Y", mktime(0, 0, 0, $ostermonat, ($ostertag + 50), $jahr));
$pfingstenteile = explode(".", $pfingsten);
$pfingstentag = intval($pfingstenteile[0]);
$pfingstenmonat = intval($pfingstenteile[1]);
$fronleichnam = date("d.m.Y", mktime(0, 0, 0, $ostermonat, ($ostertag + 60), $jahr));
$fronleichnamteile = explode(".", $fronleichnam);
$fronleichnamtag = intval($fronleichnamteile[0]);
$fronleichnammonat = intval($fronleichnamteile[1]);
$feiertext = "";
if($tag == 1 && $monat == 1) {
$feiertext = "Neujahr";
}
if($tag == $karfreitagtag && $monat == $karfreitagmonat) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Karfreitag";
}
if($tag == $ostertag && $monat == $ostermonat) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Ostersonntag";
}
if($tag == $ostermontagtag && $monat == $ostermontagmonat) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Ostermontag";
}
if($tag == 1 && $monat == 5) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Tag der Arbeit";
}
if($tag == $christihfahrttag && $monat == $christihfahrtmonat) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Christi Himmelfahrt";
}
if($tag == $pfingstentag && $monat == $pfingstenmonat) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Pfingstmontag";
}
if($tag == 3 && $monat == 10) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Tag der deutschen Einheit";
}
if($tag == 25 && $monat == 12) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Erster Weihnachtstag";
}
if($tag == 26 && $monat == 12) {
if($feiertext != "") $feiertext.= " und ";
$feiertext.= "Zweiter Weihnachtstag";
}
if($feiertext != "") {
return $feiertext;
} else {
return false;
}
} else {
return false;
}
}
/**
* @Route("/", name="homepage")
*/
public function homepage()
{
require_once("./include/global.php");
$em = $this->getDoctrine()->getManager();
if(!$this->requestStack->getSession())
{
$session = new Session();
$session->start();
}
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findAll();
foreach($cart as $ca)
{
$time = $ca->getCaNow()->format('Y-m-d H:i:s');
$time = date("Y-m-d H:i:s",strtotime($time));
if($time < date("Y-m-d H:i:s",strtotime("-".$cartMaxTime." Minutes")) )
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(CategoryImages::class);
$categoryImages = $repository->findAll();
$categoryImgArr = array();
foreach($categoryImages as $catIm)
{
$categoryImgArr[$catIm->getCaiCatid()] = $catIm->getCaiPath();
}
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$session->clear();
$session->invalidate();
require_once("./include/global.php");
if($company == 'KVO')
{
// return $this->render('course/index.html.twig', ['places' => $costplacePlace, 'categories' => $categories]);
$placeid = 1;
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$session->set('place', $placeid);
return $this->render('course/index.html.twig', ['places' => $costplacePlace, 'categories' => $categories, 'placeid' => '1', 'url' => $url, "catimg" => $categoryImgArr, 'anzProd' => $globAmnProd]);
}
else
{
return $this->render('course/place.html.twig', ['places' => $costplacePlace, 'categories' => $categories]);
}
}
/**
* @Route("/place/{placeid}/", name="homepage2")
*/
public function homepage2($placeid)
{
include("./include/global.php");
$dir = "./tmp/";
if(!is_dir($dir)){ mkdir($dir); }
foreach (glob($dir."*") as $file)
{
if(time() - filemtime($file) > 300)
{
unlink($file);
}
}
$em = $this->getDoctrine()->getManager();
$query = "UPDATE orders SET o_xml_export = 0 WHERE o_xml_file = '' AND o_xml_export = 1 AND o_xml_storno_file = '' AND o_payment = 2 AND o_price_netto != 0 ";
$em2 = $this->getDoctrine()->getManager();
$em2->getConnection()->executeQuery($query);
$query = "UPDATE orders SET o_xml_storno_export = 0 WHERE o_xml_storno_file = '' AND o_xml_storno_export = 1 AND o_price_netto != 0 AND o_xml_file = '' AND o_payment = 2 ";
$em2 = $this->getDoctrine()->getManager();
$em2->getConnection()->executeQuery($query);
$repository = $this->getDoctrine()->getRepository(Coursetimes::class);
$coursetimes = $repository->findBy(['ctt_active' => 1]);
foreach($coursetimes as $ctt)
{
if($ctt->getCttCid() == '776'){continue;}
$d = $ctt->getCttDay();
$d = $d->format('Y-m-d');
if($d < date("Y-m-d"))
{
$ctt->setCttActive(0);
$em->persist($ctt);
$em->flush();
}
}
if(!$this->requestStack->getSession())
{
$session = new Session();
$session->start();
}
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findAll();
foreach($cart as $ca)
{
$time = $ca->getCaNow()->format('Y-m-d H:i:s');
$time = date("Y-m-d H:i:s",strtotime($time));
if($time < date("Y-m-d H:i:s",strtotime("-".$cartMaxTime." Minutes")) )
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
$repository = $this->getDoctrine()->getRepository(Course::class);
$courses = $repository->findBy(['c_active' => 1]);
foreach($courses as $c)
{
$courseActive = 0;
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTimes = $repository->findBy(['ctt_cid' => $c->getId(), 'ctt_active' => 1]);
foreach($courseTimes as $ctt)
{
if($ctt->getCttMaxoffline() == $ctt->getCttOfflineCustomer() && $ctt->getCttOnline() == $ctt->getCttMaxonline())
{
$ctt->setCttActive(0);
$em = $this->getDoctrine()->getManager();
$em->persist($ctt);
$em->flush();
}
else
{
$courseActive = 1;
}
}
if($courseActive == 0)
{
$c->setCActive(0);
$em = $this->getDoctrine()->getManager();
$em->persist($c);
$em->flush();
}
}
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(CategoryImages::class);
$categoryImages = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(CategoryCostplace::class);
$categoryCostplaces = $repository->findBy(['cc_cpid' => $placeid]);
$categoryImgArr = array();
foreach($categoryImages as $catIm)
{
$categoryImgArr[$catIm->getCaiCatid()] = $catIm->getCaiPath();
}
$allowedCat = array();
foreach($categoryCostplaces as $ccp)
{
$allowedCat[$ccp->getCcCatid()] = $ccp->getCcActive();
}
if($company == 'KVO')
{
$placeid = 1;
}
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$session->set('place', $placeid);
return $this->render('course/index.html.twig', ['places' => $costplacePlace, 'categories' => $categories, 'placeid' => $placeid, 'url' => $url, "catimg" => $categoryImgArr, 'anzProd' => $globAmnProd, 'allowedCat' => $allowedCat]);
}
/**
* @Route("/setTimesStatus", name="setTimesStatus" , options={"expose"=true})
*/
public function setTimesStatus()
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
require_once("./include/global.php");
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findOneBy(['id' => $_POST['id']]);
if($times->getCttActive() == 1)
{
$times->setCttActive(0);
}
else
{
$times->setCttActive(1);
}
$em = $this->getDoctrine()->getManager();
$em->persist($times);
$em->flush();
echo '';
die();
}
/**
* @Route("/backendCourseBlock/{id}", name="backendCourseBlock")
*/
public function backendCourseBlock($id)
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
require_once("./include/global.php");
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $id]);
return $this->render('backend/course/course_block.html.twig', ['id' => $id, 'course' => $course , 'today' => date("d.m.Y")]);
}
/**
* @Route("/loadBlockTimes", name="loadBlockTimes" , options={"expose"=true})
*/
public function loadBlockTimes()
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
require_once("./include/global.php");
$date = date("Y-m-d",strtotime($_POST['date']));
$id = $_POST['id'];
$d = new \DateTime(date('Y-m-d',strtotime($date)));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findBy(['ctt_cid' => $id, 'ctt_day' => $d], ['ctt_from' => 'ASC']);
$output = '';
$i = 0;
foreach($times as $time)
{
$nd1 = $time->getCttFrom();
$nd1 = $nd1->format('H:i');
$nd2 = $time->getCttTo();
$nd2 = $nd2->format('H:i');
if($time->getCttActive() == '0')
{
$output .= '<input class="btn-check" type="button" name="articleTime" id="articleTime'.$i.'" value="'.$time->getid().'" autocomplete="off" onclick="setTimeStatus(\''.$time->getId().'\')" />';
$output .= '<label class="btn btn-secondary" for="articleTime'.$i.'" style="'.$defaultColor.'">'.$nd1.' - '.$nd2.'</label> ';
}
else
{
$output .= '<input class="btn-check" type="button" name="articleTime" id="articleTime'.$i.'" value="'.$time->getid().'" autocomplete="off" onclick="setTimeStatus(\''.$time->getId().'\')" />';
$output .= '<label class="btn btn-success" for="articleTime'.$i.'" style="'.$defaultColor.'">'.$nd1.' - '.$nd2.'</label> ';
}
$i++;
}
if(trim($output) == ''){$output = "Es wurden leider keine Einträge gefunden";}
echo $output;die();
}
/**
* @Route("/backendCourse/", name="backendCourse")
*/
public function backendCourse()
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
require_once("./include/global.php");
require_once("./include/function.php");
$uid = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid->getURole();
$uid = $uid->getId();
if($role == 4)
{
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$query = "SELECT * FROM course WHERE c_active = 1";
$em2 = $this->getDoctrine()->getManager();
$course = $em2->getConnection()->executeQuery($query);
$course2 = $em2->getConnection()->executeQuery($query);
$query = "SELECT * FROM article WHERE a_active = 1";
$em2 = $this->getDoctrine()->getManager();
$articles = $em2->getConnection()->executeQuery($query);
}
else
{
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$userArr = array();
$repository = $this->getDoctrine()->getRepository(UserCostplace::class);
$userCostplace = $repository->findBy(['ucp_uid' => $uid]);
foreach($userCostplace as $cp)
{
array_push($userArr,$cp->getUcpPlace());
}
array_unique($userArr);
$repository = $this->getDoctrine()->getRepository(Costplace::class);
$costplace = $repository->findAll();
$filter = "";
$filter2 = "";
$param = array();
$i = 0;
foreach($costplace as $cp)
{
if(in_array($cp->getCpPlace(),$userArr ))
{
if($i == 0)
{
$filter .= "c_costplace = :costplace".$i;
$filter2 .= "a_costplace = :costplace".$i;
}
else
{
$filter .= " OR c_costplace = :costplace".$i;
$filter2 .= " OR a_costplace = :costplace".$i;
}
$param["costplace$i"] = $cp->getId();
$i++;
}
}
if($filter == ""){ $filter = " 1 = 2 ";}
if($filter2 == ""){ $filter2 = " 1 = 2 ";}
$query = "SELECT * FROM course WHERE c_active = 1 AND ($filter)";
$em2 = $this->getDoctrine()->getManager();
$course = $em2->getConnection()->executeQuery($query,$param);
$course2 = $em2->getConnection()->executeQuery($query,$param);
if($filter2 != "")
{
$query = "SELECT * FROM article WHERE a_active = 1 AND ($filter2)";
}
$em2 = $this->getDoctrine()->getManager();
$articles = $em2->getConnection()->executeQuery($query,$param);
}
$minArr = array();
$maxArr = array();
foreach($course2 as $c)
{
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$min = $repository->findOneBy(['ctt_cid' => $c['id']],['ctt_day' => 'ASC']);
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$max = $repository->findOneBy(['ctt_cid' => $c['id']],['ctt_day' => 'DESC']);
if($min)
{
$minArr[$min->getCttCid()] = $min->getCttDay()->format("d.m.Y");
}
if($max)
{
$maxArr[$max->getCttCid()] = $max->getCttDay()->format("d.m.Y");
}
}
if(!isset($globalPeriods))
{
$globalPeriods[1] = "1. Trimester";
$globalPeriods[2] = "2. Trimester";
$globalPeriods[3] = "3. Trimester";
$globalPeriods[4] = "4. Trimester";
$globalPeriods[5] = "Osterferien";
$globalPeriods[6] = "Sommerferien";
$globalPeriods[7] = "Herbstferien";
$globalPeriods[8] = "Sonstiges";
}
return $this->render('backend/course/course.html.twig',[ 'courses' => $course, 'categories' => $categories, 'articles' => $articles, 'min' => $minArr , 'max' => $maxArr, 'periods' => $globalPeriods ]);
}
/**
* @Route("/deleteCourse", name="deleteCourse" , options={"expose"=true})
*/
public function deleteCourse()
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
if($_POST['mode'] == '1')
{
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $_POST['id']]);
$course->setCActive(0);
$em = $this->getDoctrine()->getManager();
$em->persist($course);
$em->flush();
}
else if($_POST['mode'] == '2')
{
$repository = $this->getDoctrine()->getRepository(Article::class);
$article = $repository->findOneBy(['id' => $_POST['id']]);
$article->setAActive(0);
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
}
die();
}
/**
* @Route("/copyCourse/{id}/{mode}", name="copyCourse")
*/
public function copyCourse($id, $mode)
{
include("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
/*
$repository = $this->getDoctrine()->getRepository(User::class);
$trainer = $repository->findBy(["u_role" => "2", "u_locked" => '0']);
*/
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(User::class);
$trainer = $repository->findBy(["u_role" => "2", "u_locked" => '0'],['u_lastname' => 'ASC']);
$repository = $this->getDoctrine()->getRepository(Resource::class);
$rooms = $repository->findAll();
if($mode == '1')
{
//course
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $id]);
$repository = $this->getDoctrine()->getRepository(CostPlace::class);
$costplaces = $repository->findAll();
return $this->render('backend/course/course_new.html.twig',[ 'categories' => $categories, 'course' => $course, 'mode' => $mode, 'url' => $url, 'copy' => 1, 'costplaces' => $costplaces, 'discount' => $discount, 'trainer' => $trainer, 'company' => $company, 'rooms' => $rooms, 'periods' => $globalPeriods ]);
}
else
{
//article
$repository = $this->getDoctrine()->getRepository(Article::class);
$article = $repository->findOneBy(['id' => $id]);
return $this->render('backend/course/course_new.html.twig',[ 'categories' => $categories, 'article' => $article, 'mode' => $mode, 'url' => $url, 'copy' => 1, 'discount' => $discount, 'trainer' => $trainer, 'company' => $company, 'rooms' => $rooms ]);
}
}
/**
* @Route("/backendCourseNew/", name="backendCourseNew")
*/
public function backendCourseNew()
{
include("./include/global.php");
include("./include/function.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(CostPlace::class);
$costplaces = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(User::class);
$trainer = $repository->findBy(["u_role" => "2", "u_locked" => '0'],['u_lastname' => 'ASC']);
$number = 0;
$maxnumber = 0;
$query = "SELECT c_number FROM course WHERE c_number LIKE :year ";
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['year' => date("y").'%' ]);
foreach($resultSet as $rs)
{
$tmp = substr($rs['c_number'],-3);
if(intval($tmp) > $maxnumber){ $maxnumber = $tmp; }
}
$month = date("m");
$maxnumber = $maxnumber+1;
if($maxnumber < 10 )
{
$maxnumber = "00".$maxnumber;
}
else if($maxnumber < 100)
{
$maxnumber = "0".$maxnumber;
}
if($month <= 4){ $number = date("y")."1".$maxnumber; }
else if($month >= 9){$number = date("y")."3".$maxnumber ;}
else{ $number = date("y")."2".$maxnumber; }
$repository = $this->getDoctrine()->getRepository(Resource::class);
$rooms = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findAll();
return $this->render('backend/course/course_new.html.twig',[ 'categories' => $categories, 'url' => $url, 'costplaces' => $costplaces, 'trainer' => $trainer, 'coursenumber2' => $number, 'company' => $company, 'rooms' => $rooms, 'discount' => $discount, 'periods' => $globalPeriods ]);
}
/**
* @Route("/backendEditCourse/{id}/{mode}", name="backendEditCourse")
*/
public function backendEditCourse($id,$mode)
{
include("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
if($mode == 1)
{
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findBy(['id' => $id]);
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$images = $repository->findBy(['ci_cid' => $id]);
}
else if($mode == 2)
{
$repository = $this->getDoctrine()->getRepository(Article::class);
$article = $repository->findBy(['id' => $id]);
$repository = $this->getDoctrine()->getRepository(ArticleImages::class);
$images = $repository->findBy(['ai_aid' => $id]);
}
$repository = $this->getDoctrine()->getRepository(CostPlace::class);
$costplaces = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$categories = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(Resource::class);
$rooms = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findAll();
if($mode == 1)
{
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$addTimes = $repository->findBy(['cat_cid' => $id]);
$atArr = array();
$atArr['number'] = "0";
$atArr['from'] = "00:00";
$atArr['to'] = "00:00";
$atArr['days'] = "";
$atArr['leader'] = "0";
$atArr['booking'] = "0";
$atArr['offline'] = "0";
$atArr['online'] = "0";
foreach($addTimes as $at)
{
if($at->getCatItem() == '0')
{
$atArr['number'] = $at->getCatNumber();
$atArr['from'] = $at->getCatFrom()->format('H:i');
$atArr['to'] = $at->getCatTo()->format('H:i');
$atArr['days'] = $at->getCatDays();
$atArr['leader'] = $at->getCatLeader();
$atArr['booking'] = $at->getCatBookingOption();
$atArr['offline'] = $at->getCatMaxOffline();
$atArr['online'] = $at->getCatMaxOnline();
}
}
$repository = $this->getDoctrine()->getRepository(User::class);
$trainer = $repository->findBy(["u_role" => "2", "u_locked" => '0'],['u_lastname' => 'ASC']);
return $this->render('backend/course/course_edit.html.twig',[ 'categories' => $categories,'discount' => $discount,'at' => $atArr, 'rooms' => $rooms, 'course' => $course, 'image' => $images ,'id' => $id, 'mode' => $mode , 'url' => $url, 'addtimer' => $addTimes, 'costplaces' => $costplaces, 'trainer' => $trainer, 'company' => $company, 'periods' => $globalPeriods ]);
}
else if($mode == 2)
{
return $this->render('backend/course/course_edit.html.twig',[ 'categories' => $categories,'discount' => $discount,'rooms' => $rooms, 'article' => $article, 'image' => $images ,'id' => $id, 'mode' => $mode , 'url' => $url, 'costplaces' => $costplaces , 'company' => $company, 'periods' => $globalPeriods]);
}
}
/**
* @Route("/backendCourseNewSave/", name="backendCourseNewSave")
*/
public function backendCourseNewSave(Request $request)
{
include("./include/global.php");
include("./include/function.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
// save Course
if($request->get('productKind') == '1' || $request->get('productKind') == 1)
{
$start = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
$end = new \DateTime(date('H:i:s', strtotime($request->get('endtime'))));
$visible_from = new \DateTime(date('Y-m-d H:i:00', strtotime($request->get('visible_from'). ' '. $request->get('visible_time').':00')));
$price = str_replace(".","#",$request->get('price'));
$price = str_replace(",",".",$price);
$price = str_replace("#",",",$price);
$price = number_format($price,2,'.',',');
$tax = number_format((float)$request->get('tax'),2,'.',',');
$adminFee = number_format((float)$request->get('admin_fee'),2,'.',',');
if($request->get('yoga') == null)
{
$yoga = 0;
}
else
{
$yoga = $request->get('yoga');
}
if($request->get('sibling_discount') == null)
{
$siblingDiscount = 0;
}
else
{
$siblingDiscount = $request->get('sibling_discount');
}
if($request->get('studio_discount') == null)
{
$studioDiscount = 0;
}
else
{
$studioDiscount = $request->get('studio_discount');
}
if($request->get('visible') == null)
{
$visible = 0;
}
else
{
$visible = $request->get('visible');
}
if($request->get('discount') == null)
{
$discount = 0;
}
else
{
$discount = $request->get('discount');
}
if($discount == null){$discount = 0;}
$course = new Course();
$course->setCName($request->get('coursename'));
$course->setCVisible($visible);
$course->setCNumber($request->get('coursenumber'));
if( is_null($request->get('coursesbnumber')) )
{
$course->setCSbNumber(0);
}
else
{
$course->setCSbNumber($request->get('coursesbnumber'));
}
$course->setCLeader($request->get('courseleader'));
$course->setCCategory($request->get('coursecategory'));
$course->setCMaxcustomer($request->get('maxcustomer'));
$course->setCOfflineCustomer($request->get('offlinecustomer'));
$course->setCStart($start);
$course->setCEnd($end);
if( is_null($request->get('duration')) )
{
$course->setCDuration(0);
}
else
{
$course->setCDuration($request->get('duration'));
}
$course->setCBreakBefore($request->get('break_before'));
$course->setCBreakAfter($request->get('break_after'));
$course->setCDescription($request->get('description'));
$course->setCPrice($price);
$course->setCAdminFee( $adminFee );
$course->setCTax($tax);
$course->setCActive(1);
$course->setCDiscount($discount);
$course->setCSiblingDiscount($siblingDiscount);
$course->setCStudioDiscount($studioDiscount);
$course->setCPeriod($request->get('courseperiod'));
$course->setCVisibleFrom($visible_from);
if($company == "KVO")
{
$course->setCRoom($request->get('room'));
}
else
{
$course->setCRoom(0);
}
$course->setCYoga($yoga);
$course->setCCostplace($request->get('costplace'));
$course->setCAppointmentSeries($request->get('series'));
$course->setCAppointmentSeriesDays($request->get('seriesDays'));
$mon = $request->get('monday');
if(is_null($mon)) {$mon = 0;}
$tue = $request->get('tuesday');
if(is_null($tue)) {$tue = 0;}
$wed = $request->get('wednesday');
if(is_null($wed)) {$wed = 0;}
$thu = $request->get('thursday');
if(is_null($thu)) {$thu = 0;}
$fri = $request->get('friday');
if(is_null($fri)) {$fri = 0;}
$sat = $request->get('saturday');
if(is_null($sat)) {$sat = 0;}
$sun = $request->get('sunday');
if(is_null($sun)) {$sun = 0;}
$course->setCMonday($mon);
$course->setCTuesday($tue);
$course->setCWednesday($wed);
$course->setCThursday($thu);
$course->setCFriday($fri);
$course->setCSaturday($sat);
$course->setCSunday($sun);
$course->setCPlace(1);
$d = new \DateTime(date('Y-m-d H:i:s',strtotime($request->get('activeUntill'))));
$course->setCActiveUntill($d);
$d2 = new \DateTime(date('Y-m-d H:i:s',strtotime($request->get('activeFrom'))));
$course->setCActiveFrom($d2);
$em = $this->getDoctrine()->getManager();
$em->persist($course);
$em->flush();
$id = $course->getId();
//save Images
$pic = $request->files->get('courseImage');
$pic_full = $request->files->get('courseImageFull');
$folder = $this->getParameter('kernel.project_dir')."/public/courseImages/";
if(!file_exists($folder)){mkdir($folder);}
$subfolder = $folder.$id."/";
if(!file_exists($subfolder)){mkdir($subfolder);}
$uniqid = uniqid();
$path = $subfolder.$uniqid."_".$pic->getClientOriginalName();
if(file_exists($path)){unlink($path);}
$newFilename = $uniqid.'_'.$pic->getClientOriginalName();
$pic->move($subfolder, $newFilename);
$uniqid = uniqid();
$path2 = $subfolder.$uniqid."_".$pic_full->getClientOriginalName();
if(file_exists($path2)){unlink($path2);}
$newFilename2 = $uniqid.'_'.$pic_full->getClientOriginalName();
$pic_full->move($subfolder, $newFilename2);
$courseImages = new CourseImages();
$courseImages->setCiCid($id);
$courseImages->setCiPath(str_replace($publicImagePath,'.',$path));
$courseImages->setCiFullPath(str_replace($publicImagePath,'.',$path2));
$em->persist($courseImages);
$em->flush();
// save Course Times
if($company == 'KVO')
{
$begin = new \DateTime(date("Y-m-d",strtotime($request->get('activeFrom'))));
$endDate = new \DateTime(date('Y-m-d',strtotime('+1 day',strtotime($request->get('activeUntill')))));
$interval = \DateInterval::createFromDateString('1 day');
$period = new \DatePeriod($begin, $interval, $endDate);
//each day from start to activeUntill
foreach ($period as $dt) //days
{
$day1 = $dt->format("Y-m-d \n");
$day = new \DateTime(date("Y-m-d", strtotime($day1)));
if($this->checkHoliday($dt->format("d.m.Y")) != false ){ continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 0 && $course->getCSunday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 1 && $course->getCMonday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 2 && $course->getCTuesday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 3 && $course->getCWednesday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 4 && $course->getCThursday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 5 && $course->getCFriday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 6 && $course->getCSaturday() == 0) {continue; }
//day Times
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
while($d1 < $end)
{
$d1orig = new \DateTime(date('H:i:s',strtotime($d1->format('H:i:s'))));
$d1->add(new \DateInterval('PT' . $request->get('duration') . 'M'));
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1orig);
$courseTimes->setCttTo($d1);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttNumber($request->get('coursenumber'));
$courseTimes->setCttRoom($request->get('room'));
$em->persist($courseTimes);
$em->flush();
$bb = $request->get('break_before');
$ba = $request->get('break_after');
if(intval($bb) < 0){$bb = 0 ;}
if(intval($ba) < 0){$ba = 0 ;}
$d1->add(new \DateInterval('PT' . $bb . 'M'));
$d1->add(new \DateInterval('PT' . $ba . 'M'));
}
if($request->get('timesArr') != "")
{
//additional Times
$timesArr = explode(',',$request->get('timesArr'));
foreach($timesArr as $time)
{
/*
if($company != "KVO")
{
if($request->get('starttime'.$time) == $request->get('starttime') && $request->get('endtime'.$time) == $request->get('endtime')){continue;}
}
*/
if($request->get('starttime'.$time) != "" && $request->get('endtime'.$time) != "")
{
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
while($d1 < $d2)
{
$d1orig = new \DateTime(date('H:i:s',strtotime($d1->format('H:i:s'))));
$d1->add(new \DateInterval('PT' . $request->get('duration') . 'M'));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$timetest = $repository->findOneBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1orig, 'ctt_to' => $d1, 'ctt_room' => $request->get('room'.$time) ]);
if($timetest)
{
$d1->add(new \DateInterval('PT' . $request->get('break_before') . 'M'));
$d1->add(new \DateInterval('PT' . $request->get('break_after') . 'M'));
continue;
}
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1orig);
$courseTimes->setCttTo($d1);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttOnline(0);
$courseTimes->setCttNumber($request->get('coursenumber'.$time));
$courseTimes->setCttRoom($request->get('room'.$time));
$courseTimes->setCttMaxonline($request->get('maxcustomer'));
$courseTimes->setCttMaxoffline($request->get('offlinecustomer'));
$em->persist($courseTimes);
$em->flush();
$d1->add(new \DateInterval('PT' . $request->get('break_before') . 'M'));
$d1->add(new \DateInterval('PT' . $request->get('break_after') . 'M'));
}
}
}
}
}
}
else
{
$days = $request->get('courseDays');
$days = explode(',',$days);
foreach($days as $day)
{
$day = new \DateTime(date("Y-m-d", strtotime($day)));
if($request->get('starttime') != "" && $request->get('endtime') != "")
{
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'))));
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1);
$courseTimes->setCttTo($d2);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttOnline(0);
$courseTimes->setCttNumber($request->get('coursenumber'));
$courseTimes->setCttRoom($request->get('room'));
//$courseTimes->setCttMaxonline($request->get('maxcustomer'));
//$courseTimes->setCttMaxoffline($request->get('offlinecustomer'));
$courseTimes->setCttMaxonline($request->get('courseMaxOnline'));
$courseTimes->setCttMaxoffline($request->get('courseMaxOffline'));
$em->persist($courseTimes);
$em->flush();
}
}
if($request->get('courseTimesArr') != "")
{
//additional Times
$timesArr = explode(',',$request->get('courseTimesArr'));
foreach($timesArr as $time)
{
//GET Days
$days = $request->get('courseDays'.$time);
$days = explode(',',$days);
foreach($days as $day)
{
$day = new \DateTime(date("Y-m-d", strtotime($day)));
//if($request->get('starttime'.$time) == $request->get('starttime') && $request->get('endtime'.$time) == $request->get('endtime')){continue;}
if($request->get('starttime'.$time) != "" && $request->get('endtime'.$time) != "")
{
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1);
$courseTimes->setCttTo($d2);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttOnline(0);
$courseTimes->setCttNumber($request->get('coursenumber'.$time));
$courseTimes->setCttRoom($request->get('room'.$time));
//$courseTimes->setCttMaxonline($request->get('maxcustomer'));
//$courseTimes->setCttMaxoffline($request->get('offlinecustomer'));
$courseTimes->setCttMaxonline($request->get('courseMaxOnline'.$time));
$courseTimes->setCttMaxoffline($request->get('courseMaxOffline'.$time));
$em->persist($courseTimes);
$em->flush();
}
}
}
}
}
if($company == "KVO")
{
$timesArr = explode(',',$request->get('timesArr'));
}
else
{
$timesArr = explode(',',$request->get('courseTimesArr'));
}
foreach($timesArr as $time)
{
if($time == ""){ continue; }
if($request->get('starttime'.$time) != "" && $request->get('endtime'.$time) != "")
{
//$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
//$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
if($company == "KVO")
{
$timetest = $repository->findOneBy(['cat_cid' => $id, 'cat_from' => $d1, 'cat_to' => $d2, 'cat_room' => $request->get('room'.$time) ]);
if($timetest)
{
continue;
}
}
/*else
{
$timetest = $repository->findOneBy(['cat_cid' => $id, 'cat_from' => $d1, 'cat_to' => $d2, 'cat_room' => 0 ]);
}*/
$courseAddTimes = new CourseAdditionalTimes();
$courseAddTimes->setCatCid($id);
$courseAddTimes->setCatFrom($d1);
$courseAddTimes->setCatTo($d2);
$courseAddTimes->setCatItem($time);
if($company == 'KVO')
{
if(!is_null($request->get('room'.$time)))
{
$courseAddTimes->setCatRoom($request->get('room'.$time));
}
else
{
$courseAddTimes->setCatRoom(0);
}
$courseAddTimes->setCatLeader(0);
$courseAddTimes->setCatDays('');
$courseAddTimes->setCatNumber(0);
}
else
{
$courseAddTimes->setCatRoom(0);
$courseAddTimes->setCatLeader($request->get('courseleader'.$time));
$courseAddTimes->setCatDays($request->get('courseDays'.$time));
$courseAddTimes->setCatNumber($request->get('coursenumber'.$time));
$courseAddTimes->setCatBookingOption($request->get('booking_option'.$time));
}
$courseAddTimes->setCatMaxOnline($request->get('courseMaxOnline'.$time));
$courseAddTimes->setCatMaxOffline($request->get('courseMaxOffline'.$time));
$em->persist($courseAddTimes);
$em->flush();
}
}
if($company != "KVO")
{
//$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
//$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'))));
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'))));
$courseAddTimes = new CourseAdditionalTimes();
$courseAddTimes->setCatCid($id);
$courseAddTimes->setCatFrom($d1);
$courseAddTimes->setCatTo($d2);
$courseAddTimes->setCatItem(0);
$courseAddTimes->setCatRoom(0);
$courseAddTimes->setCatLeader($request->get('courseleader'));
$courseAddTimes->setCatDays($request->get('courseDays'));
$courseAddTimes->setCatNumber($request->get('coursenumber'));
$courseAddTimes->setCatBookingOption($request->get('booking_option'));
$courseAddTimes->setCatMaxOnline($request->get('courseMaxOnline'));
$courseAddTimes->setCatMaxOffline($request->get('courseMaxOffline'));
$em->persist($courseAddTimes);
$em->flush();
}
}
else if($request->get('productKind') == '2' || $request->get('productKind') == 2)
{
$price = str_replace(".","#",$request->get('price'));
$price = str_replace(",",".",$price);
$price = str_replace("#",",",$price);
$price = number_format($price,2,'.',',');
$tax = number_format((float)$request->get('tax2'),2,'.',',');
$article = new Article();
$article->setAName($request->get('articlename'));
$article->setASbNumber($request->get('coursesbnumber2'));
$article->setACategory($request->get('coursecategory2'));
$article->setADescription($request->get('description2'));
$article->setAPrice($price);
$article->setATax($tax);
$article->setAActive(1);
$article->setAPlace(1);
$article->setADiscount($request->get('discount2'));
$article->setACostplace($request->get('costplace2'));
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
$id = $article->getId();
//image
$pic = $request->files->get('courseImage2');
$folder = $this->getParameter('kernel.project_dir')."/public/courseImages/";
if(!file_exists($folder)){mkdir($folder);}
$subfolder = $folder.$id."/";
if(!file_exists($subfolder)){mkdir($subfolder);}
$uniqid = uniqid();
$path = $subfolder.$uniqid."_".$pic->getClientOriginalName();
if(file_exists($path)){unlink($path);}
$newFilename = $uniqid.'_'.$pic->getClientOriginalName();
$pic->move($subfolder, $newFilename);
$articleImages = new ArticleImages();
$articleImages->setAiAid($id);
$articleImages->setAiPath(str_replace($publicImagePath,'.',$path));
$em->persist($articleImages);
$em->flush();
}
if($request->get('productKind') == '1' || $request->get('productKind') == 1)
{
$response = $this->forward('App\Controller\CourseController::backendTrainerPayment', ['id' => $id]);
return $response;
}
else
{
$response = $this->forward('App\Controller\CourseController::backendCourse', []);
return $response;
}
}
/**
* @Route("/backendCourseEditSave/", name="backendCourseEditSave")
*/
public function backendCourseEditSave(Request $request)
{
include("./include/global.php");
include("./include/function.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
if($request->get('mode') == '1' || $request->get('mode') == 1)
{
// save Course
$start = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
$end = new \DateTime(date('H:i:s', strtotime($request->get('endtime'))));
$visible_from = new \DateTime(date('Y-m-d H:i:00', strtotime($request->get('visible_from'). ' '. $request->get('visible_time').':00')));
$price = str_replace(".","#",$request->get('price'));
$price = str_replace(",",".",$price);
$price = str_replace("#",",",$price);
$price = number_format($price,2,'.',',');
$tax = number_format((float)$request->get('tax'),2,'.',',');
$adminFee = number_format((float)$request->get('admin_fee'),2,'.',',');
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $request->get('courseID')]);
$id = $request->get('courseID');
if($request->get('yoga') == null)
{
$yoga = 0;
}
else
{
$yoga = $request->get('yoga');
}
if($request->get('sibling_discount') == null)
{
$siblingDiscount = 0;
}
else
{
$siblingDiscount = $request->get('sibling_discount');
}
if($request->get('studio_discount') == null)
{
$studioDiscount = 0;
}
else
{
$studioDiscount = $request->get('studio_discount');
}
if($request->get('visible') == null)
{
$visible = 0;
}
else
{
$visible = $request->get('visible');
}
if($request->get('discount') == null)
{
$discount = 0;
}
else
{
$discount = $request->get('discount');
}
$course->setCName($request->get('coursename'));
$course->setCNumber($request->get('coursenumber'));
if( is_null($request->get('coursesbnumber')) )
{
$course->setCSbNumber(0);
}
else
{
$course->setCSbNumber($request->get('coursesbnumber'));
}
$course->setCYoga($yoga);
$course->setCLeader($request->get('courseleader'));
$course->setCCategory($request->get('coursecategory'));
$course->setCMaxcustomer($request->get('maxcustomer'));
$course->setCOfflineCustomer($request->get('offlinecustomer'));
$course->setCStart($start);
$course->setCEnd($end);
if( is_null($request->get('duration')) )
{
$course->setCDuration(0);
}
else
{
$course->setCDuration($request->get('duration'));
}
$course->setCDiscount($discount);
$course->setCSiblingDiscount($siblingDiscount);
$course->setCStudioDiscount($studioDiscount);
$course->setCVisibleFrom($visible_from);
$course->setCVisible($visible);
$course->setCPeriod($request->get('courseperiod'));
$bb = $request->get('break_before');
$ba = $request->get('break_after');
if(intval($bb) < 0){$bb = 0;}
if(intval($ba) < 0){$ba = 0;}
$course->setCBreakBefore($bb);
$course->setCBreakAfter($ba);
$course->setCDescription($request->get('description'));
$course->setCPrice($price);
$course->setCAdminFee( $adminFee );
$course->setCTax($tax);
$course->setCActive(1);
if($company == 'KVO')
{
$course->setCRoom($request->get('room'));
}
else
{
$course->setCRoom(0);
}
$course->setCCostplace($request->get('costplace'));
$course->setCAppointmentSeries($request->get('series'));
$course->setCAppointmentSeriesDays($request->get('seriesDays'));
$mon = $request->get('monday');
if(is_null($mon)) {$mon = 0;}
$tue = $request->get('tuesday');
if(is_null($tue)) {$tue = 0;}
$wed = $request->get('wednesday');
if(is_null($wed)) {$wed = 0;}
$thu = $request->get('thursday');
if(is_null($thu)) {$thu = 0;}
$fri = $request->get('friday');
if(is_null($fri)) {$fri = 0;}
$sat = $request->get('saturday');
if(is_null($sat)) {$sat = 0;}
$sun = $request->get('sunday');
if(is_null($sun)) {$sun = 0;}
$course->setCMonday($mon);
$course->setCTuesday($tue);
$course->setCWednesday($wed);
$course->setCThursday($thu);
$course->setCFriday($fri);
$course->setCSaturday($sat);
$course->setCSunday($sun);
$course->setCPlace(1);
$d = new \DateTime(date('Y-m-d H:i:s',strtotime($request->get('activeUntill'))));
$course->setCActiveUntill($d);
$d2 = new \DateTime(date('Y-m-d H:i:s',strtotime($request->get('activeFrom'))));
$course->setCActiveFrom($d2);
$em = $this->getDoctrine()->getManager();
$em->persist($course);
$em->flush();
//save Images
$pic = $request->files->get('courseImage');
$pic2 = $request->files->get('courseImageFull');
if($pic != "")
{
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$pics = $repository->findOneBy(['ci_cid' => $id]);
$full = $pics->getCiFullPath();
$em = $this->getDoctrine()->getManager();
$em->remove($pics);
$em->flush();
$folder = $this->getParameter('kernel.project_dir')."/public/courseImages/";
if(!file_exists($folder)){mkdir($folder);}
$subfolder = $folder.$id."/";
if(!file_exists($subfolder)){ mkdir($subfolder); }
$uniqid = uniqid();
$path = $subfolder.$uniqid."_".$pic->getClientOriginalName();
if(file_exists($path)){unlink($path);}
$newFilename = $uniqid.'_'.$pic->getClientOriginalName();
$pic->move($subfolder, $newFilename);
$courseImages = new CourseImages();
$courseImages->setCiCid($id);
$courseImages->setCiPath(str_replace($publicImagePath,'.',$path));
$courseImages->setCiFullPath($full);
$em->persist($courseImages);
$em->flush();
}
if($pic2 != "")
{
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$pics = $repository->findOneBy(['ci_cid' => $id]);
$path1 = $pics->getCiPath();
$em = $this->getDoctrine()->getManager();
$em->remove($pics);
$em->flush();
$folder = $this->getParameter('kernel.project_dir')."/public/courseImages/";
if(!file_exists($folder)){mkdir($folder);}
$subfolder = $folder.$id."/";
if(!file_exists($subfolder)){ mkdir($subfolder); }
$uniqid = uniqid();
$path2 = $subfolder.$uniqid."_".$pic2->getClientOriginalName();
if(file_exists($path2)){unlink($path2);}
$newFilename2 = $uniqid.'_'.$pic2->getClientOriginalName();
$pic2->move($subfolder, $newFilename2);
$courseImages = new CourseImages();
$courseImages->setCiCid($id);
$courseImages->setCiPath($path1);
$courseImages->setCiFullPath(str_replace($publicImagePath,'.',$path2));
$em->persist($courseImages);
$em->flush();
}
// save Course Times
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findBy(['ctt_cid' => $id, 'ctt_offline_customer' => 0, 'ctt_online' => 0]);
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTimes = $repository->findBy(['cat_cid' => $id]);
foreach($courseAddTimes as $cat)
{
$em->remove($cat);
$em->flush();
}
foreach($times as $time)
{
$repository = $this->getDoctrine()->getRepository(OrderItems::class);
$item = $repository->findBy(['oi_tid' => $time->getId()]);
$repository = $this->getDoctrine()->getRepository(ManualAppointment::class);
$ma = $repository->findBy(['ma_tid' => $time->getId()]);
if(!$item && !$ma)
{
$em = $this->getDoctrine()->getManager();
$em->remove($time);
$em->flush();
}
}
if($company == 'KVO')
{
$begin = new \DateTime(date("Y-m-d",strtotime($request->get('activeFrom'))));
$endDate = new \DateTime(date('Y-m-d',strtotime('+1 day',strtotime($request->get('activeUntill')))));
$interval = \DateInterval::createFromDateString('1 day');
$period = new \DatePeriod($begin, $interval, $endDate);
//each day from start to activeUntill
foreach ($period as $dt)
{
$day1 = $dt->format("Y-m-d \n");
$day = new \DateTime(date("Y-m-d", strtotime($day1)));
if($this->checkHoliday($dt->format("d.m.Y")) != false ){ continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 0 && $course->getCSunday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 1 && $course->getCMonday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 2 && $course->getCTuesday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 3 && $course->getCWednesday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 4 && $course->getCThursday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 5 && $course->getCFriday() == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 6 && $course->getCSaturday() == 0) {continue; }
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
while($d1 < $end)
{
$d1orig = new \DateTime(date('H:i:s',strtotime($d1->format('H:i:s'))));
$d1->add(new \DateInterval('PT' . $request->get('duration') . 'M'));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$time2 = $repository->findBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1orig, 'ctt_to' => $d1, 'ctt_room' => $request->get('room')]);
if(!$time2)
{
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1orig);
$courseTimes->setCttTo($d1);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttRoom($request->get('room'));
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttOnline(0);
$courseTimes->setCttNumber($request->get('coursenumber'));
$courseTimes->setCttMaxonline($request->get('maxcustomer'));
$courseTimes->setCttMaxoffline($request->get('offlinecustomer'));
$em = $this->getDoctrine()->getManager();
$em->persist($courseTimes);
$em->flush();
}
$bb = $request->get('break_before');
$ba = $request->get('break_after');
if(intval($bb) < 0){$bb = 0;}
if(intval($ba) < 0){$ba = 0;}
$d1->add(new \DateInterval('PT' . $bb . 'M'));
$d1->add(new \DateInterval('PT' . $ba . 'M'));
}
if($request->get('timesArr') != "")
{
//additional Times
$timesArr = explode(',',$request->get('timesArr'));
foreach($timesArr as $time)
{
/*
if($company != "KVO")
{
if($request->get('starttime'.$time) == $request->get('starttime') && $request->get('endtime'.$time) == $request->get('endtime')){continue;}
}
*/
if($request->get('starttime'.$time) != "" && $request->get('endtime'.$time) != "")
{
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
//if($compare1 == $d1 && $compare2 == $d2){continue;}
while($d1 < $d2)
{
$d1orig = new \DateTime(date('H:i:s',strtotime($d1->format('H:i:s'))));
$d1->add(new \DateInterval('PT' . $request->get('duration') . 'M'));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$timetest = $repository->findOneBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1orig, 'ctt_to' => $d1, 'ctt_room' => $request->get('room'.$time) ]);
if($timetest)
{
$bb = $request->get('break_before');
$ba = $request->get('break_after');
if(intval($bb) < 0){$bb = 0;}
if(intval($ba) < 0){$ba = 0;}
$d1->add(new \DateInterval('PT' . $bb . 'M'));
$d1->add(new \DateInterval('PT' . $ba . 'M'));
continue;
}
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1orig);
$courseTimes->setCttTo($d1);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttNumber($request->get('coursenumber'.$time));
$courseTimes->setCttRoom($request->get('room'.$time));
$em->persist($courseTimes);
$em->flush();
$bb = $request->get('break_before');
$ba = $request->get('break_after');
if(intval($bb) < 0){$bb = 0;}
if(intval($ba) < 0){$ba = 0;}
$d1->add(new \DateInterval('PT' . $bb . 'M'));
$d1->add(new \DateInterval('PT' . $ba . 'M'));
}
}
}
}
}
}
else
{
$days = $request->get('courseDays');
$days = explode(',',$days);
foreach($days as $day)
{
$day = new \DateTime(date("Y-m-d", strtotime($day)));
if($request->get('starttime') != "" && $request->get('endtime') != "")
{
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'))));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$timetest = $repository->findOneBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1, 'ctt_to' => $d2, 'ctt_room' => $request->get('room') ]);
if($timetest)
{
continue;
}
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$timetest = $repository->findOneBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1, 'ctt_to' => $d1, 'ctt_number' => $request->get('coursenumber') ]);
if($timetest){ continue; }
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1);
$courseTimes->setCttTo($d2);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttOnline(0);
$courseTimes->setCttNumber($request->get('coursenumber'));
$courseTimes->setCttRoom($request->get('room'));
$courseTimes->setCttMaxonline($request->get('courseMaxOnline'));
$courseTimes->setCttMaxoffline($request->get('courseMaxOffline'));
$em->persist($courseTimes);
$em->flush();
}
}
if($request->get('courseTimesArr') != "")
{
//additional Times
$timesArr = explode(',',$request->get('courseTimesArr'));
foreach($timesArr as $time)
{
//GET Days
$days = $request->get('courseDays'.$time);
$days = explode(',',$days);
foreach($days as $day)
{
$day = new \DateTime(date("Y-m-d", strtotime($day)));
//if($request->get('starttime'.$time) == $request->get('starttime') && $request->get('endtime'.$time) == $request->get('endtime')){continue;}
if($request->get('starttime'.$time) != "" && $request->get('endtime'.$time) != "")
{
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$timetest = $repository->findOneBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1, 'ctt_to' => $d2, 'ctt_room' => $request->get('room'.$time) ]);
if($timetest)
{
continue;
}
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$timetest = $repository->findOneBy(['ctt_cid' => $id, 'ctt_day' => $day, 'ctt_from' => $d1, 'ctt_to' => $d1, 'ctt_number' => $request->get('coursenumber'.$time) ]);
if($timetest){ continue; }
$courseTimes = new CourseTimes();
$courseTimes->setCttDay($day);
$courseTimes->setCttFrom($d1);
$courseTimes->setCttTo($d2);
$courseTimes->setCttCid($id);
$courseTimes->setCttNote('');
$courseTimes->setCttOfflineCustomer(0);
$courseTimes->setCttOnline(0);
$courseTimes->setCttNumber($request->get('coursenumber'.$time));
$courseTimes->setCttRoom($request->get('room'.$time));
$courseTimes->setCttMaxonline($request->get('courseMaxOnline'.$time));
$courseTimes->setCttMaxoffline($request->get('courseMaxOffline'.$time));
$em->persist($courseTimes);
$em->flush();
}
}
}
}
}
if($company == "KVO")
{
$timesArr = explode(',',$request->get('timesArr'));
}
else
{
$timesArr = explode(',',$request->get('courseTimesArr'));
}
foreach($timesArr as $time)
{
if($time == ""){ continue; }
/*
if($company != "KVO")
{
if($request->get('starttime'.$time) == $request->get('starttime') && $request->get('endtime'.$time) == $request->get('endtime')){continue;}
}
*/
if($request->get('starttime'.$time) != "" && $request->get('endtime'.$time) != "")
{
//$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
//$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'.$time))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'.$time))));
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
if($company == "KVO")
{
$timetest = $repository->findOneBy(['cat_cid' => $id, 'cat_from' => $d1, 'cat_to' => $d2, 'cat_room' => $request->get('room'.$time) ]);
if($timetest)
{
continue;
}
}
/*else
{
$timetest = $repository->findOneBy(['cat_cid' => $id, 'cat_from' => $d1, 'cat_to' => $d2, 'cat_room' => 0 ]);
}
*/
$courseAddTimes = new CourseAdditionalTimes();
$courseAddTimes->setCatCid($id);
$courseAddTimes->setCatFrom($d1);
$courseAddTimes->setCatTo($d2);
$courseAddTimes->setCatItem($time);
if($company == 'KVO')
{
if(!is_null($request->get('room'.$time)))
{
$courseAddTimes->setCatRoom($request->get('room'.$time));
}
else
{
$courseAddTimes->setCatRoom(0);
}
$courseAddTimes->setCatLeader(0);
$courseAddTimes->setCatDays('');
$courseAddTimes->setCatNumber(0);
$courseAddTimes->setCatBookingOption(0);
}
else
{
$courseAddTimes->setCatRoom(0);
$courseAddTimes->setCatLeader($request->get('courseleader'.$time));
$courseAddTimes->setCatDays($request->get('courseDays'.$time));
$courseAddTimes->setCatNumber($request->get('coursenumber'.$time));
$courseAddTimes->setCatBookingOption($request->get('booking_option'.$time));
}
$courseAddTimes->setCatMaxOnline($request->get('courseMaxOnline'.$time));
$courseAddTimes->setCatMaxOffline($request->get('courseMaxOffline'.$time));
$em->persist($courseAddTimes);
$em->flush();
}
}
if($company != "KVO")
{
//$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
//$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'))));
$d1 = new \DateTime(date("H:i:s",strtotime($request->get('starttime'))));
$d2 = new \DateTime(date("H:i:s",strtotime($request->get('endtime'))));
$courseAddTimes = new CourseAdditionalTimes();
$courseAddTimes->setCatCid($id);
$courseAddTimes->setCatFrom($d1);
$courseAddTimes->setCatTo($d2);
$courseAddTimes->setCatItem(0);
$courseAddTimes->setCatRoom(0);
$courseAddTimes->setCatLeader($request->get('courseleader'));
$courseAddTimes->setCatDays($request->get('courseDays'));
$courseAddTimes->setCatNumber($request->get('coursenumber'));
$courseAddTimes->setCatBookingOption($request->get('booking_option'));
$courseAddTimes->setCatMaxOnline($request->get('courseMaxOnline'));
$courseAddTimes->setCatMaxOffline($request->get('courseMaxOffline'));
$em->persist($courseAddTimes);
$em->flush();
}
}
else if($request->get('mode') == '2' || $request->get('mode') == 2)
{
$price = str_replace(".","#",$request->get('price2'));
$price = str_replace(",",".",$price);
$price = str_replace("#",",",$price);
$price = number_format($price,2,'.',',');
$tax = number_format((float)$request->get('tax2'),2,'.',',');
$repository = $this->getDoctrine()->getRepository(Article::class);
$article = $repository->findOneBy(['id' => $request->get('articleID')]);
$id = $request->get('articleID');
$article->setAName($request->get('articlename'));
$article->setASbNumber($request->get('coursesbnumber2'));
$article->setACategory($request->get('coursecategory2'));
$article->setADescription($request->get('description2'));
$article->setAPrice($price);
$article->setATax($tax);
$article->setAActive(1);
$article->setAPlace(1);
$article->setACostplace($request->get('costplace2'));
$article->setADiscount($request->get('discount2'));
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
//save Images
$pic = $request->files->get('courseImage2');
if($pic != "")
{
$repository = $this->getDoctrine()->getRepository(ArticleImages::class);
$pics = $repository->findOneBy(['ai_aid' => $id]);
$em = $this->getDoctrine()->getManager();
$em->remove($pics);
$em->flush();
$folder = $this->getParameter('kernel.project_dir')."/public/courseImages/";
if(!file_exists($folder)){mkdir($folder);}
$subfolder = $folder.$id."/";
if(!file_exists($subfolder)){mkdir($subfolder);}
$uniqid = uniqid();
$path = $subfolder.$uniqid."_".$pic->getClientOriginalName();
if(file_exists($path)){unlink($path);}
$newFilename = $uniqid.'_'.$pic->getClientOriginalName();
$pic->move($subfolder, $newFilename);
$articleImages = new ArticleImages();
$articleImages->setAiAid($id);
$articleImages->setAiPath(str_replace($publicImagePath,'.',$path));
$em->persist($articleImages);
$em->flush();
}
}
$response = $this->forward('App\Controller\CourseController::backendCourse', []);
return $response;
}
/**
* @Route("/loadContent/{category}/{period}", name="loadContent")
*/
public function loadContent($category,$period)
{
include("./include/global.php");
include("./include/function.php");
if($category == ""){$category = '0';}
$place = '0';
if($place == '0')
{
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$place = $session->get('place');
}
$d1 = new \DateTime(date("Y-m-d"));
$em2 = $this->getDoctrine()->getManager();
if($company == 'KVO')
{
$query = "UPDATE course SET c_active = 0 WHERE c_active_untill < :date ";
$statement = $em2->getConnection()->prepare($query);
$statement->bindValue('date',date("Y-m-d"));
$statement->execute();
}
else
{
/*
$query = "SELECT * FROM course WHERE c_active = 1";
$course = $em2->getConnection()->prepare($query);
$course->bindValue('category',$category);
$course->execute();
$course2 = $course->fetchAll();
*/
if($period == 0)
{
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findBy(['c_active' => '1','c_category' => $category]);
}
else
{
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findBy(['c_active' => '1','c_category' => $category, 'c_period' => $period]);
}
// foreach($course2 as $cours)
foreach($course as $cours)
{
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findOneBy(['ctt_cid' => $cours->getId()],['ctt_day' => 'DESC']);
if($times)
{
$tmp = $times->getCttDay();
$tmp = $tmp->format('Y-m-d');
if($tmp < date("Y-m-d"))
{
$query = "UPDATE course SET c_active = 0 WHERE id = :id ";
$statement = $em2->getConnection()->prepare($query);
$statement->bindValue('id',$times->getCttCid());
$statement->execute();
}
}
}
}
$em2 = $this->getDoctrine()->getManager();
if($company != "KVO")
{
if($period == 0)
{
//$query = "SELECT * FROM course WHERE c_category = :category AND c_active = 1 AND c_visible_from <= :visible ORDER BY c_period DESC, c_name ASC";
$query = "SELECT * FROM course WHERE c_category = :category AND c_visible_from <= :visible ORDER BY c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s") ]);
}
else
{
//$query = "SELECT * FROM course WHERE c_category = :category AND c_active = 1 AND c_visible_from <= :visible ORDER BY c_period DESC, c_name ASC";
$query = "SELECT * FROM course WHERE c_category = :category AND c_visible_from <= :visible ORDER BY c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s") ]);
}
}
else
{
$query = "SELECT * FROM course WHERE c_category = :category AND c_active = 1 ORDER BY c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category ]);
}
$output = '';
$output .= '<div class="class">';
$output .= '<div class="container">';
$output .= '<div class="section-header text-center wow zoomIn" data-wow-delay="0.1s" style="visibility: visible; animation-delay: 0.1s; animation-name: zoomIn;">';
$output .= ' <p>Unsere Kurse</p>';
$output .= '</div>';
$lastperiod = 0;
$output .= '<div class="row" id="periodFilter">';
$output .= '<div class="col-12">';
$output .= ' <ul id="class-filter">';
if($period == 0)
{
$output .= ' <li data-filter="*" class="filter-active">Alle Perioden</li>';
}
else
{
$output .= ' <li data-filter="*" onclick="periodFilter(\''.$url.'\',0);" >Alle Perioden</li>';
}
foreach($course as $cours)
{
if($cours['c_period'] == 0){ continue; }
$cont = false;
if($place != "0")
{
$repository = $this->getDoctrine()->getRepository(CostPlace::class);
$costplace = $repository->findBy(['cp_active' => 1, 'cp_place' => $place]);
foreach($costplace as $cp)
{
if($cours['c_costplace'] == $cp->getId() )
{
$cont = true;
}
}
}
if(!$cont)
{
continue;
}
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findOneBy(['ctt_cid' => $cours['id']],['ctt_day' => 'DESC']);
$contTime = false;
if($times)
{
$tmp = $times->getCttDay();
$tmp = $tmp->format('Y-m-d');
if($tmp < date("Y-m-d"))
{
$contTime = true;
}
}
if($contTime == true){ continue; }
if($lastperiod == 0 || $lastperiod != $cours['c_period'])
{
// show period
if($period == $cours['c_period'])
{
$output .= ' <li data-filter="*" class="filter-active" >'.$globalPeriods[$cours['c_period']].'</li>';
}
else
{
$output .= ' <li data-filter="*" onclick="periodFilter(\''.$url.'\','.$cours['c_period'].');">'.$globalPeriods[$cours['c_period']].'</li>';
}
}
$lastperiod = $cours['c_period'];
}
$output .= '</ul>';
$output .= '</div>';
$output .= '</div>';
$anzProd = $globAmnProd;
$i = 0;
$firstUsed = false;
//foreach($course as $cours)
$lastperiod = 0;
if($company != "KVO")
{
if($period == 0)
{
$query = "SELECT id FROM course WHERE c_category = :category AND (c_active_untill = '1970-01-01' OR c_active_from = '1970-01-01') AND c_visible_from <= :visible ORDER BY c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s") ]);
}
else
{
$query = "SELECT id FROM course WHERE c_category = :category AND (c_active_untill = '1970-01-01' OR c_active_from = '1970-01-01') AND c_visible_from <= :visible AND c_period = :period ORDER BY c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s"), 'period' => $period ]);
}
foreach($course as $cours)
{
$query3 = "SELECT MIN(ctt_day) AS mindat, MAX(ctt_day) AS maxdat FROM course_times WHERE ctt_cid = :cid ";
$result = $em2->getConnection()->executeQuery($query3,['cid' => $cours['id'] ]);
while (($row = $result->fetchAssociative()) !== false)
{
$query4 = "UPDATE course SET c_active_from = :min , c_active_untill = :max WHERE id = :id ";
$statement = $em2->getConnection()->prepare($query4);
$statement->bindValue('min',$row['mindat']);
$statement->bindValue('max',$row['maxdat']);
$statement->bindValue('id',$cours['id']);
$statement->execute();
}
}
}
$query = "SELECT * FROM course WHERE c_category = :category AND c_visible_from <= :visible AND c_period = :period ORDER BY c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s"), 'period' => $period ]);
if($company != "KVO")
{
if($period == 0)
{
$query = "SELECT * FROM course WHERE c_category = :category AND c_visible_from <= :visible ORDER BY c_active_from DESC, c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s") ]);
}
else
{
$query = "SELECT * FROM course WHERE c_category = :category AND c_visible_from <= :visible AND c_period = :period ORDER BY c_active_from DESC, c_period DESC, c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category, 'visible' => date("Y-m-d H:i:s"), 'period' => $period ]);
}
}
else
{
$query = "SELECT * FROM course WHERE c_category = :category AND c_active = 1 ORDER BY c_name ASC";
$course = $em2->getConnection()->executeQuery($query,['category' => $category ]);
}
foreach($course as $cours)
{
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findOneBy(['ctt_cid' => $cours['id']],['ctt_day' => 'DESC']);
$contTime = false;
if($times)
{
$tmp = $times->getCttDay();
$tmp = $tmp->format('Y-m-d');
if($tmp < date("Y-m-d"))
{
$contTime = true;
}
}
if($contTime == true){ continue; }
if($cours['c_period'] == 0){ continue; }
$cont = false;
if($place != "0")
{
$repository = $this->getDoctrine()->getRepository(CostPlace::class);
$costplace = $repository->findBy(['cp_active' => 1, 'cp_place' => $place]);
foreach($costplace as $cp)
{
if($cours['c_costplace'] == $cp->getId() )
{
$cont = true;
}
}
}
if(!$cont)
{
continue;
}
//only employee
if($cours['c_visible'] == '1')
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
continue;
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
continue;
}
}
}
//if first entries of the course are full then skip course.
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$cit = $repository->findBy(['ctt_cid' => $cours['id']],['ctt_day' => 'ASC']);
$weekdays = array();
$stopit = false;
$weekday_counter = array();
$active = 0;
$active2 = 0;
foreach($cit as $days )
{
if($days->getCttDay()->format('Y-m-d') < date('Y-m-d')){ continue; }
$tmp = $days->getCttDay();
$tmp = $tmp->format('d-m-Y');
if(array_key_exists(date('N', strtotime($tmp)),$weekday_counter))
{
if($weekday_counter[date('N', strtotime($tmp))] == 2){ continue; }
}
//if($weekday_counter[date('N', strtotime($tmp))] == ""){ $weekday_counter[date('N', strtotime($tmp))] = 0; }
if(!array_key_exists(date('N', strtotime($tmp)),$weekday_counter)){ $weekday_counter[date('N', strtotime($tmp))] = 0; }
if( $days->getCttOnline() < $days->getCttMaxonline())
{
$active = 1;
}
if($days->getCttOfflineCustomer() < $days->getCttMaxoffline() && $days->getCttOnline() >= $days->getCttMaxonline())
{
$active2 = 1;
}
if($days->getCttOfflineCustomer() >= $days->getCttMaxoffline() && $days->getCttOnline() >= $days->getCttMaxonline())
{
$weekdays[date('N', strtotime($tmp))] = 1;
$weekday_counter[date('N', strtotime($tmp))] = $weekday_counter[date('N', strtotime($tmp))] + 1;
}
else
{
$weekdays[date('N', strtotime($tmp))] = 0;
$weekday_counter[date('N', strtotime($tmp))] = $weekday_counter[date('N', strtotime($tmp))] + 1;
//break;
}
}
foreach($weekdays as $we)
{
if($we == 1){ $stopit = true; break; }
}
if($stopit == true)
{
//continue;
}
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$cit = $repository->findBy(['ctt_cid' => $cours['id']],['ctt_day' => 'ASC']);
foreach($cit as $days )
{
if( $days->getCttOnline() < $days->getCttMaxonline())
{
$active = 1;
}
if($days->getCttOfflineCustomer() < $days->getCttMaxoffline() && $days->getCttOnline() >= $days->getCttMaxonline())
{
$active2 = 1;
}
}
//display
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$image = $repository->findOneBy(['ci_cid' => $cours['id']]);
if($lastperiod == 0 || $lastperiod != $cours['c_period'])
{
// show period
if($lastperiod != 0)
{
$output .= '</div>';
}
$output .= '<h3>'.$globalPeriods[$cours['c_period']].' '.date("Y",strtotime($cours['c_active_from'])).'</h3>';
$output .= '<div class="row class-container">';
$i = 0;
}
$lastperiod = $cours['c_period'];
if($i == 0)
{
$firstUsed = true;
if($active == '1')
{
$output .= '<div id="first" class="col-lg-4 col-md-6 col-sm-12 class-item filter-1 wow fadeInUp" data-wow-delay="0.0s" style="cursor:pointer" onclick="openArticle('.$cours['id'].',\''.$url.'\',\'1\' )">';
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
if(is_object($uid2))
{
$role = $uid2->getURole();
}
else
{
$role = 0;
}
if($active2 = '1' && $role >= 3 )
{
$output .= '<div id="first" class="col-lg-4 col-md-6 col-sm-12 class-item filter-1 wow fadeInUp" data-wow-delay="0.0s" style="cursor:pointer" onclick="openArticle('.$cours['id'].',\''.$url.'\',\'1\' )">';
}
else
{
$output .= '<div id="first" class="col-lg-4 col-md-6 col-sm-12 class-item filter-1 wow fadeInUp" data-wow-delay="0.0s" style="cursor:pointer">';
}
}
}
else
{
if($active == '1')
{
$output .= '<div class="col-lg-4 col-md-6 col-sm-12 class-item filter-1 wow fadeInUp" data-wow-delay="0.0s" style="cursor:pointer" onclick="openArticle('.$cours['id'].',\''.$url.'\',\'1\' )">';
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
if(is_object($uid2))
{
$role = $uid2->getURole();
}
else
{
$role = 0;
}
if($active2 = '1' && $role >= 3 )
{
$output .= '<div class="col-lg-4 col-md-6 col-sm-12 class-item filter-1 wow fadeInUp" data-wow-delay="0.0s" style="cursor:pointer" onclick="openArticle('.$cours['id'].',\''.$url.'\',\'1\' )">';
}
else
{
$output .= '<div class="col-lg-4 col-md-6 col-sm-12 class-item filter-1 wow fadeInUp" data-wow-delay="0.0s" style="cursor:pointer">';
}
}
}
$output .= '<div class="class-wrap">';
$output .= '<div class="class-img">';
if($active == '1')
{
$output .= '<img src="'.$url.$image->getCiPath().'">';
}
else
{
$output .= '<img src="'.$url.$image->getCiFullPath().'">';
}
$output .= '</div>';
// $output .= '<span style="'.$defaultColor.'" >'.$cours['c_name'].'</span><br>';
$output .= '<div class="class-text">';
//$output .= '<div class="class-teacher">';
//$output .= ' <img src="" alt="Image">';
//$output .= ' <h3>Johannes der Täufer</h3>';
//$output .= ' <a href="">+</a>';
//$output .= '</div>';
$output .= '<h2>'.$cours['c_name'].'</h2>';
$output .= '<div class="class-meta">';
//$output .= ' <p><i class="far fa-calendar-alt"></i>Sun, Tue, Thu</p>';
//$output .= ' <p><i class="far fa-clock"></i>9:00 - 10:00</p>';
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
$i++;
}
$repository = $this->getDoctrine()->getRepository(Article::class);
/*
if($place == '0' && $category != '0')
{
$article = $repository->findBy(['a_category' => $category, 'a_active' => 1]);
}
else
{
$article = $repository->findBy(['a_active' => 1]);
}
*/
$article = $repository->findBy(['a_category' => $category, 'a_active' => 1]);
foreach($article as $art)
{
$cont = false;
if($place != "0")
{
$repository = $this->getDoctrine()->getRepository(CostPlace::class);
$costplace = $repository->findBy(['cp_active' => 1, 'cp_place' => $place]);
foreach($costplace as $cp)
{
if($art->getACostplace() == $cp->getId() )
{
$cont = true;
}
}
}
/*
else
{
$cont = true;
}
*/
if(!$cont)
{
continue;
}
$repository = $this->getDoctrine()->getRepository(ArticleImages::class);
$image = $repository->findOneBy(['ai_aid' => $art->getid()]);
if($i == 0 && $firstUsed == false)
{
$firstUsed = true;
$output .= '<div id="first" class="col-sm" align="left" style="cursor:pointer" onclick="openArticle('.$art->getid().',\''.$url.'\', \'2\' )">';
}
else
{
$output .= '<div class="col-sm" align="left" style="cursor:pointer" onclick="openArticle('.$art->getid().',\''.$url.'\', \'2\' )">';
}
$output .= '<div style="max-width: 200px;background-color: '.$mainboxColor.'">';
$output .= '<img class="imgWithHighlightBorder" width="200px" height="200px" src="'.$url.$image->getAiPath().'">';
$output .= '<br />';
$output .= '<span style="'.$defaultColor.'" >'.$art->getAName().'</span><br>';
$output .= '<span style="'.$defaultColor.'" >'.number_format($art->getAPrice(),2,',','.').' €</span>';
$output .= '</div>';
$output .= '</div>';
$i++;
}
$output .= '</div>';
if(!$course && !$article)
{
if($category == '0' || $category == '')
{
$output = '<span style="'.$defaultColor.'">Bitte wählen Sie eine Kategorie aus</span>';
}
else
{
$output = '<span style="'.$defaultColor.'">Es wurden leider keine Kurse / Produkte gefunden</span>';
}
}
else
{
if($i == 0)
{
$output = '<span style="'.$defaultColor.'">Es wurden leider keine Kurse / Produkte gefunden</span>';
}
}
$output .= '</div>';
$output .= '</div>';
return new Response($output);
die();
}
/**
* @Route("/openArticle/{id}/{mode}", name="openArticle")
*/
public function openArticle($id, $mode)
{
require_once("./include/global.php");
require_once("./include/function.php");
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findAll();
foreach($cart as $ca)
{
$time = $ca->getCaNow()->format('Y-m-d H:i:s');
$time = date("Y-m-d H:i:s",strtotime($time));
if($time < date("Y-m-d H:i:s",strtotime("-".$cartMaxTime." Minutes")) )
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
$discount = "0";
$siblingdiscount = "0";
$costplace = "";
$period = "0";
$price = "0";
if($mode == '1')
{
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $id]);
$costplace = $course->getCCostplace();
$period = $course->getCPeriod();
$discount = $course->getCDiscount();
$siblingdiscount = $course->getCSiblingDiscount();
$price = $course->getCPrice();
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$images = $repository->findOneBy(['ci_cid' => $id]);
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$cat = $repository->findOneBy(['id' => $course->getCCategory()]);
$maxBuy = $cat->getCcMaxamount();
$daysString = "";
$daysArr = array();
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$cit = $repository->findBy(['ctt_cid' => $course->getId()]);
$weekdays = array();
foreach($cit as $days )
{
$tmp = $days->getCttDay();
$tmp = $tmp->format('d-m-Y');
$weekdays[date('N', strtotime($tmp))] = 1;
array_push($daysArr,$tmp);
}
$daysArr = array_unique($daysArr);
$daysString = '';
foreach($daysArr as $day)
{
$daysString .= $day.',';
}
$daysString = substr($daysString,0,-1);
ksort($weekdays);
}
else if($mode == '2')
{
$repository = $this->getDoctrine()->getRepository(Article::class);
$article = $repository->findOneBy(['id' => $id]);
$price = $article->getAPrice();
$discount = $article ->getADiscount();
$costplace = $article->getACostplace();
$repository = $this->getDoctrine()->getRepository(ArticleImages::class);
$images = $repository->findOneBy(['ai_aid' => $id]);
$repository = $this->getDoctrine()->getRepository(CourseCategories::class);
$cat = $repository->findOneBy(['id' => $article->getACategory()]);
$maxBuy = $cat->getCcMaxamount();
}
if($discount != "0")
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest, check only cart. if > 1 Item and not highest price then Discount
$session = $this->requestStack->getSession(); //$session = $this->get('session');
if(!$session->get('cartitems')){$session->set('cartitems', 0);}
$cartitems = $session->get('cartitems');
if($cartitems > 0)
{
//check if other prices higher / lower
$x = 0;
$end = $session->get('cartitems');
for($i = 1; $i <= $end; $i++ )
{
$mode2 = $session->get('cartItemMode'.$i);
if($mode2 == '1')
{
//course
$repository = $this->getDoctrine()->getRepository(Course::class);
$tmp = $repository->findOneBy(['id' => $session->get('cartCourse'.$i)]);
$price2 = $tmp->GetCPrice();
}
else
{
//article
$repository = $this->getDoctrine()->getRepository(Article::class);
$tmp = $repository->findOneBy(['id' => $session->get('cartArticle'.$i)]);
$price2 = $tmp->GetAPrice();
}
if($price <= $price2)
{
$x++;
}
}
// x == amount of orders with higher price
$repository = $this->getDoctrine()->getRepository(Costplace::class);
$tmp = $repository->findOneBy(['id' => $costplace]);
$place = $tmp->getCpPlace();
$y = 0;
$discountArr = array();
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findBy(['d_place' => $place],['d_amount' => 'ASC']);
foreach($discount as $d)
{
$discountArr[$y] = $d->getDAmount();
$y++;
}
if($x == 2) // middle discount
{
$discount = $discountArr[1];
}
else if($x >= 3) // highest discount
{
$discount = $discountArr[2];
}
else // lowest discount
{
$discount = $discountArr[0];
}
}
else
{
$discount = 0;
}
}
else
{
// existing user
// check only cart & all order in the same period. if > 1 Item then Discount
$session = $this->requestStack->getSession(); //$session = $this->get('session');
if(!$session->get('cartitems')){$session->set('cartitems', 0);}
$cartitems = $session->get('cartitems');
//check if other prices higher / lower
$x = 0;
for($i = 1; $i <= $cartitems; $i++ )
{
$mode2 = $session->get('cartItemMode'.$i);
if($mode2 == '1')
{
//course
$repository = $this->getDoctrine()->getRepository(Course::class);
$tmp = $repository->findOneBy(['id' => $session->get('cartCourse'.$i)]);
$price2 = $tmp->GetCPrice();
}
else
{
//article
$repository = $this->getDoctrine()->getRepository(Article::class);
$tmp = $repository->findOneBy(['id' => $session->get('cartArticle'.$i)]);
$price2 = $tmp->GetAPrice();
}
if($price <= $price2)
{
$x++;
}
}
$curId = "0";
$curItem = "0";
$usr = $this->get('security.token_storage')->getToken()->getUser();
$repository = $this->getDoctrine()->getRepository(Orders::class);
$orders = $repository->findBy(['o_uid' => $usr->getId()]);
foreach($orders as $order)
{
$repository = $this->getDoctrine()->getRepository(OrderItems::class);
$orderItems = $repository->findBy(['oi_oid' => $order->getId()]);
foreach($orderItems as $orderItem)
{
if($orderItem->getOiCid() == 0){continue;}
if($curId == $order->getId() && $orderItem->getOiItem() == $curItem)
{
continue;
}
if($orderItem->getOiPeriod() != $period){ continue; }
if($orderItem->getOiPrice() >= $price){ $x++; }
$curId = $order->getId();
$curItem = $orderItem->getOiItem();
}
}
// x == amount of orders with higher price
$repository = $this->getDoctrine()->getRepository(Costplace::class);
$tmp = $repository->findOneBy(['id' => $costplace]);
$place = $tmp->getCpPlace();
$y = 0;
$discountArr = array();
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findBy(['d_place' => $place],['d_amount' => 'ASC']);
foreach($discount as $d)
{
$discountArr[$y] = $d->getDAmount();
$y++;
}
if($x == 2) // middle discount
{
$discount = $discountArr[1];
}
else if($x == 3) // highest discount
{
$discount = $discountArr[2];
}
else if($x > 3) // lowest discount
{
$discount = $discountArr[0];
}
else // lowest discount
{
$discount = $discountArr[0];
}
}
}
$discount = 0;
if($mode == '1')
{
$followDays = false;
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$tmp = $repository->findBy(['cat_cid' => $course->getId()]);
foreach($tmp as $t)
{
if($t->getCatBookingOption() == '2')
{
$followDays = true; break;
}
}
return $this->render('course/article_detail.html.twig',[ 'course' => $course, 'image' => $images ,'id' => $id, 'mode' => $mode, 'max' => $maxBuy, 'url' => $url, 'days' => $daysString, 'discount' => $discount, 'siblingDiscount' => $siblingdiscount, 'weekdays' => $weekdays, 'followDays' => $followDays]);
}
else if($mode == '2')
{
return $this->render('course/article_detail.html.twig',[ 'article' => $article, 'image' => $images ,'id' => $id, 'mode' => $mode, 'max' => $maxBuy, 'url' => $url, 'discount' => $discount, 'siblingDiscount' => $siblingdiscount]);
}
else
{
return $this->render('checkout/error.html.twig', [ ]);
}
}
/**
* @Route("/loadTimes/{id}/{date}/{manualEntry}/{minAmount}" , name="loadTimes", options={"expose"=true})
*/
public function loadTimes($id, $date, $manualEntry, $minAmount )
{
require_once("./include/function.php");
require_once("./include/global.php");
$d1 = new \DateTime(date("Y-m-d",strtotime(checkUserInput($date))));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findBy([
'ctt_cid' => trim(checkUserInput($id)),
'ctt_day' => $d1
], ['ctt_from' => 'ASC']);
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$output = '';
$i = 0;
$timesArr = array();
foreach($times as $time)
{
$nd1 = $time->getCttFrom();
$nd1 = $nd1->format('H:i');
$nd2 = $time->getCttTo();
$nd2 = $nd2->format('H:i');
$nd3 = $time->getCttDay();
$nd3 = $nd3->format('d.m.Y');
if(!isset( $timesArr[$nd3][$nd1.' '.$nd2] )){$timesArr[$nd3][$nd1.' '.$nd2] = 0;}
$tmp = 0;
//$tmp = $this->getUsedSlots(trim(checkUserInput($time->getId())));
$tmp = $time->getCttOnline() + $time->getCttOfflineCustomer();
$maxCustomer = 0;
$maxCustomer = $time->getCttMaxonline();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
}
else
{
//employee
$maxCustomer = $maxCustomer + $time->getCttMaxoffline();
}
}
$tmp = $maxCustomer - $tmp;
$timesArr[$nd3][$nd1.' '.$nd2] = $timesArr[$nd3][$nd1.' '.$nd2] + $tmp;
}
$usedArr = array();
foreach($times as $time)
{
$nd1 = $time->getCttFrom();
$nd1 = $nd1->format('H:i');
$nd2 = $time->getCttTo();
$nd2 = $nd2->format('H:i');
$nd3 = $time->getCttDay();
$nd3 = $nd3->format('d.m.Y');
if(!isset( $usedArr[$nd3][$nd1.' '.$nd2] )){$usedArr[$nd3][$nd1.' '.$nd2] = 0;}
$found = false;
//already in Cart
$items = $session->get('cartitems');
for($j = 0; $j <= $items; $j++)
{
$tid = $session->get('cartTime'.$j);
if(!empty($tid) && $tid == $time->getId() ){$found = true;}
}
if($usedArr[$nd3][$nd1.' '.$nd2] == 0 )
{
$tmp = $timesArr[$nd3][$nd1.' '.$nd2];
$tmp2 = $timesArr[$nd3][$nd1.' '.$nd2];
switch($tmp)
{
case '0': $tmp = "Leider keine Plätze mehr verfügbar";break;
case '1': $tmp = $tmp. " Platz offen";break;
default: $tmp = $tmp." Plätze offen";break;
}
if($found == true)
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" disabled />';
$output .= '<label class="btn btn-secondary timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled>'.$nd1.' - '.$nd2.' </label> ';
}
else if($time->getCttActive() == '0' && $tmp2 > 0)
{
continue;
}
else if($time->getCttActive() == '0' || $found == true)
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" disabled />';
$output .= '<label class="btn btn-secondary timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled>'.$nd1.' - '.$nd2.' </label> ';
}
else
{
if($minAmount == '0')
{
if($tmp2 == 0)
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" disabled />';
$output .= '<label class="btn btn-success timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled>'.$nd1.' - '.$nd2.'</label> ';
}
else
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" />';
$output .= '<label class="btn btn-success timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;">'.$nd1.' - '.$nd2.'</label> ';
}
}
else
{
if($tmp2 < $minAmount )
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" disabled />';
$output .= '<label class="btn btn-success timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled>'.$nd1.' - '.$nd2.'</label> ';
}
else
{
if($tmp2 == 0)
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" disabled />';
$output .= '<label class="btn btn-success timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled>'.$nd1.' - '.$nd2.'</label> ';
}
else
{
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" />';
$output .= '<label class="btn btn-success timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;">'.$nd1.' - '.$nd2.'</label> ';
}
}
}
}
$usedArr[$nd3][$nd1.' '.$nd2] = 1;
$i++;
}
}
if($output == "")
{
if($manualEntry == 1)
{
$output = '<p>Es sind leider keine Termine mehr Verfügbar. <br>Bitte wählen Sie einen anderen Termin.</p>';
}
else
{
$output = '<p style="'.$defaultColor.'">Es sind leider keine Termine mehr Verfügbar. <br>Bitte wählen Sie einen anderen Termin.</p>';
}
}
return new Response($output);
}
/**
* @Route("/loadWeekdayTimes/{id}/{weekday}/{manualEntry}/{minAmount}" , name="loadWeekdayTimes", options={"expose"=true})
*/
public function loadWeekdayTimes($id, $weekday, $manualEntry, $minAmount )
{
require_once("./include/function.php");
require_once("./include/global.php");
if($weekday == 0){ $order = 'DESC'; }
else { $order = 'ASC'; }
$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND ctt_day >= :day ORDER BY ctt_day ".$order;
$em2 = $this->getDoctrine()->getManager();
$nextday = "";
$tmp = "";
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $id, 'day' => date("Y-m-d")]);
foreach($resultSet as $res)
{
$tmp = $res['ctt_day'];
if($weekday != 0)
{
if(date("N",strtotime($tmp)) == $weekday)
{
break;
}
}
}
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$output = '<br>';
$i = 0;
$timesArr = array();
/*
$d1 = new \DateTime(date("Y-m-d",strtotime(checkUserInput($tmp))));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findBy([
'ctt_cid' => trim(checkUserInput($id)),
'ctt_day' => $d1
], ['ctt_from' => 'ASC']);
*/
if($tmp == ""){ $tmp = date('Y-m-d'); }
$tmpTime = $tmp;
$d2 = date('d.m.Y', strtotime('+1 week', strtotime(checkUserInput($tmpTime))));
$d3 = date('d.m.Y', strtotime('+2 week', strtotime(checkUserInput($tmpTime))));
//debugText( date("Y-m-d",strtotime(checkUserInput($tmpTime))));
//debugText( date("Y-m-d",strtotime($d2)));
//$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND (ctt_day = :day OR ctt_day = :day2) GROUP BY ctt_number ORDER BY ctt_day ASC , ctt_from ASC";
$query = "SELECT * FROM ( SELECT * FROM course_times WHERE ctt_cid = :cid AND (ctt_day = :day OR ctt_day = :day2 OR ctt_day = :day3) ORDER BY ctt_day ASC, ctt_from ASC LIMIT 18446744073709551615 ) AS sub GROUP BY ctt_number; ";
$em2 = $this->getDoctrine()->getManager();
$times = $em2->getConnection()->executeQuery($query,['cid' => $id, 'day' => date("Y-m-d",strtotime(checkUserInput($tmpTime))), 'day2' => date("Y-m-d",strtotime($d2)), 'day3' => date("Y-m-d",strtotime($d3)) ]);
$i = 0;
foreach($times as $time)
{
$i++;
//$nd1 = $time->getCttFrom();
$nd1 = $time['ctt_from'];
//$nd1 = $nd1->format('H:i');
$nd1 = date('H:i',strtotime($nd1));
//$nd2 = $time->getCttTo();
$nd2 = $time['ctt_to'];
//$nd2 = $nd2->format('H:i');
$nd2 = date('H:i',strtotime($nd2));
//$nd3 = $time->getCttDay();
$nd3 = $time['ctt_day'];
//$nd3 = $nd3->format('d.m.Y');
$nd3 = date('d.m.Y',strtotime($nd3));
if(!isset( $timesArr[$nd3][$nd1.' '.$nd2] )){$timesArr[$nd3][$nd1.' '.$nd2] = 0;}
$tmp = 0;
$checkCart = true;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role2 = $uid2->getURole();
if($role2 == '3' || $role2 == '4' || $role2 == '5')
{
$checkCart = false;
}
}
if($checkCart == true)
{
$repository = $this->getDoctrine()->getRepository(Cart::class);
//$cartItems = $repository->findBy(['ca_tid' => trim(checkUserInput($time->getId()))]);
$cartItems = $repository->findBy(['ca_tid' => trim(checkUserInput($time['id']))]);
foreach($cartItems as $ci)
{
$tmp = $tmp + $ci->getCaAmount();
}
}
$maxCustomer = 0;
//$maxCustomer = $time->getCttMaxonline();
$maxCustomer = $time['ctt_maxonline'];
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
//$tmp = $tmp + $time->getCttOnline();
$tmp = $tmp + $time['ctt_online'];
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
//$tmp = $tmp + $time->getCttOnline();
$tmp = $tmp + $time['ctt_online'];
if($role == 1 || $role == 2)
{
//Customer
}
else
{
//$tmp = $tmp + $time->getCttOfflineCustomer();
$tmp = $tmp + $time['ctt_offline_customer'];
//employee
//$maxCustomer = $maxCustomer + $time->getCttMaxoffline();
$maxCustomer = $maxCustomer + $time['ctt_maxoffline'];
}
}
$tmp = $maxCustomer - $tmp;
//if($time->getCttActive() == '0'){ continue; }
if($time['ctt_active'] == '0'){ continue; }
$timesArr[$nd3][$nd1.' '.$nd2] = $timesArr[$nd3][$nd1.' '.$nd2] + $tmp;
}
$d2 = date('d.m.Y', strtotime('+1 week', strtotime(checkUserInput($tmpTime))));
$d3 = date('d.m.Y', strtotime('+2 week', strtotime(checkUserInput($tmpTime))));
//$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND (ctt_day = :day OR ctt_day = :day2) GROUP BY ctt_number ORDER BY ctt_day ASC ,ctt_from ASC ";
$query = "SELECT * FROM ( SELECT * FROM course_times WHERE ctt_cid = :cid AND (ctt_day = :day OR ctt_day = :day2 OR ctt_day = :day3) ORDER BY ctt_day ASC, ctt_from ASC LIMIT 18446744073709551615 ) AS sub GROUP BY ctt_number; ";
$em2 = $this->getDoctrine()->getManager();
$times = $em2->getConnection()->executeQuery($query,['cid' => $id, 'day' => date("Y-m-d",strtotime(checkUserInput($tmpTime))), 'day2' => date("Y-m-d",strtotime($d2)) , 'day3' => date("Y-m-d",strtotime($d3)) ]);
$usedArr = array();
foreach($times as $time)
{
//$nd1 = $time->getCttFrom();
$nd1 = $time['ctt_from'];
//$nd1 = $nd1->format('H:i');
$nd1 = date("H:i",strtotime($nd1));
//$nd2 = $time->getCttTo();
$nd2 = $time['ctt_to'];
//$nd2 = $nd2->format('H:i');
$nd2 = date("H:i",strtotime($nd2));
//$nd3 = $time->getCttDay();
$nd3 = $time['ctt_day'];
//$nd3 = $nd3->format('d.m.Y');
$nd3 = date("d.m.Y",strtotime($nd3));
if(!isset( $usedArr[$nd3][$nd1.' '.$nd2] )){$usedArr[$nd3][$nd1.' '.$nd2] = 0;}
$found = false;
//already in Cart
$items = $session->get('cartitems');
for($j = 0; $j <= $items; $j++)
{
$tid = $session->get('cartTime'.$j);
//if(!empty($tid) && $tid == $time->getId() ){$found = true;}
if(!empty($tid) && $tid == $time['id'] ){$found = true;}
}
if($usedArr[$nd3][$nd1.' '.$nd2] == 0 )
{
$tmp = $timesArr[$nd3][$nd1.' '.$nd2];
$tmp2 = $timesArr[$nd3][$nd1.' '.$nd2];
if($tmp < 0 ){$tmp = 0;}
if($tmp2 < 0 ){$tmp2 = 0;}
switch($tmp)
{
case '0': $tmp = "Leider keine Plätze mehr verfügbar";break;
case '1': $tmp = $tmp. " Platz offen";break;
default: $tmp = $tmp." Plätze offen";break;
}
if($found == true)
{
$output .= '<label class="labl timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled><a class="btn-disabled">'.$nd1.' - '.$nd2.'</a>';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" disabled />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" disabled />';
$output .= '</label>';
}
//else if($time->getCttActive() == '0' && $tmp2 > 0)
else if($time['ctt_active'] == '0' && $tmp2 > 0)
{
continue;
}
//else if($time->getCttActive() == '0' || $found == true)
else if($time['ctt_active'] == '0' || $found == true)
{
$output .= '<label class="labl timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled><a class="btn-disabled">'.$nd1.' - '.$nd2.' </a> ';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" disabled />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" disabled />';
$output .= '</label>';
}
else
{
if($minAmount == '0')
{
if($tmp2 == '0')
{
$output .= '<label class="labl timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled><a class="btn-disabled">'.$nd1.' - '.$nd2.'</a> ';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" disabled />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" onclick="getAmount('.$time['id'].','.$time['ctt_cid'].')" disabled />';
$output .= '</label>';
}
else
{
$output .= '<label class="labl timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;"><a class="btn">'.$nd1.' - '.$nd2.'</a> ';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" onclick="getAmount('.$time['id'].','.$time['ctt_cid'].')" />';
$output .= '</label>';
}
}
else
{
if($tmp2 < $minAmount )
{
$output .= '<label class="labl btn-success timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;"><a class="btn-disabled">'.$nd1.' - '.$nd2.'</a> ';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" disabled />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" disabled />';
$output .= '</label>';
}
else
{
if($tmp2 == '0')
{
$output .= '<label class="labl timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;" disabled><a class="btn-disabled">'.$nd1.' - '.$nd2.'</a> ';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" disabled />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" onclick="getAmount('.$time['id'].','.$time['ctt_cid'].')" disabled />';
$output .= '</label>';
}
else
{
$output .= '<label class="labl timeTooltip" title="'.$tmp.'" for="articleTime'.$i.'" style="'.$defaultColor2.' margin: 0 0 1rem 0;"><a class="btn">'.$nd1.' - '.$nd2.'</a> ';
//$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time->getId().'" autocomplete="off" onclick="getAmount('.$time->getId().','.$time->getCttCid().')" />';
$output .= '<input class="btn-check" type="radio" name="articleTime" id="articleTime'.$i.'" value="'.$time['id'].'" autocomplete="off" onclick="getAmount('.$time['id'].','.$time['ctt_cid'].')" />';
$output .= '</label>';
}
}
}
}
$usedArr[$nd3][$nd1.' '.$nd2] = 1;
$i++;
}
}
if($output == "")
{
if($manualEntry == 1)
{
$output = '<p>Es sind leider keine Termine mehr Verfügbar. <br>Bitte wählen Sie einen anderen Termin.</p>';
}
else
{
$output = '<p>Es sind leider keine Termine mehr Verfügbar. <br>Bitte wählen Sie einen anderen Termin.</p>';
}
}
return new Response($output);
}
/**
* @Route("/addToCart/{id}/{date}/{time}/{amount}/{addPerson}/{sibling}" , name="addToCart", options={"expose"=true})
*/
public function addToCart($id, $date, $time, $amount, $addPerson , $sibling)
{
require_once("./include/function.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
if(!$session->get('cartitems')){$session->set('cartitems', 0);}
$cartitems = $session->get('cartitems');
$i = $cartitems + 1;
if($date == "" || $date == "undefined")
{
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$times = $repository->findOneBy(['id' => trim(checkUserInput($time)) ]);
if($times)
{
$date = $times->getCttDay()->format("d.m.Y");
}
else
{
debugText("addtocart error ");
return $this->render('checkout/error.html.twig', [ ]);
}
}
$session->set('cartitems', $i);
$session->set('cartAddPerson'.$i, $addPerson);
$session->set('cartTime'.$i, $time);
$session->set('cartCourse'.$i, $id);
$session->set('cartDate'.$i, $date);
$session->set('cartItemMode'.$i, '1');
$session->set('cartAmount'.$i, $amount);
$session->set('cartSibling'.$i, $sibling);
$placeid = $session->get('place');
$user = $this->get('security.token_storage')->getToken()->getUser();
$log = new Userlog();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.'){
$log->setUlUid(0);
}
else{
$log->setUlUid( $user->getId());
}
$log->setUlSessionid($session->getId());
$log->setUlBrowser($_SERVER['HTTP_USER_AGENT']);
$log->setUlIp($_SERVER['REMOTE_ADDR']);
$now = new \DateTime(date("Y-m-d H:i:s"));
$log->setUlNow($now);
if($placeid == NULL)
{
$log->setUlPlace(0);
}
else
{
$log->setUlPlace($placeid);
}
$log->setUlAction(5);
$log->setUlReferer($_SERVER['HTTP_REFERER']);
$log->setUlCurrentPage($_SERVER['REQUEST_URI']);
$em = $this->getDoctrine()->getManager();
$em->persist($log);
$em->flush();
return new Response("");
}
/**
* @Route("/addToCart2/{id}/{amount}" , name="addToCart2", options={"expose"=true})
*/
public function addToCart2($id, $amount )
{
require_once("./include/function.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
if(!$session->get('cartitems')){$session->set('cartitems', 0);}
$cartitems = $session->get('cartitems');
$i = $cartitems + 1;
$session->set('cartitems', $i);
$session->set('cartAmount'.$i, $amount);
$session->set('cartArticle'.$i, $id);
$session->set('cartItemMode'.$i, '2');
$placeid = $session->get('place');
$user = $this->get('security.token_storage')->getToken()->getUser();
$log = new Userlog();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.'){
$log->setUlUid(0);
}
else{
$log->setUlUid( $user->getId());
}
$log->setUlSessionid($session->getId());
$log->setUlBrowser($_SERVER['HTTP_USER_AGENT']);
$log->setUlIp($_SERVER['REMOTE_ADDR']);
$now = new \DateTime(date("Y-m-d H:i:s"));
$log->setUlNow($now);
if($placeid == NULL)
{
$log->setUlPlace(0);
}
else
{
$log->setUlPlace($placeid);
}
$log->setUlAction(5);
$log->setUlReferer($_SERVER['HTTP_REFERER']);
$log->setUlCurrentPage($_SERVER['REQUEST_URI']);
$em = $this->getDoctrine()->getManager();
$em->persist($log);
$em->flush();
return new Response("");
}
/**
* @Route("/cart/" , name="cart")
*/
public function cart()
{
require_once("./include/function.php");
require_once("./include/global.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$end = $session->get('cartitems');
$outputArr = array();
$outputArr2 = array();
$fullprice = 0;
$fullpriceTax = 0;
$taxArr = array();
$adminFee = 0;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid->getURole();
$uid = $uid->getId();
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findBy(['ca_uid' => $uid ]);
//first clear cart to prevent duplicates
foreach($cart as $ca)
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
else
{
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findBy(['ca_session' => $session->getId() ]);
$em = $this->getDoctrine()->getManager();
//first clear cart to prevent duplicates
foreach($cart as $ca)
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
$xPerson = array();
$anzPersons = 0;
for($i = 1; $i <= $end; $i++ )
{
$anzPersons = $anzPersons + $session->get('cartAmount'.$i);
}
$showStudioDiscount = false;
$showSiblingDiscount = false;
$siblingDiscountGranted = false;
$periodArr = array();
//change session items order from expensive --> cheap
$sTimesArr = array();
$sAmountArr = array();
$sCourseArr = array();
$sPersonArr = array();
$sDateArr = array();
$sModeArr = array();
$sSiblingArr = array();
$sDatesArr = array();
for($i = 1; $i <= $end; $i++ )
{
$sTimesArr[$i] = $session->get('cartTime'.$i);
$sAmountArr[$i] = $session->get('cartAmount'.$i);
$sCourseArr[$i] = $session->get('cartCourse'.$i);
$sPersonArr[$i] = $session->get('cartAddPerson'.$i);
$sDateArr[$i] = $session->get('cartDate'.$i);
$sModeArr[$i] = $session->get('cartItemMode'.$i);
$sSiblingArr[$i] = $session->get('cartSibling'.$i);
//first get how many dates (Einheiten) the course has
$courseId = $session->get('cartCourse'.$i);
if($courseId == NULL){continue;}
$date = $session->get('cartDate'.$i);
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => trim(checkUserInput($session->get("cartTime".$i))) ]);
if(!$courseTime){continue;}
$weekday = date("N",strtotime($courseTime->getCttDay()->format("Y-m-d")));
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$courseImage = $repository->findOneBy(['ci_cid' => trim(checkUserInput($courseId)) ]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => trim(checkUserInput($courseId)) ]);
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTime = $repository->findOneBy(['cat_number' => $courseTime->getCttNumber()]);
$bookingOption = $courseAddTime->getCatBookingOption();
$nd1 = $courseTime->getCttFrom();
$nd1 = $nd1->format('H:i');
$nd2 = $courseTime->getCttTo();
$nd2 = $nd2->format('H:i');
if($course->getCAppointmentSeries() == 1)
{
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT id, ctt_day, ctt_cid FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day AND ctt_number = :number ORDER BY ctt_day ASC ";
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1, "number" => $courseTime->getCttNumber()]);
$dates = 0;
//write new entries
foreach($resultSet as $res)
{
if($bookingOption == 1)
{
//check if same weekdays
$tmp = date("N",strtotime($res['ctt_day']));
if($tmp != $weekday ){ continue; }
}
$checkCart = true;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role2 = $uid2->getURole();
if($role2 == '3' || $role2 == '4' || $role2 == '5')
{
$checkCart = false;
}
}
//check if coursetime still available
$alreadyUsed = 0;
$maxCustomer = 0;
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$time = $repository->findOneBy(['id' => $res['id']]);
$maxCustomer = $time->getCttMaxonline();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
}
else
{
//employee
$maxCustomer = $maxCustomer + $time->getCttMaxoffline();
}
}
$dates++;
if($dates >= 1 && $bookingOption == 0){ break; }
}
}
else
{
$dates = 1;
}
$sDatesArr[$i] = $dates;
}
$sPriceArr = array();
foreach($sCourseArr as $k => $v)
{
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => trim(checkUserInput($v)) ]);
$dates = $sDatesArr[$k];
$sPriceArr[$k] = ($course->getCPrice() * $dates);
}
arsort($sPriceArr);
$i = 1;
foreach($sPriceArr as $k => $v)
{
$session->set('cartItemDates'.$i, $sDatesArr[$k]);
$session->set('cartAddPerson'.$i, $sPersonArr[$k]);
$session->set('cartAmount'.$i, $sAmountArr[$k]);
$session->set('cartCourse'.$i, $sCourseArr[$k]);
$session->set('cartDate'.$i, $sDateArr[$k]);
$session->set('cartItemMode'.$i, $sModeArr[$k]);
$session->set('cartSibling'.$i, $sSiblingArr[$k]);
$session->set('cartTime'.$i, $sTimesArr[$k]);
$i++;
/*
$sTimesArr = array();
$sAmountArr = array();
$sCourseArr = array();
$sPersonArr = array();
$sDateArr = array();
$sModeArr = array();
$sSiblingArr = array();
$sDatesArr = array();
*/
}
// start with all cart items
for($i = 1; $i <= $end; $i++ )
{
if($session->get('cartItemMode'.$i) == '1')
{
$dates = $session->get('cartItemDates'.$i);
$courseId = $session->get('cartCourse'.$i);
if($courseId == NULL){continue;}
$date = $session->get('cartDate'.$i);
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => trim(checkUserInput($session->get("cartTime".$i))) ]);
if(!$courseTime){continue;}
$weekday = date("N",strtotime($courseTime->getCttDay()->format("Y-m-d")));
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTime = $repository->findOneBy(['cat_number' => $courseTime->getCttNumber(), 'cat_cid' => $courseTime->getCttCid()]);
if(!$courseAddTime){continue;}
$bookingOption = $courseAddTime->getCatBookingOption();
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$courseImage = $repository->findOneBy(['ci_cid' => trim(checkUserInput($courseId)) ]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => trim(checkUserInput($courseId)) ]);
$period = $course->getCPeriod();
$amount = 0;
$amount = $session->get('cartAmount'.$i);
$siblingDiscountGranted = false;
for($j = 1; $j <= $amount; $j++)
{
$first = "";
$last = "";
$person = "";
//go through all Persons
// amount == persons
$x = 1;
$tmpperson = $session->get('cartAddPerson'.$i);
$tmpperson = explode("***",$tmpperson);
foreach($tmpperson as $tmppers)
{
if($x == $j)
{
$person2 = explode(";;;",$tmppers);
$z = 0;
foreach($person2 as $p)
{
if($z == 0){ $person = $p. ' '; }
if($z == 1){ $person .= $p; }
if($z == 2){ continue; }
$z++;
}
}
$x++;
}
if(!array_key_exists($person,$xPerson)){ $xPerson[$person] = 0; }
$outdays = "";
$seriesCounter = 0;
if($company == "KVO")
{
if($course->getCAppointmentSeries() == '1')
{
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day ORDER BY ctt_day ASC LIMIT " . $course->getCAppointmentSeriesDays();
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1]);
foreach($resultSet as $res)
{
//here remove from series if neccessary
$outdays .= date("d.m.Y",strtotime( $res['ctt_day'])) . "<br />";
$seriesCounter++;
}
}
else
{
$seriesCounter = 1;
}
}
else
{
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day AND ctt_number = :number ORDER BY ctt_day ASC ";
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1, "number" => $courseTime->getCttNumber()]);
$dates = 0;
foreach($resultSet as $res)
{
if($bookingOption == 1)
{
//check if same weekdays
$tmp = date("N",strtotime($res['ctt_day']));
if($tmp != $weekday ){ continue; }
}
//here remove from series if neccessary
$outdays .= date("d.m.Y",strtotime( $res['ctt_day'])) . "<br />";
$seriesCounter++;
$dates++;
if($dates >= 1 && $bookingOption == 0){ break; }
}
}
//discount
if($course->getCSiblingDiscount() == '1' && $session->get("cartSibling".$i) == '1' )
{
$discount = $siblingDiscountGlob;
}
else
{
//debugText("test");
$discount = $course->getCDiscount();
$price = ($course->getCPrice() * $dates);
if($discount != 0)
{
//check if other prices higher / lower
$x = 0;
$ord = false;
// if logged in check earlier orders first
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$curId = "0";
$curItem = "0";
$usr = $this->get('security.token_storage')->getToken()->getUser();
//if($usr == '28'){$usr = 60;}
//debugText($usr);
$repository = $this->getDoctrine()->getRepository(Orders::class);
$orders = $repository->findBy(['o_uid' => $usr->getId()]);
foreach($orders as $order)
{
if($order->getONow()->format("Y-m-d") < date("Y-01-01") ){ continue; }
$repository = $this->getDoctrine()->getRepository(OrderItems::class);
$orderItems = $repository->findBy(['oi_oid' => $order->getId()]);
foreach($orderItems as $orderItem)
{
if($orderItem->getOiCid() == 0){continue;}
if($curId == $order->getId() && $orderItem->getOiItem() == $curItem)
{
continue;
}
$personFound = false;
$repository = $this->getDoctrine()->getRepository(CourseAddPerson::class);
$courseAddPerson = $repository->findBy(['cap_oid' => $orderItem->getId()]);
foreach($courseAddPerson as $cap)
{
if( ($cap->getCapFirstname() .' '.$cap->getCapLastname()) == $person)
{
$personFound = true;
}
}
if($personFound == false){continue;}
if($orderItem->getOiCid() == '0'){ continue; }
if($orderItem->getOiPeriod() != $period){ continue; }
$repository = $this->getDoctrine()->getRepository(Course::class);
$c = $repository->findOneBy(['id' => $orderItem->getOiCid()]);
if(!$c){continue;}
if($c->getCDiscount() == '0'){continue;}
//$testtime = $c->getCActiveFrom()->format("Y");
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$c2 = $repository->findBy(['ctt_cid' => $orderItem->getOiCid()], ['ctt_day' => 'asc']);
foreach($c2 as $cc2)
{
$testtime = $cc2->getCttDay()->format("Y");
break;
}
//debugText($order->getOUid().': '.$testtime);
if($testtime != date('Y')){continue;}
if(!array_key_exists($c->getCPeriod(),$periodArr))
{
$periodArr[$c->getCPeriod()] = 0;
}
$periodArr[$c->getCPeriod()] = $periodArr[$c->getCPeriod()] + 1;
if($orderItem->getOiPrice() >= $price)
{
$x++;
}
$ord = true;
$curId = $order->getId();
$curItem = $orderItem->getOiItem();
}
}
}
// then check cart
$end2 = $session->get('cartitems');
for($i2 = 1; $i2 <= $end2; $i2++ )
{
$mode2 = $session->get('cartItemMode'.$i);
if($mode2 == '1')
{
//course
$repository = $this->getDoctrine()->getRepository(Course::class);
$tmp = $repository->findOneBy(['id' => $session->get('cartCourse'.$i)]);
$price2 = ($tmp->GetCPrice() * $dates);
if(!array_key_exists($tmp->getCPeriod(),$periodArr))
{
$periodArr[$tmp->getCPeriod()] = 0;
}
$periodArr[$tmp->getCPeriod()] = $periodArr[$tmp->getCPeriod()] + 1;
if($tmp->getCDiscount() == '0'){continue;}
}
else
{
continue;
}
if($price <= $price2)
{
if($ord != true)
{
if($x >= $i ){ continue;}
}
else
{
if($i2 > $i ){ continue;}
}
$x++; break;
}
}
$xPerson[$person] = $xPerson[$person] + $x;
// x == amount of orders with higher price
$repository = $this->getDoctrine()->getRepository(Costplace::class);
$tmp = $repository->findOneBy(['id' => $course->getCCostplace()]);
$place = $tmp->getCpPlace();
$y = 0;
$discountArr = array();
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findBy(['d_place' => $place],['d_amount' => 'ASC']);
foreach($discount as $d)
{
$discountArr[$y] = $d->getDAmount();
$y++;
}
if($periodArr[$course->getCPeriod()] > 1)
{
if($xPerson[$person] == 2) // lowest discount
{
$discount = $discountArr[0];
}
else if($xPerson[$person] == 3) // middle discount
{
$discount = $discountArr[1];
}
else if($xPerson[$person] >= 4) // highest discount
{
$discount = $discountArr[2];
}
else // no discount
{
$discount = 0;
}
}
else
{
$discount = 0;
}
}
}
// check sibling Discount here
if($course->getCSiblingDiscount() == '1' && $anzPersons >= 2)
{
$showSiblingDiscount = true;
}
if($course->getCSiblingDiscount() == '1' && $anzPersons >= 2 && $session->get('siblingDiscount') == '1' && $siblingDiscountGranted == false)
{
$discount = $siblingDiscountGlob;
$siblingDiscountGranted = true;
}
// check studio discount
if($course->getCStudioDiscount() == '1')
{
$showStudioDiscount = true;
}
if($course->getCStudioDiscount() == '1' && $session->get('studioDiscount') == '1')
{
$discount = $studioDiscountGlob;
}
//$fullprice = $fullprice + ( (($course->getCPrice() * $amount) * $seriesCounter) * (1 - ($discount / 100)) ) + $course->getCAdminFee();
$fullprice = $fullprice + ( (($course->getCPrice() * $seriesCounter)+ $course->getCAdminFee()) * (1 - ($discount / 100)) ) ;
if(empty($taxArr[$course->getCTax()])){ $taxArr[$course->getCTax()] = 0;}
//$taxArr[$course->getCTax()] = $taxArr[$course->getCTax()] + ( (( (number_format($course->getCPrice() * $amount,2,'.',',') * (($course->getCTax()/100)) ) * $seriesCounter) * ( 1 - ($discount / 100)) ) + number_format( ($course->getCAdminFee() * (($course->getCTax()/100)) ),2,'.',',') );
$taxArr[$course->getCTax()] = $taxArr[$course->getCTax()] + ( ((number_format($course->getCPrice(),2,'.',',') * (($course->getCTax()/100)) * $seriesCounter ) * ( 1 - ($discount / 100)) ) + number_format( ($course->getCAdminFee() * (($course->getCTax()/100)) ),2,'.',',') );
if($person != "")
{
$outputArr2[$person][$i]['course'] = $course->getCName();
$outputArr2[$person][$i]['coursePrice'] = ( (( $course->getCPrice() * $seriesCounter) + $course->getCAdminFee()) * ( 1 - ($discount / 100)) ) ;
$outputArr2[$person][$i]['courseTax'] = $course->getCTax();
$outputArr2[$person][$i]['itemMode'] = '1';
$outputArr2[$person][$i]['discount'] = $discount;
$outputArr2[$person][$i]['i'] = $i;
}
$outputArr[$i]['course'] = $course->getCName();
$outputArr[$i]['coursePrice'] = number_format( ( (($course->getCPrice() * $seriesCounter) + $course->getCAdminFee()) * ( 1 - ($discount / 100)) ) ,2,',','.'). " €";
$outputArr[$i]['courseTax'] = number_format($course->getCTax(),2,',','.'). " %";
$outputArr[$i]['itemMode'] = "1";
$outputArr[$i]['courseAmount'] = $session->get('cartAmount'.$i);
$adminFee = $adminFee + $course->getCAdminFee();
$nd1 = $courseTime->getCttFrom();
$nd1 = $nd1->format('H:i');
$nd2 = $courseTime->getCttTo();
$nd2 = $nd2->format('H:i');
$outputArr[$i]['time'] = $nd1 . " - " . $nd2;
if($person != "")
{
$outputArr2[$person][$i]['time'] = $nd1 . " - " . $nd2;
}
$outputArr[$i]['image'] = $courseImage->getCiPath();
if($outdays != "")
{
$outputArr[$i]['date'] = $outdays;
if($person != "")
{
$outputArr2[$person][$i]['date'] = $outdays;
}
}
else
{
$outputArr[$i]['date'] = $date;
if($person != "")
{
$outputArr2[$person][$i]['date'] = $date;
}
}
// end mode 1
}
}
else if($session->get('cartItemMode'.$i) == '2')
{
$articleId = $session->get('cartArticle'.$i);
$repository = $this->getDoctrine()->getRepository(Article::class);
$article = $repository->findOneBy(['id' => trim(checkUserInput($articleId)) ]);
$repository = $this->getDoctrine()->getRepository(ArticleImages::class);
$articleImage = $repository->findOneBy(['ai_aid' => trim(checkUserInput($articleId)) ]);
$discount = $article->getADiscount();
if($discount != 0)
{
$repository = $this->getDoctrine()->getRepository(Discount::class);
$discount = $repository->findOneBy(['id' => $discount ]);
$discount = $discount->getDAmount();
}
$outputArr[$i]['article'] = $article->getAName();
$outputArr[$i]['articlePrice'] = number_format(($article->getAPrice() * ( 1 - ($discount / 100))),2,',','.'). " €";
$outputArr[$i]['articleTax'] = number_format($article->getATax(),2,',','.'). " %";
$outputArr[$i]['itemMode'] = "2";
$outputArr[$i]['articleAmount'] = $session->get('cartAmount'.$i);
$outputArr[$i]['image'] = $articleImage->getAiPath();
if($company != 'KVO')
{
$first = $this->get('security.token_storage')->getToken()->getUser()->getUFirstname();
$last = $this->get('security.token_storage')->getToken()->getUser()->getULastname();
$person = $first . " " . $last;
$outputArr2[$i][$person]['article'] = $article->getAName();
$outputArr2[$i][$person]['articlePrice'] = number_format(($article->getAPrice() * ( 1 - ($discount / 100))),2,',','.'). " €";
$outputArr2[$i][$person]['articleTax'] = number_format($article->getATax(),2,',','.'). " %";
$outputArr2[$i][$person]['itemMode'] = "2";
$outputArr2[$i][$person]['articleAmount'] = $session->get('cartAmount'.$i);
}
$amount = 0;
$amount = $session->get('cartAmount'.$i);
$fullprice = $fullprice + ( ($article->getAPrice() * $amount) * ( 1 - ($discount / 100)) );
if(empty($taxArr[$article->getATax()])){ $taxArr[$article->getATax()] = 0;}
$taxArr[$article->getATax()] = $taxArr[$article->getATax()] + ( number_format( (($article->getAPrice() * $amount) * ( 1 - ($discount / 100))),2,'.',',') * (($article->getATax()/100)) );
}
$outputArr[$i]['i'] = $i;
}
$fullpriceTax = $fullprice;
foreach($taxArr as $k => $v)
{
$fullpriceTax = $fullpriceTax - $v;
$taxArr[$k] = number_format($v,2,',','.') . " €";
}
$anonBuy = 0;
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$anonBuy = 1;
}
/* add to cart database table // begin */
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid->getURole();
$uid = $uid->getId();
}
else
{
$uid = 0;
}
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$end = $session->get('cartitems');
for($i = 1; $i <= $end; $i++ )
{
if($session->get('cartItemMode'.$i) == '1')
{
$courseId = $session->get('cartCourse'.$i);
if($courseId == NULL){continue;}
$date = $session->get('cartDate'.$i);
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => trim(checkUserInput($session->get("cartTime".$i))) ]);
if(!$courseTime){continue;}
$weekday = date("N",strtotime($courseTime->getCttDay()->format("Y-m-d")));
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$courseImage = $repository->findOneBy(['ci_cid' => trim(checkUserInput($courseId)) ]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => trim(checkUserInput($courseId)) ]);
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTime = $repository->findOneBy(['cat_number' => $courseTime->getCttNumber()]);
$bookingOption = $courseAddTime->getCatBookingOption();
$amount = 0;
$amount = $session->get('cartAmount'.$i);
$nd1 = $courseTime->getCttFrom();
$nd1 = $nd1->format('H:i');
$nd2 = $courseTime->getCttTo();
$nd2 = $nd2->format('H:i');
if($course->getCAppointmentSeries() == 1)
{
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT id, ctt_day, ctt_cid FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day AND ctt_number = :number ORDER BY ctt_day ASC ";
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1, "number" => $courseTime->getCttNumber()]);
$dates = 0;
//write new entries
foreach($resultSet as $res)
{
if($bookingOption == 1)
{
//check if same weekdays
$tmp = date("N",strtotime($res['ctt_day']));
if($tmp != $weekday ){ continue; }
}
$checkCart = true;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role2 = $uid2->getURole();
if($role2 == '3' || $role2 == '4' || $role2 == '5')
{
$checkCart = false;
}
}
if($checkCart == true)
{
$cart = new Cart();
$cart->setCaUid($uid);
$cart->setCaCid($course->getId());
$cart->setCaTid($res['id']);
$cart->setCaAmount($session->get('cartAmount'.$i));
$now = new \DateTime(date("Y-m-d H:i:s"));
$cart->setCaNow($now);
$cart->setCaSession($session->getId());
$em = $this->getDoctrine()->getManager();
$em->persist($cart);
$em->flush();
}
//check if coursetime still available
$alreadyUsed = 0;
$maxCustomer = 0;
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$time = $repository->findOneBy(['id' => $res['id']]);
$maxCustomer = $time->getCttMaxonline();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
}
else
{
//employee
$maxCustomer = $maxCustomer + $time->getCttMaxoffline();
}
}
$dates++;
if($dates >= 1 && $bookingOption == 0){ break; }
}
}
else
{
$checkCart = true;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role2 = $uid2->getURole();
if($role2 == '3' || $role2 == '4' || $role2 == '5')
{
$checkCart = false;
}
}
if($checkCart == true)
{
$cart = new Cart();
$cart->setCaUid($uid);
$cart->setCaCid($course->getId());
$cart->setCaTid($session->get("cartTime".$i));
$cart->setCaAmount($session->get('cartAmount'.$i));
$now = new \DateTime(date("Y-m-d H:i:s"));
$cart->setCaNow($now);
$cart->setCaSession($session->getId());
$em->persist($cart);
$em->flush();
}
//check if coursetime still available
$alreadyUsed = 0;
$maxCustomer = 0;
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$time = $repository->findOneBy(['id' => $res['id']]);
$maxCustomer = $time->getCttMaxonline();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
}
else
{
//employee
$maxCustomer = $maxCustomer + $time->getCttMaxoffline();
}
}
}
}
}
/* add to cart database table // end */
//check if course was already bought. send warning if so.
$warning = "";
$warningCount = 0;
$z = 0;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
$uid = $uid2->getId();
if($role == 1 || $role == 2)
{
$end = $session->get('cartitems');
for($i = 1; $i <= $end; $i++ )
{
if($session->get('cartItemMode'.$i) == '1')
{
$courseId = $session->get('cartCourse'.$i);
if($courseId == NULL){continue;}
$date = $session->get('cartDate'.$i);
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => trim(checkUserInput($session->get("cartTime".$i))) ]);
$weekday = date("N",strtotime($courseTime->getCttDay()->format("Y-m-d")));
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTime = $repository->findOneBy(['cat_number' => $courseTime->getCttNumber(), 'cat_cid' => $courseTime->getCttCid()]);
$bookingOption = $courseAddTime->getCatBookingOption();
$repository = $this->getDoctrine()->getRepository(CourseImages::class);
$courseImage = $repository->findOneBy(['ci_cid' => trim(checkUserInput($courseId)) ]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => trim(checkUserInput($courseId)) ]);
$amount = 0;
$amount = $session->get('cartAmount'.$i);
$siblingDiscountGranted = false;
for($j = 1; $j <= $amount; $j++)
{
$first = "";
$last = "";
$person = "";
//go through all Persons
// amount == persons
$x = 1;
$tmpperson = $session->get('cartAddPerson'.$i);
$tmpperson = explode("***",$tmpperson);
foreach($tmpperson as $tmppers)
{
if($x == $j)
{
$person2 = explode(";;;",$tmppers);
$z = 0;
foreach($person2 as $p)
{
if($z == 0){ $person = $p. ' '; }
if($z == 1){ $person .= $p; }
if($z == 2){ continue; }
$z++;
}
}
$x++;
}
$repository = $this->getDoctrine()->getRepository(Orders::class);
$orders = $repository->findBy(['o_uid' => trim($uid) ]);
foreach($orders as $order )
{
$repository = $this->getDoctrine()->getRepository(OrderItems::class);
$orderItems = $repository->findBy(['oi_oid' => trim($order->getId()) ]);
foreach($orderItems as $orderItem )
{
//check if exact course and time was already bought
if($orderItem->getOiTid() == $courseTime->getId() && $orderItem->getOiCid() == $course->getId())
{
//last check the names
$repository = $this->getDoctrine()->getRepository(CourseAddPerson::class);
$addPersons = $repository->findBy(['cap_oid' => trim($orderItem->getId()) ]);
foreach($addPersons as $addPerson )
{
if(($addPerson->getCapFirstname()." ". $addPerson->getCapLastname()) == $person)
{
//warning
$warningCount++;
if($warningCount == 1)
{
$warning = "Achtung! Sie haben bereits für folgende Personen diesen Kurs zur gleichen Zeit gebucht.";
$warning .= "<table>";
$warning .= "<tr>";
$warning .= "<th>Kurs</th>";
$warning .= "<th>Kurszeit</th>";
$warning .= "<th>Name</th>";
$warning .= "</tr>";
}
$warning .= "<tr>";
$warning .= "<td>".$course->getCName()."</td>";
$warning .= "<td>".$courseTime->getCttFrom()->format('H:i') ." - ". $courseTime->getCttTo()->format('H:i') ."</td>";
$warning .= "<td>".$person."</td>";
$warning .= "</tr>";
}
}
}
}
}
}
}
}
}
}
if($warning != "" ){$warning .= "</table>";}
$sib = $session->get('siblingDiscount');
$studio = $session->get('studioDiscount');
$fullprice = number_format($fullprice, 2, ',','.')." €";
$fullpriceTax = number_format($fullpriceTax, 2, ',','.')." €";
return $this->render('course/cart.html.twig',[ 'warning' => $warning,'data' => $outputArr,'sib' => $sib ,'showSibling' => $showSiblingDiscount,'studio' => $studio,'showStudio' => $showStudioDiscount,'data2' => $outputArr2,"fullprice" => $fullprice , 'taxes' => $taxArr, 'fullpricetax' => $fullpriceTax, 'anonBuy' => $anonBuy, 'adminFee' => $adminFee] );
}
/**
* @Route("/loadCartSiblingDiscount/{sib}" , name="loadCartSiblingDiscount")
*/
public function loadCartSiblingDiscount($sib)
{
require_once("./include/function.php");
require_once("./include/global.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$session->set('siblingDiscount',$sib);
$response = $this->redirect($url ."cart");
return $response;
}
/**
* @Route("/loadStudioDiscount/{sib}" , name="loadStudioDiscount")
*/
public function loadStudioDiscount($sib)
{
require_once("./include/function.php");
require_once("./include/global.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$session->set('studioDiscount',$sib);
$response = $this->redirect($url ."cart");
return $response;
}
/**
* @Route("/dropArticle/{id}" , name="dropArticle")
*/
public function dropArticle($id)
{
require_once("./include/function.php");
require_once("./include/global.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$outputArr = array();
$end = $session->get('cartitems');
$tmp1Arr = array();
$tmp2Arr = array();
$tmp3Arr = array();
$tmp4Arr = array();
$tmp5Arr = array();
$tmp6Arr = array();
$tmp7Arr = array();
$tmp8Arr = array();
$j = 0;
for($i = 1; $i <= $end; $i++ )
{
if($i == $id){continue;}
$j++;
$tmp1Arr[$j] = $session->get('cartTime'.$i);
$tmp2Arr[$j] = $session->get('cartCourse'.$i);
$tmp3Arr[$j] = $session->get('cartDate'.$i);
$tmp4Arr[$j] = $session->get('cartAmount'.$i);
$tmp5Arr[$j] = $session->get('cartArticle'.$i);
$tmp6Arr[$j] = $session->get('cartItemMode'.$i);
$tmp7Arr[$j] = $session->get('cartAddPerson'.$i);
$tmp8Arr[$j] = $session->get('cartSibling'.$i);
}
$anz = $session->get('cartitems');
for($i = 1; $i <= $end; $i++ )
{
$session->remove('cartTime'.$i);
$session->remove('cartCourse'.$i);
$session->remove('cartDate'.$i);
$session->remove('cartAmount'.$i);
$session->remove('cartArticle'.$i);
$session->remove('cartItemMode'.$i);
$session->remove('cartAddPerson'.$i);
$session->remove('cartSibling'.$i);
}
$anz = $anz - 1;
$session->set('cartitems', $anz);
for($i = 1; $i <= $j; $i++ )
{
$session->set('cartTime'.$i, $tmp1Arr[$i]);
$session->set('cartCourse'.$i, $tmp2Arr[$i]);
$session->set('cartDate'.$i, $tmp3Arr[$i]);
$session->set('cartAmount'.$i, $tmp4Arr[$i]);
$session->set('cartArticle'.$i, $tmp5Arr[$i]);
$session->set('cartItemMode'.$i, $tmp6Arr[$i]);
$session->set('cartAddPerson'.$i, $tmp7Arr[$i]);
$session->set('cartSibling'.$i, $tmp8Arr[$i]);
}
$uname = $this->get('security.token_storage')->getToken()->getUser();
$uid = 0;
if(is_object($uname))
{
if($uname->getId() != 0 )
{
$repository = $this->getDoctrine()->getRepository(User::class);
$user = $repository->findOneBy(['id' => $uname->getId()]);
$uid = $user->getId();
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findBy(['ca_uid' => $uid ]);
foreach($cart as $ca)
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
}
else
{
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findBy(['ca_session' => $session->getId() ]);
foreach($cart as $ca)
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
$placeid = $session->get('place');
$log = new Userlog();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.'){
$log->setUlUid(0);
}
else{
$log->setUlUid( $user->getId());
}
$log->setUlSessionid($session->getId());
$log->setUlBrowser($_SERVER['HTTP_USER_AGENT']);
$log->setUlIp($_SERVER['REMOTE_ADDR']);
$now = new \DateTime(date("Y-m-d H:i:s"));
$log->setUlNow($now);
if($placeid == NULL)
{
$log->setUlPlace(0);
}
else
{
$log->setUlPlace($placeid);
}
$log->setUlAction(6);
$log->setUlReferer($_SERVER['HTTP_REFERER']);
$log->setUlCurrentPage($_SERVER['REQUEST_URI']);
$em = $this->getDoctrine()->getManager();
$em->persist($log);
$em->flush();
$response = $this->redirect($url ."cart");
return $response;
}
/**
* @Route("/dropArticle2/{id}/{person}" , name="dropArticle2")
*/
public function dropArticle2($id,$person)
{
require_once("./include/function.php");
require_once("./include/global.php");
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$outputArr = array();
$end = $session->get('cartitems');
$tmp1Arr = array();
$tmp2Arr = array();
$tmp3Arr = array();
$tmp4Arr = array();
$tmp5Arr = array();
$tmp6Arr = array();
$tmp7Arr = array();
$tmp8Arr = array();
$j = 0;
if($person != "" && $session->get('cartItemMode'.$id) == '1' && $session->get('cartAmount'.$id) >= 2)
{
$amt = $session->get('cartAmount'.$id);
$session->set('cartAmount'.$id, ($amt - 1 ));
$personItem = $session->get('cartAddPerson'.$id);
// *** = each person
// ;;; = person data
$personItemArr = explode("***",$personItem);
$newPersonItem = "";
foreach($personItemArr as $pia)
{
$personDataArr = explode(";;;",$pia);
$pdaTmp = "";
$x = 0;
foreach($personDataArr as $pda)
{
if($x == 2){ continue; }
$pdaTmp = $pda;
$x++;
}
if($pdaTmp == $person){ continue; }
else
{
$newPersonItem .= $pia.'***';
}
}
$session->set('cartAddPerson'.$id,$newPersonItem);
}
else
{
for($i = 1; $i <= $end; $i++ )
{
if($i == $id){continue;}
$j++;
$tmp1Arr[$j] = $session->get('cartTime'.$i);
$tmp2Arr[$j] = $session->get('cartCourse'.$i);
$tmp3Arr[$j] = $session->get('cartDate'.$i);
$tmp4Arr[$j] = $session->get('cartAmount'.$i);
$tmp5Arr[$j] = $session->get('cartArticle'.$i);
$tmp6Arr[$j] = $session->get('cartItemMode'.$i);
$tmp7Arr[$j] = $session->get('cartAddPerson'.$i);
$tmp8Arr[$j] = $session->get('cartSibling'.$i);
}
$anz = $session->get('cartitems');
for($i = 1; $i <= $end; $i++ )
{
$session->remove('cartTime'.$i);
$session->remove('cartCourse'.$i);
$session->remove('cartDate'.$i);
$session->remove('cartAmount'.$i);
$session->remove('cartArticle'.$i);
$session->remove('cartItemMode'.$i);
$session->remove('cartAddPerson'.$i);
$session->remove('cartSibling'.$i);
}
$anz = $anz - 1;
$session->set('cartitems', $anz);
for($i = 1; $i <= $j; $i++ )
{
$session->set('cartTime'.$i, $tmp1Arr[$i]);
$session->set('cartCourse'.$i, $tmp2Arr[$i]);
$session->set('cartDate'.$i, $tmp3Arr[$i]);
$session->set('cartAmount'.$i, $tmp4Arr[$i]);
$session->set('cartArticle'.$i, $tmp5Arr[$i]);
$session->set('cartItemMode'.$i, $tmp6Arr[$i]);
$session->set('cartAddPerson'.$i, $tmp7Arr[$i]);
$session->set('cartSibling'.$i, $tmp8Arr[$i]);
}
}
$uname = $this->get('security.token_storage')->getToken()->getUser();
$uid = 0;
if(is_object($uname))
{
if($uname->getId() != 0 )
{
$repository = $this->getDoctrine()->getRepository(User::class);
$user = $repository->findOneBy(['id' => $uname->getId()]);
$uid = $user->getId();
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findBy(['ca_uid' => $uid ]);
foreach($cart as $ca)
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
}
else
{
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository(Cart::class);
$cart = $repository->findBy(['ca_session' => $session->getId() ]);
foreach($cart as $ca)
{
if($ca && $ca != null && is_null($ca) == false )
{
$em->remove($ca);
$em->flush();
}
}
}
$placeid = $session->get('place');
$user = $this->get('security.token_storage')->getToken()->getUser();
$log = new Userlog();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.'){
$log->setUlUid(0);
}
else{
$log->setUlUid( $user->getId());
}
$log->setUlSessionid($session->getId());
$log->setUlBrowser($_SERVER['HTTP_USER_AGENT']);
$log->setUlIp($_SERVER['REMOTE_ADDR']);
$now = new \DateTime(date("Y-m-d H:i:s"));
$log->setUlNow($now);
if($placeid == NULL)
{
$log->setUlPlace(0);
}
else
{
$log->setUlPlace($placeid);
}
$log->setUlAction(6);
$log->setUlReferer($_SERVER['HTTP_REFERER']);
$log->setUlCurrentPage($_SERVER['REQUEST_URI']);
$em = $this->getDoctrine()->getManager();
$em->persist($log);
$em->flush();
$response = $this->redirect($url ."cart");
return $response;
}
/**
* @Route("/checkDuplicateCourse" , name="checkDuplicateCourse", options={"expose"=true})
*/
public function checkDuplicateCourse()
{
require_once("./include/function.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
$name = checkUserInput($_POST['name']);
$starttime = checkUserInput($_POST['starttime']);
$endtime = checkUserInput($_POST['endtime']);
$activeFrom = checkUserInput($_POST['activefrom']);
$activeUntill = checkUserInput($_POST['activeuntill']);
$breakbefore = checkUserInput($_POST['breakbefore']);
$breakafter = checkUserInput($_POST['breakafter']);
$duration = checkUserInput($_POST['duration']);
$costplace = checkUserInput($_POST['costplace']);
$mon = checkUserInput($_POST['mon']);
$tue = checkUserInput($_POST['tue']);
$wed = checkUserInput($_POST['wed']);
$thu = checkUserInput($_POST['thu']);
$fri = checkUserInput($_POST['fri']);
$sat = checkUserInput($_POST['sat']);
$sun = checkUserInput($_POST['sun']);
$exists = false;
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findBy(['c_name' => trim(checkUserInput($name)), 'c_active' => 1, 'c_costplace' => $costplace ]);
if($course)
{
//name found
//loop every course and check if same timeslot found, if yes forbid
foreach($course as $c)
{
$start = new \DateTime(date('H:i:s', strtotime($starttime)));
$end = new \DateTime(date('H:i:s', strtotime($endtime)));
$begin = new \DateTime(date("Y-m-d",strtotime($activeFrom)));
$endDate = new \DateTime(date('Y-m-d',strtotime($activeUntill)));
$interval = \DateInterval::createFromDateString('1 day');
$period = new \DatePeriod($begin, $interval, $endDate);
//each day from start to activeUntill
foreach ($period as $dt)
{
$day1 = $dt->format("Y-m-d \n");
$day = new \DateTime(date("Y-m-d", strtotime($day1)));
if($this->checkHoliday($dt->format("d.m.Y")) != false ){ continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 0 && $sun == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 1 && $mon == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 2 && $tue == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 3 && $wed == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 4 && $thu == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 5 && $fri == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 6 && $sat == 0) {continue; }
$d1 = new \DateTime(date("H:i:s",strtotime($starttime)));
while($d1 < $end)
{
$d1orig = new \DateTime(date('H:i:s',strtotime($d1->format('H:i:s'))));
$d1->add(new \DateInterval('PT' . $duration . 'M'));
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findBy([
'ctt_cid' => trim($c->getId()),
'ctt_day' => $day,
'ctt_from' => $d1orig,
'ctt_to' => $d1,
]);
if($courseTime)
{
$exists = true;
}
$d1->add(new \DateInterval('PT' . $breakbefore . 'M'));
$d1->add(new \DateInterval('PT' . $breakafter . 'M'));
}
}
}
if($exists == true)
{
return new Response("nok");
}
else
{
return new Response("ok");
}
}
else
{
// OK
return new Response("ok");
}
}
/**
* @Route("/getCourseAmount" , name="getCourseAmount", options={"expose"=true})
*/
public function getCourseAmount()
{
require_once("./include/function.php");
$id = $_POST['id'];
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => $id]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $courseTime->getCttCid()]);
$maxCustomer = 0;
$usedSlots = 0;
$maxCustomer = $courseTime->getCttMaxonline();
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
//Guest
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
}
else
{
//employee
$maxCustomer = $maxCustomer + $courseTime->getCttMaxoffline();
}
}
//$usedSlots = $this->getUsedSlots($id);
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$usedSlots = $courseTime->getCttOnline() ;
}
else
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role = $uid2->getURole();
if($role == 1 || $role == 2)
{
//Customer
$usedSlots = $courseTime->getCttOnline();
}
else
{
//employee
$usedSlots = $courseTime->getCttOnline() + $courseTime->getCttOfflineCustomer();
}
}
$checkCart = true;
if($this->get('security.token_storage')->getToken()->getUser() != 'anon.')
{
$uid2 = $this->get('security.token_storage')->getToken()->getUser();
$role2 = $uid2->getURole();
if($role2 == '3' || $role2 == '4' || $role2 == '5')
{
$checkCart = false;
}
}
if($checkCart == true)
{
$repository = $this->getDoctrine()->getRepository(Cart::class);
$ca = $repository->findBy(['ca_cid' => $courseTime->getCttCid(), 'ca_tid' => $id]);
foreach($ca as $c)
{
$usedSlots = $usedSlots + $c->getCaAmount();
}
}
$diff = $maxCustomer - $usedSlots;
return new Response($diff);
}
/**
* @Route("/getSeriesDays" , name="getSeriesDays", options={"expose"=true})
*/
public function getSeriesDays()
{
require_once("./include/function.php");
require_once("./include/global.php");
$id = $_POST['id'];
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => $id]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $courseTime->getCttCid()]);
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day ORDER BY ctt_day ASC LIMIT " . $course->getCAppointmentSeriesDays();
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1]);
$output = "Termine:<br>";
$i = 0;
foreach($resultSet as $res)
{
$button = "";
$button .= '<svg xmlns="http://www.w3.org/2000/svg" width="'.$defaultIconWidth.'" height="'.$defaultIconHeight.'" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16">';
$button .= '<path fill-rule="evenodd" d="M13.854 2.146a.5.5 0 0 1 0 .708l-11 11a.5.5 0 0 1-.708-.708l11-11a.5.5 0 0 1 .708 0Z"/>';
$button .= '<path fill-rule="evenodd" d="M2.146 2.146a.5.5 0 0 0 0 .708l11 11a.5.5 0 0 0 .708-.708l-11-11a.5.5 0 0 0-.708 0Z"/>';
$button .= '</svg>';
$i++;
$output .= $i. ". ". date("d.m.Y",strtotime($res['ctt_day'])) . " ". date("H:i",strtotime($res['ctt_from'])). " - ". date("H:i",strtotime($res['ctt_to'])). "<br>";
}
return new Response($output);
}
/**
* @Route("/getSeriesWeekDays" , name="getSeriesWeekDays", options={"expose"=true})
*/
public function getSeriesWeekDays()
{
require_once("./include/function.php");
require_once("./include/global.php");
$id = $_POST['id'];
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => $id]);
$weekday = date("N",strtotime($courseTime->getCttDay()->format("Y-m-d")));
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTime = $repository->findOneBy(['cat_number' => $courseTime->getCttNumber(), 'cat_cid' => $courseTime->getCttCid()]);
if(!$courseAddTime)
{
return $this->render('checkout/error.html.twig', [ ]);
}
$bookingOption = $courseAddTime->getCatBookingOption();
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $courseTime->getCttCid()]);
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT * FROM course_times WHERE ctt_active = 1 AND ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day AND ctt_number = :number ORDER BY ctt_day ASC";
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1, "number" => $courseTime->getCttNumber()]);
$output = "Termine:<br>";
$i = 0;
$dates = 0;
foreach($resultSet as $res)
{
if($bookingOption == 1)
{
//check if same weekdays
$tmp = date("N",strtotime($res['ctt_day']));
if($tmp != $weekday ){ continue; }
}
$button = "";
$button .= '<svg xmlns="http://www.w3.org/2000/svg" width="'.$defaultIconWidth.'" height="'.$defaultIconHeight.'" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16">';
$button .= '<path fill-rule="evenodd" d="M13.854 2.146a.5.5 0 0 1 0 .708l-11 11a.5.5 0 0 1-.708-.708l11-11a.5.5 0 0 1 .708 0Z"/>';
$button .= '<path fill-rule="evenodd" d="M2.146 2.146a.5.5 0 0 0 0 .708l11 11a.5.5 0 0 0 .708-.708l-11-11a.5.5 0 0 0-.708 0Z"/>';
$button .= '</svg>';
$i++;
$output .= $i. ". ". date("d.m.Y",strtotime($res['ctt_day'])) . " ". date("H:i",strtotime($res['ctt_from'])). " - ". date("H:i",strtotime($res['ctt_to'])). "<br>";
$dates++;
if($dates >= 1 && $bookingOption == 0){ break; }
}
return new Response($output);
}
/**
* @Route("/getSeriesDaysPrice" , name="getSeriesDaysPrice", options={"expose"=true})
*/
public function getSeriesDaysPrice()
{
require_once("./include/function.php");
require_once("./include/global.php");
$id = $_POST['id'];
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => $id]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $courseTime->getCttCid()]);
$coursePrice = $course->getCPrice();
$adminFee = $course->getCAdminFee();
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day ORDER BY ctt_day ASC LIMIT " . $course->getCAppointmentSeriesDays();
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1]);
if($_POST['sibling'] == '1')
{
$discount = $siblingDiscountGlob;
}
else
{
$discount = $_POST['discount'];
}
$output = "Termine:<br>";
$i = 0;
$outprice = 0;
foreach($resultSet as $res)
{
$i++;
$outprice = $outprice + $coursePrice;
}
$outprice = $outprice + $adminFee;
$outprice = $outprice * (1 - ($discount / 100));
$outprice = number_format($outprice, 2, ',','.'). " €";
return new Response($outprice);
}
/**
* @Route("/getSeriesWeekDaysPrice" , name="getSeriesWeekDaysPrice", options={"expose"=true})
*/
public function getSeriesWeekDaysPrice()
{
require_once("./include/function.php");
require_once("./include/global.php");
$id = $_POST['id'];
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$courseTime = $repository->findOneBy(['id' => $id]);
$weekday = date("N",strtotime($courseTime->getCttDay()->format("Y-m-d")));
$repository = $this->getDoctrine()->getRepository(CourseAdditionalTimes::class);
$courseAddTime = $repository->findOneBy(['cat_number' => $courseTime->getCttNumber(), 'cat_cid' => $courseTime->getCttCid()]);
$bookingOption = $courseAddTime->getCatBookingOption();
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $courseTime->getCttCid()]);
$coursePrice = $course->getCPrice();
$adminFee = $course->getCAdminFee();
$t1 = $courseTime->getCttDay();
$t1 = $t1->format('Y-m-d');
$t2 = $courseTime->getCttFrom();
$t2 = $t2->format('H:i:s');
$query = "SELECT * FROM course_times WHERE ctt_cid = :cid AND ctt_active = 1 AND ctt_from = :from AND ctt_day >= :day AND ctt_number = :number ORDER BY ctt_day ASC";
$em2 = $this->getDoctrine()->getManager();
$resultSet = $em2->getConnection()->executeQuery($query,['cid' => $course->getId(), 'from' => $t2 , "day" => $t1, "number" => $courseTime->getCttNumber()]);
if($_POST['sibling'] == '1')
{
$discount = $siblingDiscountGlob;
}
else
{
$discount = $_POST['discount'];
}
$output = "Termine:<br>";
$i = 0;
$outprice = 0;
$dates = 0;
foreach($resultSet as $res)
{
if($bookingOption == 1)
{
//check if same weekdays
$tmp = date("N",strtotime($res['ctt_day']));
if($tmp != $weekday ){ continue; }
}
$i++;
$outprice = $outprice + $coursePrice;
$dates++;
if($dates >= 1 && $bookingOption == 0){ break; }
}
$outprice = $outprice + $adminFee;
$outprice = $outprice * (1 - ($discount / 100));
$outprice = number_format($outprice, 2, ',','.'). " €";
return new Response($outprice);
}
/**
* @Route("/calcDaysBackend" , name="calcDaysBackend", options={"expose"=true})
*/
public function calcDaysBackend()
{
require_once("./include/function.php");
$mon = $_POST['mon'];
$tue = $_POST['tue'];
$wed = $_POST['wed'];
$thu = $_POST['thu'];
$fri = $_POST['fri'];
$sat = $_POST['sat'];
$sun = $_POST['sun'];
$from = $_POST['from'] ;
$to = date("Y-m-d",strtotime('+1 day',strtotime($_POST['to'])));
$begin = new \DateTime(date("Y-m-d",strtotime($from)));
$endDate = new \DateTime(date('Y-m-d',strtotime($to)));
$interval = \DateInterval::createFromDateString('1 day');
$period = new \DatePeriod($begin, $interval, $endDate);
$i = 0;
//each day from start to activeUntill
foreach ($period as $dt)
{
$day1 = $dt->format("Y-m-d \n");
$day = new \DateTime(date("Y-m-d", strtotime($day1)));
if($this->checkHoliday($dt->format("d.m.Y")) != false ){ continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 0 && $sun == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 1 && $mon == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 2 && $tue == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 3 && $wed == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 4 && $thu == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 5 && $fri == 0) {continue; }
if(date('w', strtotime($dt->format("d.m.Y"))) == 6 && $sat == 0) {continue; }
$i++;
}
return new Response($i);
}
/**
* @Route("/backendTrainerPayment/{id}", name="backendTrainerPayment")
*/
public function backendTrainerPayment($id)
{
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
require_once("./include/global.php");
$repository = $this->getDoctrine()->getRepository(User::class);
$trainer = $repository->findBy(['u_role' => 2]);
$repository = $this->getDoctrine()->getRepository(TrainerPayment::class);
$trainerPayment = $repository->findBy(['tp_cid' => $id]);
$repository = $this->getDoctrine()->getRepository(Course::class);
$course = $repository->findOneBy(['id' => $id]);
return $this->render('backend/course/trainer_payment.html.twig', ['id' => $id,'course' => $course, 'trainer' => $trainer, 'payment' => $trainerPayment ]);
}
/**
* @Route("/backendTrainerMoneySave/", name="backendTrainerMoneySave")
*/
public function backendTrainerMoneySave(Request $request)
{
include("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
$em = $this->getDoctrine()->getManager();
$id = $request->get('id');
$repository = $this->getDoctrine()->getRepository(TrainerPayment::class);
$trainerPayment = $repository->findBy(['tp_cid' => $id]);
foreach($trainerPayment as $tp)
{
$em->remove($tp);
$em->flush();
}
$repository = $this->getDoctrine()->getRepository(User::class);
$trainer = $repository->findBy(['u_role' => 2]);
foreach($trainer as $train)
{
$name = "money_". $train->getId();
$pay = $request->get($name);
if(!$pay){$pay = 0;}
$tp = new TrainerPayment();
$tp->setTpCid($id);
$tp->setTpPayment($pay);
$tp->setTpUid($train->getId());
$em->persist($tp);
$em->flush();
}
$response = $this->forward('App\Controller\CourseController::backendCourse', []);
return $response;
}
/**
* @Route("/loadResource", name="loadResource", options={"expose"=true})
*/
public function loadResource(Request $request)
{
include("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
$room = $_POST['room'];
$output = "";
$repository = $this->getDoctrine()->getRepository(Resource::class);
$resource = $repository->findAll();
foreach($resource as $res)
{
if($res->getId() == $room)
{
$output .= '<option value="'.$res->getId().'" selected>'.$res->getRName().'</option>';
}
else
{
$output .= '<option value="'.$res->getId().'">'.$res->getRName().'</option>';
}
}
return new Response($output);
}
/**
* @Route("/getTrainer", name="getTrainer", options={"expose"=true})
*/
public function getTrainer(Request $request)
{
include("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->forward('App\Controller\CourseController::homepage', []);
return $response;
}
$times = $_POST['times'];
$leader = $_POST['leader'];
$output = "";
$output .= '<select id="courseleader'.$times.'" name="courseleader'.$times.'" class="form-control">';
if($leader == "" || $leader == "0")
{
$output .= '<option value="0" selected>-</option>';
}
else{
$output .= '<option value="0">-</option>';
}
$repository = $this->getDoctrine()->getRepository(User::class);
$user = $repository->findby(['u_role' => '2']);
foreach($user as $u)
{
if($leader == $u->getId() )
{
$output .= '<option value="'.$u->getId().'" selected>'.$u->getULastname().', '.$u->getUFirstname().'</option>';
}
else{
$output .= '<option value="'.$u->getId().'">'.$u->getULastname().', '.$u->getUFirstname().'</option>';
}
}
$output .= '</select>';
return new Response($output);
}
/**
* @Route("/saveBackendCourseSearch/", name="saveBackendCourseSearch", options={"expose"=true})
*/
public function saveBackendCourseSearch(AuthenticationUtils $authenticationUtils): Response
{
require_once("./include/function.php");
require_once("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->redirect($url ."login");
return $response;
}
else
{
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$session->set('backendCourseSearch',$_POST['search']);
$session->set('backendCoursePeriod',$_POST['period']);
$output = "";
return new Response($output);
}
}
/**
* @Route("/loadBackendCourseSearch/", name="loadBackendCourseSearch", options={"expose"=true})
*/
public function loadBackendCourseSearch(AuthenticationUtils $authenticationUtils): Response
{
require_once("./include/function.php");
require_once("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->redirect($url ."login");
return $response;
}
else
{
$session = $this->requestStack->getSession(); //$session = $this->get('session');
$output = "";
$output .= $session->get('backendCourseSearch');
$output .= '###'.$session->get('backendCoursePeriod');
return new Response($output);
}
}
/**
* @Route("/checkCoursenumber/", name="checkCoursenumber", options={"expose"=true})
*/
public function checkCoursenumber(AuthenticationUtils $authenticationUtils): Response
{
require_once("./include/function.php");
require_once("./include/global.php");
if($this->get('security.token_storage')->getToken()->getUser() == 'anon.')
{
$response = $this->redirect($url ."login");
return $response;
}
else
{
$courseid = $_POST['courseid'];
$number = $_POST['number'];
$repository = $this->getDoctrine()->getRepository(CourseTimes::class);
$ctt = $repository->findOneBy(['ctt_number' => $number]);
if($ctt)
{
if($courseid == '0')
{
// same number as existing course
$output = "nok";
}
else
{
if($courseid == $ctt->getCttCid())
{
$output = "ok";
}
else
{
$output = "nok";
}
}
}
else
{
$output = "ok";
}
return new Response($output);
}
}
}