<?php
namespace EADPlataforma\Controller\Admin;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use EADPlataforma\Entity\LessonModule;
use EADPlataforma\Entity\User;
use EADPlataforma\Entity\Course;
use EADPlataforma\Entity\CourseTeam;
use EADPlataforma\Entity\Lesson;
use EADPlataforma\Entity\Exam;
use EADPlataforma\Enum\ExamEnum;
use EADPlataforma\Enum\CourseEnum;
use EADPlataforma\Enum\LessonEnum;
use EADPlataforma\Enum\LessonModuleEnum;
use EADPlataforma\Enum\ErrorEnum;
use EADPlataforma\Util\StringUtil;
/**
* @Route(
* path = "/admin/lesson/module",
* schemes = {"http|https"}
* )
* @Cache(
* maxage = "0",
* smaxage = "0",
* expires = "now",
* public = false
* )
*/
class LessonModuleController extends AbstractController {
public function getEntityClass(){
return LessonModule::class;
}
/**
* @Route(
* path = "/list/paginate",
* methods = {"GET"}
* )
*/
public function getLessonModulePaginate(Request $request) {
$permission = $this->userPermissionUtil->getPermission("course", "lesson_module", "see");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$userClass = User::class;
$courseClass = Course::class;
$courseTeamClass = CourseTeam::class;
$userOnId = $this->user->getId();
$columns = [
"lm.id",
"lm.workload",
"lm.status",
"lm.order",
"u.name AS userName",
"lm.title"
];
$columnNotUseInFilter = [
"(CASE WHEN c.id IN (
SELECT
IDENTITY(ct.course)
FROM {$courseTeamClass} AS ct
WHERE ct.deleted = 0
AND ct.user = {$userOnId}
) THEN 1 ELSE 0 END ) AS isInTeam "
];
$joins = [
"{$userClass} AS u" => "u.id = lm.user",
"{$courseClass} AS c" => "c.id = lm.course AND c.deleted = 0"
];
$courseId = (int)$this->requestUtil->getField('course');
$status = $this->requestUtil->getField('status');
$userId = (int)$this->requestUtil->getField('user');
$orderParam = $this->requestUtil->getField('order');
$searchText = $this->requestUtil->getField('searchText');
$limit = $this->requestUtil->getField('limit');
$offset = $this->requestUtil->getField('offset');
$filter = [];
$filterDelete = $this->requestUtil->getDeletedParam();
if($this->userPermissionUtil->isMiddle($permission)){
$userOnId = $this->user->getId();
$filter["whereText"] = " ( c.user = {$userOnId} OR lm.user = {$userOnId} ) ";
}
if(!is_null($status)){
$filter["lm.status"] = $status;
}
if($courseId > 0){
$filter["lm.course"] = $courseId;
}
if($userId > 0){
$filter["lm.user"] = $userId;
}
$order = ["lm.order" => "ASC"];
if(!empty($orderParam)){
$order = json_decode($orderParam, true);
}
$data = $this->repository->paginate(
"lm",
$searchText,
$columns,
$joins,
$filter,
$order,
$limit,
$offset,
$filterDelete,
false,
$columnNotUseInFilter
);
$examRepository = $this->em->getRepository(Exam::class);
foreach ($data["rows"] as $key => $item) {
$item = (object)$item;
$item->title = StringUtil::fromUnicode($item->title);
$item->hasExam = $examRepository->count([
"deleted" => ExamEnum::ITEM_NO_DELETED,
"type" => ExamEnum::MODULE,
"lessonModule" => $item->id,
]);
$data["rows"][$key] = $item;
}
return $this->eadResponse($data);
}
/**
* @Route(
* path = "/list/trash/paginate",
* methods = {"GET"}
* )
*/
public function getLessonModuleTrashPaginate(Request $request) {
$permission = $this->userPermissionUtil->getPermission("course", "lesson_module", "see");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$columns = [
"lm.id",
"lm.workload",
"lm.status",
"lm.order",
"u.name AS userName",
"lm.title",
"DATE_FORMAT(lm.dateDelete, '%Y-%m-%d %H:%i:%s') AS dateDelete",
"ud.name AS userDelete"
];
$userClass = User::class;
$courseClass = Course::class;
$joins = [
"{$userClass} AS u" => "u.id = lm.user",
"{$userClass} AS ud" => [ "LEFT", "ud.id = lm.userDelete" ],
"{$courseClass} AS c" => "c.id = lm.course AND c.deleted = 0"
];
$status = $this->requestUtil->getField('status');
$orderParam = $this->requestUtil->getField('order');
$searchText = $this->requestUtil->getField('searchText');
$limit = $this->requestUtil->getField('limit');
$offset = $this->requestUtil->getField('offset');
$filter = [];
$filterDelete = LessonModuleEnum::ITEM_ON_TRASH;
if($this->userPermissionUtil->isMiddle($permission)){
$userOnId = $this->user->getId();
$filter["whereText"] = " ( c.user = {$userOnId} OR lm.user = {$userOnId} ) ";
}
if(!is_null($status)){
$filter["lm.status"] = $status;
}
$order = ["lm.order" => "ASC"];
if(!empty($orderParam)){
$order = json_decode($orderParam, true);
}
$data = $this->repository->paginate(
"lm",
$searchText,
$columns,
$joins,
$filter,
$order,
$limit,
$offset,
$filterDelete
);
return $this->eadResponse($data);
}
/**
* @Route(
* path = "/list/all/{courseId}",
* methods = {"GET"},
* requirements = { "courseId" = "\d+" }
* )
*/
public function getLessonModuleAll(Request $request) {
$permission = $this->userPermissionUtil->getPermission("course", "lesson", "see");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$courseId = $request->get('courseId');
$filter = [
"course" => $courseId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
];
if($this->userPermissionUtil->isMiddle($permission)){
$filter['user'] = $this->user->getId();
}
$lessonModules = $this->repository->findBy($filter, [ "course" => "ASC", "id" => "ASC" ]);
$data = [];
foreach ($lessonModules as $key => $lessonModule) {
$data[] = $lessonModule->toReturn();
}
return $this->eadResponse($data);
}
/**
* @Route(
* path = "/check/user/{id}",
* methods = {"GET"},
* requirements = { "id" = "\d+" }
* )
*/
public function checkIsInLessonModule(Request $request){
$lessonModuleId = $request->get('id');
$lessonModule = $this->repository->findOneBy([
"course" => $lessonModuleId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if (!$lessonModule) {
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
return $this->eadResponse([ "is" => ( $isLessonModuleTeacher ? 1 : 0 ) ]);
}
/**
* @Route(
* path = "/detail/{id}",
* methods = {"GET"},
* requirements = { "id" = "\d+" }
* )
*/
public function getLessonModule(Request $request) {
$permission = $this->userPermissionUtil->getPermission("course", "lesson_module", "see");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$lessonModuleId = $request->get('id');
$lessonModule = $this->repository->findOneBy([
"id" => $lessonModuleId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if (!$lessonModule) {
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
if(!$isLessonModuleTeacher && $this->userPermissionUtil->isMiddle($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
return $this->eadResponse($lessonModule->toReturn());
}
/**
* @Route(
* path = "/register",
* methods = {"POST"},
* )
*/
public function registerLessonModule(Request $request) {
$permission = $this->userPermissionUtil->getPermission(
"course",
"lesson_module",
"create"
);
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$lessonModule = new LessonModule();
if($this->requestUtil->issetField('title')){
$lessonModule->setTitle($this->requestUtil->getField("title"));
}
if($this->requestUtil->issetField('workload')){
$lessonModule->setWorkload($this->requestUtil->getField("workload"));
}
if($this->requestUtil->issetField('status')){
$lessonModule->setStatus((int)$this->requestUtil->getField('status'));
}
if($this->requestUtil->issetField('description')){
$lessonModule->setDescription($this->requestUtil->getField("description"));
}
$userId = (int)$this->requestUtil->getField('user');
$courseId = (int)$this->requestUtil->getField('course');
if($this->requestUtil->issetField('user')){
if($userId > 0 && $this->userPermissionUtil->isHigh($permission)){
$user = $this->em->getRepository(User::class)->findOneBy([
"id" => $userId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($user){
$lessonModule->setUser($user);
}
}else{
$lessonModule->setUser($this->user);
}
}else{
$lessonModule->setUser($this->user);
}
if($this->requestUtil->issetField('course')){
if($courseId > 0){
$course = $this->em->getRepository(Course::class)->findOneBy([
"id" => $courseId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($course){
$lessonModule->setCourse($course);
}
}
}
$order = $lessonModule->getOrder();
$lastOrder = $this->repository->count([
"deleted" => LessonModuleEnum::ITEM_NO_DELETED ,
"course" => $courseId]
) + 1;
if(empty($order) || $order > $lastOrder){
$lessonModule->setOrder($lastOrder);
$order = $lastOrder;
}
$errors = $this->validateEntity($lessonModule);
if($errors){
return $this->eadResponse($errors, ErrorEnum::FIELD_EMPTY);
}
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
if(!$isLessonModuleTeacher && $this->userPermissionUtil->isMiddle($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->repository->refreshOrder(null, $order, $courseId);
$course = $lessonModule->getCourse();
$course->setDateUpdate(date('Y-m-d H:i:s'));
$this->em->persist($lessonModule);
$this->em->flush();
$this->em->getRepository(Course::class)->addNumberLesson($course);
$return = $lessonModule->toReturn();
$this->userLogService->logInsert("lesson_module", $lessonModule->getId(), $return);
return $this->eadResponse($return);
}
/**
* @Route(
* path = "/edit/{id}",
* methods = {"PUT"},
* requirements = { "id" = "\d+" }
* )
*/
public function editLessonModule(Request $request) {
$permission = $this->userPermissionUtil->getPermission("course", "lesson_module", "edit");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$lessonModuleId = $request->get('id');
$lessonModule = $this->repository->findOneBy([
"id" => $lessonModuleId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if (!$lessonModule) {
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
$oldOrder = $lessonModule->getOrder();
if($this->requestUtil->issetField('order')){
$lessonModule->setOrder((int)$this->requestUtil->getField('order'));
}
if($this->requestUtil->issetField('title')){
$lessonModule->setTitle($this->requestUtil->getField("title"));
}
if($this->requestUtil->issetField('workload')){
$lessonModule->setWorkload($this->requestUtil->getField("workload"));
}
if($this->requestUtil->issetField('status')){
$lessonModule->setStatus((int)$this->requestUtil->getField('status'));
}
if($this->requestUtil->issetField('description')){
$lessonModule->setDescription($this->requestUtil->getField("description"));
}
$userId = (int)$this->requestUtil->getField('user');
$courseId = $lessonModule->getCourse()->getId();
if($this->requestUtil->issetField('user')){
if($userId > 0 && $this->userPermissionUtil->isHigh($permission)){
$user = $this->em->getRepository(User::class)->findOneBy([
"id" => $userId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($user){
$lessonModule->setUser($user);
}
}
}
if($this->requestUtil->issetField('course')){
if($courseId > 0){
$course = $this->em->getRepository(Course::class)->findOneBy([
"id" => $courseId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($course){
$lessonModule->setCourse($course);
}
}
}
$lastOrder = $this->repository->count([
"deleted" => LessonModuleEnum::ITEM_NO_DELETED,
"course" => $courseId
]);
$newOrder = $lessonModule->getOrder();
if(empty($newOrder) || $newOrder > $lastOrder){
$lessonModule->setOrder($lastOrder);
$newOrder = $lastOrder;
}
if($lessonModule->getStatus() == LessonModuleEnum::DRAFT){
$lessonModule->setOrder($lastOrder);
$newOrder = $lastOrder;
}
$errors = $this->validateEntity($lessonModule);
if($errors){
return $this->eadResponse($errors, ErrorEnum::FIELD_EMPTY);
}
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
if(!$isLessonModuleTeacher && $this->userPermissionUtil->isMiddle($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
if($oldOrder != $newOrder){
$this->repository->refreshOrder($oldOrder, $newOrder, $courseId);
}
$course = $lessonModule->getCourse();
$course->setDateUpdate(date('Y-m-d H:i:s'));
$this->em->flush();
$this->em->getRepository(Course::class)->addNumberLesson($course);
$data = $lessonModule->toReturn();
$this->userLogService->logUpdate("lesson_module", $lessonModule->getId(), $data);
return $this->eadResponse($data);
}
/**
* @Route(
* path = "/edit/control/{id}",
* methods = {"PUT"},
* requirements = { "id" = "\d+" }
* )
*/
public function editLessonModuleControl(Request $request) {
$permission = $this->userPermissionUtil->getPermission(
"course",
"lesson_module",
"access_control"
);
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$lessonModuleId = $request->get('id');
$lessonModule = $this->repository->findOneBy([
"id" => $lessonModuleId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if (!$lessonModule) {
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
if($this->requestUtil->issetField('controlRequirement')){
$lessonModule->setControlRequirement((int)$this->requestUtil->getField("controlRequirement"));
}
if($this->requestUtil->issetField('controlReleaseType')){
$lessonModule->setControlReleaseType((int)$this->requestUtil->getField("controlReleaseType"));
}
if($this->requestUtil->issetField('controlReleaseAfterType')){
$lessonModule->setControlReleaseAfterType(
(int)$this->requestUtil->getField("controlReleaseAfterType")
);
}
if($this->requestUtil->issetField('controlDateRelease')){
$lessonModule->setControlDateRelease($this->requestUtil->getField("controlDateRelease"));
}
if($this->requestUtil->issetField('controlReleasePeriod')){
$lessonModule->setControlReleasePeriod(
(int)$this->requestUtil->getField("controlReleasePeriod")
);
}
if($this->requestUtil->issetField('controlClosePeriod')){
$lessonModule->setControlClosePeriod((int)$this->requestUtil->getField("controlClosePeriod"));
}
$groupsValidation = [];
if($lessonModule->getControlReleaseType() == LessonModuleEnum::FIXED_DATE){
$groupsValidation[] = "lssonControlReleaseTypeFixed";
}else if($lessonModule->getControlReleaseType() == LessonModuleEnum::FLEXIBLE_DATE){
$groupsValidation[] = "lssonControlReleaseTypeFlex";
}
$errors = $this->validateEntity($lessonModule, $groupsValidation);
if($errors){
return $this->eadResponse($errors, ErrorEnum::FIELD_EMPTY);
}
$course = $lessonModule->getCourse();
$course->setDateUpdate(date('Y-m-d H:i:s'));
$this->em->flush();
$data = $lessonModule->toReturn();
$this->userLogService->logUpdate("lessonModule", $lessonModule->getId(), $data);
return $this->eadResponse($data);
}
/**
* @Route(
* path = "/edit/many/control",
* methods = {"PUT"}
* )
*/
public function editLessonControlMany(Request $request) {
$permission = $this->userPermissionUtil->getPermission(
"course",
"lesson_module",
"access_control"
);
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$lessonModuleId = $this->requestUtil->getField('ids');
if(empty($lessonModuleId)){
return $this->eadResponse(null, ErrorEnum::ACTION_INVALID);
};
$lessonModuleId = json_decode($lessonModuleId);
foreach ($lessonModuleId as $key => $id) {
$lessonModule = $this->repository->findOneBy([
"id" => $id,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($lessonModule) {
if($this->requestUtil->issetField('controlRequirement')){
$lessonModule->setControlRequirement((int)$this->requestUtil->getField("controlRequirement"));
}
if($this->requestUtil->issetField('controlReleaseType')){
$lessonModule->setControlReleaseType((int)$this->requestUtil->getField("controlReleaseType"));
}
if($this->requestUtil->issetField('controlReleaseAfterType')){
$lessonModule->setControlReleaseAfterType(
(int)$this->requestUtil->getField("controlReleaseAfterType")
);
}
if($this->requestUtil->issetField('controlDateRelease')){
$lessonModule->setControlDateRelease(
$this->requestUtil->getField("controlDateRelease")
);
}
if($this->requestUtil->issetField('controlReleasePeriod')){
$lessonModule->setControlReleasePeriod(
(int)$this->requestUtil->getField("controlReleasePeriod")
);
}
if($this->requestUtil->issetField('controlClosePeriod')){
$lessonModule->setControlClosePeriod(
(int)$this->requestUtil->getField("controlClosePeriod")
);
}
$groupsValidation = [];
if($lessonModule->getControlReleaseType() == LessonModuleEnum::FIXED_DATE){
$groupsValidation[] = "lssonControlReleaseTypeFixed";
}else if($lessonModule->getControlReleaseType() == LessonModuleEnum::FLEXIBLE_DATE){
$groupsValidation[] = "lssonControlReleaseTypeFlex";
}
$errors = $this->validateEntity($lessonModule, $groupsValidation);
if(!$errors){
$course = $lessonModule->getCourse();
$course->setDateUpdate(date('Y-m-d H:i:s'));
$this->em->flush();
$data = $lessonModule->toReturn();
$this->userLogService->logUpdate(
"lessonModule",
$lessonModule->getId(),
$data
);
}
}
}
return $this->eadResponse([ "message" => "Success" ]);
}
/**
* @Route(
* path = "/edit/many/status",
* methods = {"PUT"}
* )
*/
public function editManyStatusLessonModule(Request $request) {
$permission = $this->userPermissionUtil->getPermission(
"course",
"lesson_module",
"edit"
);
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$lessonModuleId = $this->requestUtil->getField('lessonModules');
if(empty($lessonModuleId)){
return $this->eadResponse(null, ErrorEnum::ACTION_INVALID);
};
$lessonModuleId = json_decode($lessonModuleId);
foreach ($lessonModuleId as $key => $id) {
$lessonModule = $this->repository->findOneBy([
"id" => $id,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($lessonModule) {
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
if(($isLessonModuleTeacher && $this->userPermissionUtil->isMiddle($permission)) ||
$this->userPermissionUtil->isHigh($permission)){
if($this->requestUtil->issetField('status')){
$lessonModule->setStatus((int)$this->requestUtil->getField('status'));
}
$errors = $this->validateEntity($lessonModule);
if(!$errors){
$this->em->flush();
$data = $lessonModule->toReturn();
$this->userLogService->logUpdate(
"lesson_module",
$lessonModule->getId(),
$data
);
}
}
}
}
return $this->eadResponse([ "message" => "Success" ]);
}
/**
* @Route(
* path = "/edit/many/teacher",
* methods = {"PUT"}
* )
*/
public function editManyTeacherLessonModule(Request $request) {
$permission = $this->userPermissionUtil->getPermission(
"course",
"lesson_module",
"edit"
);
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$lessonModuleId = $this->requestUtil->getField('lessonModules');
if(empty($lessonModuleId)){
return $this->eadResponse(null, ErrorEnum::ACTION_INVALID);
};
$lessonModuleId = json_decode($lessonModuleId);
foreach ($lessonModuleId as $key => $id) {
$lessonModule = $this->repository->findOneBy([
"id" => $id,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($lessonModule) {
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
if(($isLessonModuleTeacher && $this->userPermissionUtil->isMiddle($permission)) ||
$this->userPermissionUtil->isHigh($permission)){
$userId = $this->requestUtil->getField('user');
if($userId > 0){
$user = $this->em->getRepository(User::class)->findOneBy([
"id" => $userId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if(!$user){
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
$lessonModule->setUser($user);
}
$errors = $this->validateEntity($lessonModule);
if(!$errors){
$this->em->flush();
$data = $lessonModule->toReturn();
$this->userLogService->logUpdate(
"lesson_module",
$lessonModule->getId(),
$data
);
}
}
}
}
return $this->eadResponse([ "message" => "Success" ]);
}
/**
* @Route(
* path = "/copy/{id}",
* methods = {"COPY"},
* requirements = { "id" = "\d+"}
* )
*/
public function copyLessonModule(Request $request) {
if(!$this->configuration->checkModuleIsAbleOnPlan('copyFunction')){
return $this->eadResponse(null, ErrorEnum::ACTION_INVALID);
}
$permission = $this->userPermissionUtil->getPermission("course", "lesson_module", "copy");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$courseId = $request->get('id');
$moduleIds = $this->requestUtil->getField('module');
$copyType = $this->requestUtil->getField('copyType');
$course = $this->em->getRepository(Course::class)->findOneBy([
"id" => $courseId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if(!$course){
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
$moduleIds = json_decode($moduleIds);
if(!is_array($moduleIds)){
return $this->eadResponse(null, ErrorEnum::NOT_FOUND);
}
foreach ($moduleIds as $key => $moduleId) {
$module = $this->repository->findOneBy([
"id" => $moduleId,
"deleted" => LessonModuleEnum::ITEM_NO_DELETED
]);
if($module){
if($this->userPermissionUtil->isLow($permission)){
$isLessonModuleTeacher = $this->repository->isLessonModuleTeacher(
$lessonModule,
$this->user
);
if($isLessonModuleTeacher){
$this->repository->copyLessonModule($module, $course, true, $copyType);
}
}else{
$this->repository->copyLessonModule($module, $course, true, $copyType);
}
}
}
$this->em->getRepository(Course::class)->addNumberLesson($course);
$this->userLogService->logInsert("lesson_module", null, $moduleIds);
return $this->eadResponse([ "message" => "Success" ]);
}
/**
* @Route(
* path = "/update/order",
* methods = {"PUT"},
* )
*/
public function lessonModuleUpdateOrder(Request $request) {
$permission = $this->userPermissionUtil->getPermission("course", "lesson_module", "organize");
if($this->userPermissionUtil->isLow($permission)){
return $this->eadResponse(null, ErrorEnum::PERMISSION);
}
$this->requestUtil->setRequest($request)->setData();
$modules = json_decode($this->requestUtil->getField('modules'));
if(!empty($modules)){
$this->repository->updateOrder($modules);
$this->userLogService->logUpdate("lesson_module", null, $modules);
}
return $this->eadResponse([ "message" => "Success" ]);
}
}