<?php
namespace EADPlataforma\Controller\Website;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use EADPlataforma\Entity\Enrollment;
use EADPlataforma\Entity\ExamUser;
use EADPlataforma\Entity\ProductOffer;
use EADPlataforma\Enum\EnrollmentEnum;
use EADPlataforma\Enum\ProductEnum;
/**
* @Route(
* schemes = {"http|https"}
* )
* @Cache(
* maxage = "0",
* smaxage = "0",
* expires = "now",
* public = false
* )
*/
class EnrollmentController extends AbstractWebsiteController {
/**
* @Route(
* path = "/enrollments/",
* name = "enrollentList",
* methods = {"GET"}
* )
*/
public function getEnrollents(Request $request) {
$this->checkUserSession($request);
$enrollmentRepository = $this->em->getRepository(Enrollment::class);
$enrollmentTotal = $enrollmentRepository->countUserEnrollment($this->user->getId(), true);
$this->data['enrollmentTotal'] = $enrollmentTotal;
return $this->renderEAD('user/enrollment/enrollment-list.html.twig');
}
/**
* @Route(
* path = "/enrollment/{id}",
* name = "enrollmentDetail",
* methods = {"GET"}
* )
*/
public function getEnrollmentDetail(Request $request) {
$this->checkUserSession($request);
$enrollmentId = $request->get('id');
$enrollmentRepository = $this->em->getRepository(Enrollment::class);
$enrollment = $enrollmentRepository->findOneBy([
"id" => $enrollmentId,
"user" => $this->user->getId(),
"deleted" => EnrollmentEnum::ITEM_NO_DELETED
]);
if (!$enrollment) {
return $this->redirectToRoute('notFound');
}
if(empty($enrollment->getDateStart()) || empty($enrollment->getLessonTimeWatch())){
$enrollment = $enrollmentRepository->updateDataAccessLog($enrollment);
}
$user = $enrollment->getUser();
$course = $enrollment->getCourse();
if ($user->getId() != $this->user->getId()) {
return $this->redirectToRoute('notFound');
}
$history = $enrollmentRepository->getHistoryByEnrollment($enrollment);
$examUserRepository = $this->em->getRepository(ExamUser::class);
$userExams = $examUserRepository->getStudentReportCard($user->getId(), $course->getId());
$finalAvarage = $examUserRepository->getFinalAvarege($user->getId(), $course->getId());
$productOfferRepository = $this->em->getRepository(ProductOffer::class);
$productOffersCertificate = $productOfferRepository->getProductOffersByCourse(
$course,
ProductEnum::CERTIFICATE
);
$numberUtil = $this->generalService->getUtil('NumberUtil');
foreach ($productOffersCertificate as $key => $productOffer) {
$productOffer->parcelInfo = $numberUtil->getNumberMaxParcel(
$productOffer->getPriceReal(true),
$productOfferRepository->getInstallmentNumberMax($productOffer),
$productOfferRepository->getFreeInstallment($productOffer),
$productOffer->getSaleOption(),
$productOffer->getTypeCheckout(),
false
);
$productOfferCertificate[$key] = $productOffer;
}
$this->data['enrollment'] = $enrollment;
$this->data['history'] = $history;
$this->data['userExams'] = $userExams;
$this->data['finalAvarage'] = $finalAvarage;
$this->data['productOffersCertificate'] = $productOffersCertificate;
return $this->renderEAD('user/enrollment/enrollment-detail.html.twig');
}
}