<?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\Course;
use EADPlataforma\Entity\Enrollment;
use EADPlataforma\Entity\Whishlist;
use EADPlataforma\Entity\CourseCertificate;
use EADPlataforma\Entity\Category;
use EADPlataforma\Entity\ProductOffer;
use EADPlataforma\Entity\ProductCoupon;
use EADPlataforma\Enum\ErrorEnum;
use EADPlataforma\Enum\ProductEnum;
use EADPlataforma\Enum\CategoryEnum;
use EADPlataforma\Enum\EnrollmentEnum;
use EADPlataforma\Enum\CourseCertificateEnum;
use EADPlataforma\Enum\TagsMarketingEnum;
/**
* @Route(
* schemes = {"http|https"}
* )
* @Cache(
* maxage = "0",
* smaxage = "0",
* expires = "now",
* public = false
* )
*/
class ResumeController extends AbstractWebsiteController {
/**
* @Route(
* path = "/resume/",
* name = "resume",
* methods = {"GET"}
* )
*/
public function myResumePage(Request $request){
$this->checkUserSession($request);
$categoryRepository = $this->em->getRepository(Category::class);
$categoriesEnrollment = $categoryRepository->getCategoriesInEnrollments();
$this->data['categoriesEnrollment'] = $categoriesEnrollment;
$productCategoriesWishlist = $categoryRepository->getCategoriesInWishlist();
$this->data['productCategoriesWishlist'] = $productCategoriesWishlist;
$this->data['couponTotal'] = 0;
if($this->configuration->isModuleActive("product_coupon_module")){
$productCouponRepository = $this->em->getRepository(ProductCoupon::class);
$this->data['couponTotal'] = $productCouponRepository->countPublicProductCoupons();
}
$courseRepository = $this->em->getRepository(Course::class);
$this->data['coursesFree'] = $courseRepository->getCoursesFree(true);
$this->data['generateCertificate'] = CourseCertificateEnum::YES;
return $this->renderEAD('user/resume/user-resume.html.twig');
}
/**
* @Route(
* path = "/resume/courses",
* name = "resumeCourse",
* methods = {"GET"}
* )
*/
public function getResumeCourses(Request $request) {
$this->checkUserSession($request);
$offset = (int)$request->get('offset');
$searchText = (string)$request->get('searchText');
$onlyStarted = (bool)$request->get('onlyStarted');
$notStarted = (bool)$request->get('notStarted');
$completed = (bool)$request->get('completed');
$all = (bool)$request->get('all');
$categories = $request->get('categories');
$statusFilter = (!empty($request->get('statusFilter')) ? $request->get('statusFilter') : []);
if(is_string($statusFilter)){
$statusFilter = explode(',', $statusFilter);
}
$enrollmentRepository = $this->em->getRepository(Enrollment::class);
$wrap = ($offset == 0);
$status = null;
if(!$all){
$status = EnrollmentEnum::STATUS_ACTIVE;
}
$enrollments = $enrollmentRepository->getResumeEnrollment(
$this->user->getId(),
$statusFilter,
$status,
$searchText,
$categories,
$offset,
10
);
$this->data['coursesFree'] = [];
if(
$wrap &&
(empty($statusFilter) || in_array(EnrollmentEnum::SITUATION_NOT_STARTED, $statusFilter))
){
$courseRepository = $this->em->getRepository(Course::class);
$this->data['coursesFree'] = $courseRepository->getCoursesFree(
true,
$searchText,
$categories
);
}
$this->data['enrollments'] = $enrollments;
$this->data['url'] = $this->generalService->generateUrl('resumeCourse');
$this->data['rows'] = count($enrollments);
$this->data['offset'] = $offset + 10;
$this->data['wrap'] = $wrap;
$this->data['total'] = $enrollmentRepository->countResumeEnrollment(
$this->user->getId(),
$statusFilter,
$status,
$searchText,
$categories
) + count($this->data['coursesFree']);
$this->data['showBtn'] = ($this->data['offset'] < $this->data['total']);
return $this->renderEAD('user/resume/courses.html.twig');
}
/**
* @Route(
* path = "/resume/certificates",
* name = "resumeCertificate",
* methods = {"GET"}
* )
*/
public function getResumeCertificates(Request $request) {
$this->checkUserSession($request);
$offset = $request->get('offset');
$searchText = $request->get('searchText');
$categories = $request->get('categories');
$certificateRepository = $this->em->getRepository(CourseCertificate::class);
$certificates = $certificateRepository->getResumeCourseCertificate(
$this->user->getId(),
$offset,
$searchText,
$categories
);
$wrap = ($offset == 0)? true : false;
$this->data['enrollments'] = null;
$this->data['certificates'] = $certificates;
$this->data['url'] = $this->generalService->generateUrl('resumeCertificate');
$this->data['rows'] = count($certificates);
$this->data['offset'] = $offset + 10;
$this->data['wrap'] = $wrap;
$this->data['total'] = $certificateRepository->getCountResumeCourseCertificate(
$this->user->getId(),
$searchText,
$categories
);
$this->data['showBtn'] = ($this->data['offset'] < $this->data['total']);
return $this->renderEAD('user/resume/certificates.html.twig');
}
/**
* @Route(
* path = "/resume/whishlist",
* name = "resumeWhishlist",
* methods = {"GET"}
* )
*/
public function getResumeWhishes(Request $request) {
$this->checkUserSession($request);
$offset = $request->get('offset');
$searchText = $request->get('searchText');
$categories = $request->get('categories');
$categories = explode(',', $categories);
$productOfferRepository = $this->em->getRepository(ProductOffer::class);
$whishlist = $productOfferRepository->getResumeWhishList(
$this->user->getId(),
$offset,
$searchText,
$categories
);
$wrap = ($offset == 0) ? true : false;
$this->data['enrollments'] = null;
$this->data['certificates'] = null;
$this->data['whishlist'] = $whishlist;
$this->data['url'] = $this->generalService->generateUrl('resumeWhishlist');
$this->data['rows'] = count($whishlist);
$this->data['offset'] = $offset + 10;
$this->data['wrap'] = $wrap;
$this->data['total'] = $productOfferRepository->getCountResumeWhishList(
$this->user->getId(),
$offset,
$searchText,
$categories
);
$this->data['showBtn'] = ($this->data['offset'] < $this->data['total']);
return $this->renderEAD('user/resume/whishlist.html.twig');
}
}