Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 33 |
CRAP | |
0.00% |
0 / 773 |
CourseMaterialService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 33 |
34782.00 | |
0.00% |
0 / 773 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
|||
__clone | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
getInstance | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 5 |
|||
addCourseMaterial | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 32 |
|||
updateCourseMaterial | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 18 |
|||
addStaffDocument | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 17 |
|||
updateStaffDocuments | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 18 |
|||
getDocumentCategories | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
getDocumentSubCategories | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
getStaffDocuments | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 18 |
|||
createCourseMaterialService | |
0.00% |
0 / 1 |
210.00 | |
0.00% |
0 / 51 |
|||
updateCourseMaterialDetails | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 21 |
|||
getAllCourseMaterials | |
0.00% |
0 / 1 |
506.00 | |
0.00% |
0 / 97 |
|||
getResourceIdByDocumentId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 8 |
|||
deleteCourseMaterial | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 33 |
|||
checkResourceHasCopied | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
lockOrUnlockDocument | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 13 |
|||
deleteCourseMaterialLikes | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 8 |
|||
deleteCourseMaterialComments | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 8 |
|||
deleteCourseMaterialRatings | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 8 |
|||
getCourseMaterialDetails | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 80 |
|||
getCourseMaterialComments | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 61 |
|||
postComment | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 18 |
|||
deleteComment | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 22 |
|||
userHasPermissionToViewThisDocument | |
0.00% |
0 / 1 |
420.00 | |
0.00% |
0 / 43 |
|||
markOrUnmarkUserLike | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 19 |
|||
copyCourseMaterials | |
0.00% |
0 / 1 |
182.00 | |
0.00% |
0 / 37 |
|||
isDocumentShared | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 9 |
|||
getCourseMaterialsBySbsId | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 38 |
|||
getCourseMaterialById | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 17 |
|||
getVideoContentByVideoId | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
getVideoMaterialsBySbsId | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 18 |
|||
getUploadedCourseMaterialByTopicId | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
<?php | |
namespace com\linways\core\ams\professional\service; | |
use com\linways\base\util\SecurityUtils; | |
use com\linways\core\ams\professional\constant\BackendTypes; | |
use com\linways\core\ams\professional\constant\ResourceContext; | |
use com\linways\core\ams\professional\constant\UserType; | |
use com\linways\core\ams\professional\dto\CourseMaterial; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use com\linways\core\ams\professional\mapper\CourseMaterialServiceMapper; | |
use com\linways\core\ams\professional\request\AddCourseMaterialRequest; | |
use com\linways\core\ams\professional\request\AddResourceRequest; | |
use com\linways\core\ams\professional\request\AddStaffDocumentRequest; | |
use com\linways\core\ams\professional\request\CheckUserCourseMaterialPermission; | |
use com\linways\core\ams\professional\request\CopyCourseMaterialRequest; | |
use com\linways\core\ams\professional\request\DeleteCommentRequest; | |
use com\linways\core\ams\professional\request\DeleteCourseMaterialRequest; | |
use com\linways\core\ams\professional\request\GetAllCourseMaterialsRequest; | |
use com\linways\core\ams\professional\request\GetCourseMaterialDetailsRequest; | |
use com\linways\core\ams\professional\request\GetCourseMaterialRequest; | |
use com\linways\core\ams\professional\request\GetPreSignedUrlRequest; | |
use com\linways\core\ams\professional\request\GetStaffDocumentsRequest; | |
use com\linways\core\ams\professional\request\LockOrUnlockDocumentRequest; | |
use com\linways\core\ams\professional\request\MarkUnMarkUserLikeRequest; | |
use com\linways\core\ams\professional\request\PostCommentRequest; | |
use com\linways\core\ams\professional\request\RemoveResourceRequest; | |
use com\linways\core\ams\professional\request\UpdateCourseMaterialRequest; | |
use com\linways\core\ams\professional\request\UpdateStaffDocumentRequest; | |
use com\linways\core\ams\professional\response\GetAllCourseMaterialResponse; | |
use com\linways\core\ams\professional\util\CommonUtil; | |
use com\linways\core\ams\professional\service\StaffService; | |
/** | |
* | |
* @author jithinvijayan | |
* @Date 16/03/20 | |
*/ | |
class CourseMaterialService extends BaseService | |
{ | |
/** | |
* @var null | |
*/ | |
private static $_instance = null; | |
private $mapper = []; | |
/** | |
* Locked down the constructor|Prevent any outside instantiation of this class | |
* | |
* CourseMaterialService constructor. | |
*/ | |
private function __construct() | |
{ | |
$this->mapper = CourseMaterialServiceMapper::getInstance()->getMapper(); | |
} | |
/** | |
* Prevent any object or instance of that class to be cloned | Prevent any copy of this object | |
*/ | |
private function __clone() | |
{ | |
} | |
/** | |
* Have a single globally accessible static method | |
* | |
* @return CourseMaterialService|null | |
*/ | |
public static function getInstance() | |
{ | |
if (!is_object(self::$_instance)) | |
self::$_instance = new self (); | |
return self::$_instance; | |
} | |
/** | |
* @param AddCourseMaterialRequest $request | |
* @return integer|object|null | |
* @throws ProfessionalException | |
* @deprecated | |
*/ | |
public function addCourseMaterial(AddCourseMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$documentId = null; | |
$request = CommonUtil::convertObjectToUTF8Format($request); | |
if (empty($request->staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_STAFF_ID, "Invalid staff details given"); | |
} | |
if (empty($request->subjectId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SUBJECT_ID, "Invalid subject details given"); | |
} | |
if (empty($request->documentTitle)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_TITLE, "Invalid document title given"); | |
} | |
if (empty($request->documentPath)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_TITLE, "Invalid document path given"); | |
} | |
$sql = " INSERT INTO course_material ( materialName, materialDocPath, materialPdfPath, materialImgPath, | |
materialSwfPath, staffID, batchID, subjectID,semID) | |
VALUES ('$request->documentTitle','$request->documentPath','$request->documentPath','$request->imagePath', | |
'$request->docSWF','$request->staffId','$request->batchId', '$request->subjectId', | |
(SELECT semID FROM sbs_relation WHERE subjectID='$request->subjectId' AND batchID='$request->batchId' | |
AND staffID='$request->staffId' | |
LIMIT 1 | |
) | |
)"; | |
try { | |
$documentId = $this->executeQueryForObject($sql, true); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $documentId; | |
} | |
/** | |
* Updating course material details | |
* | |
* @param UpdateCourseMaterialRequest $request | |
* @throws ProfessionalException | |
* @deprecated | |
*/ | |
public function updateCourseMaterial(UpdateCourseMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$request = CommonUtil::convertObjectToUTF8Format($request); | |
if (!preg_match("/[A-Za-z0-9\-\&\_\+\*]+/", $request->title)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TITLE, "Title is invalid or empty"); | |
} | |
if (!preg_match("/[A-Za-z0-9\-\&\_\+\*]+/", $request->topic)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TOPIC, "Topic is invalid or empty"); | |
} | |
$sql = "UPDATE course_material SET materialName ='$request->title',materialTopic='$request->topic', | |
materialDesc ='$request->description',shareDoc =$request->isShared | |
WHERE materialID = $request->documentId"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Adding staff documents to the storage | |
* | |
* @param AddStaffDocumentRequest $request | |
* @return Object | |
* @throws ProfessionalException | |
*/ | |
public function addStaffDocument(AddStaffDocumentRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_STAFF_ID, "Invalid staff details given"); | |
} | |
if (empty($request->departmentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DEPARTMENT_ID, "Invalid department details given"); | |
} | |
$sql = "INSERT INTO staff_document(docName, docPath, docPDFPath, docImgPath, docSWFPath, staffID, deptID, resourceId) | |
VALUES ('$request->name', '$request->path', '$request->pdfPath', '$request->imagePath', | |
'$request->docSWF', '$request->staffId', '$request->departmentId', '$request->resourceId');"; | |
try { | |
return $this->executeQueryForObject($sql, true); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Updating course material details | |
* | |
* @param UpdateStaffDocumentRequest $request | |
* @throws ProfessionalException | |
*/ | |
public function updateStaffDocuments(UpdateStaffDocumentRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (!preg_match("/[A-Za-z0-9\-\&\_\+\*]+/", $request->title)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TITLE, "Title is invalid or empty"); | |
} | |
if (!preg_match("/[A-Za-z0-9\-\&\_\+\*]+/", $request->topic)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TOPIC, "Subject is invalid or empty"); | |
} | |
$sql = "UPDATE staff_document SET docName ='$request->title',docSubject='$request->topic', | |
docDsc ='$request->description',docCatID ='$request->categoryId', | |
docSubCatID='$request->subCategoryId' | |
WHERE docID = $request->documentId"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @return array|object | |
* @throws ProfessionalException | |
*/ | |
public function getDocumentCategories() | |
{ | |
$sql = "SELECT catID as id, catName as name | |
FROM doccategory"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $categoryId | |
* @return Object | |
* @throws ProfessionalException | |
*/ | |
public function getDocumentSubCategories($categoryId) | |
{ | |
$categoryId = (int)$this->realEscapeString($categoryId); | |
$sql = "SELECT subCatID as id, subCatName as name | |
FROM docsubcategory WHERE catID=$categoryId"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param GetStaffDocumentsRequest $request | |
* @return Object|array | |
* @throws ProfessionalException | |
*/ | |
public function getStaffDocuments(GetStaffDocumentsRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$sql = "SELECT sd.docName as name,sd.docSubject as subject, sd.docCatID as categoryId, sd.docSubCatID as subCategoryId, sd.docDsc as description, lr.path, sd.resourceId, lr.backend_type, lr.storage_object FROM staff_document sd INNER JOIN lin_resource lr ON lr.id=sd.resourceId WHERE 1=1"; | |
if ($request->documentId) { | |
$sql .= " AND docID=$request->documentId "; | |
} | |
if ($request->staffId) { | |
$sql .= " AND staffID=$request->staffId"; | |
} | |
try { | |
if (!empty($request->documentId)) { | |
return $this->executeQueryForObject($sql); | |
} | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param AddCourseMaterialRequest $request | |
* @return Object|integer | |
* @throws Exception | |
* @throws ProfessionalException | |
*/ | |
public function createCourseMaterialService(AddCourseMaterialRequest $request) | |
{ | |
$jsonObject = json_decode($request->storageObject); | |
$request = $this->realEscapeObject($request); | |
$jsonObject = $this->realEscapeObject($jsonObject); | |
if (empty($request->name)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_NAME, "Invalid document details given"); | |
} | |
if (empty($request->staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_STAFF_ID, "Invalid staff details given"); | |
} | |
if (empty($request->batchId) && empty($request->pseudoSubjectId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "invalid request sent"); | |
} | |
$addResourceObject = new AddResourceRequest(); | |
$addResourceObject->storageObject = json_encode($jsonObject); | |
$addResourceObject->backendType = $request->backendType; | |
$addResourceObject->context = ResourceContext::COURSE_MATERIALS; | |
if ($request->backendType === BackendTypes::S3) { | |
$addResourceObject->path = $jsonObject->key; | |
} elseif ($request->backendType === BackendTypes::GOOGLE_DRIVE) { | |
$addResourceObject->path = $jsonObject->url; | |
} | |
$addResourceObject->createdBy = $request->createdBy; | |
$addResourceObject->updatedBy = $request->updatedBy; | |
$this->beginTransaction(); | |
$resourceId = ResourceService::getInstance()->addResources($addResourceObject); | |
if (empty($resourceId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_RESOURCE_ID, "Invalid document details given"); | |
} | |
$request->subjectId = $request->subjectId ? $request->subjectId : "NULL"; | |
$request->pseudoSubjectId = $request->pseudoSubjectId ? $request->pseudoSubjectId : "NULL"; | |
$request->batchId = $request->batchId ? $request->batchId : "NULL"; | |
$request->semesterId = $request->semesterId ? $request->semesterId : "NULL"; | |
$request->topicId = $request->topicId?$request->topicId:"NULL"; | |
$id = SecurityUtils::getRandomString(); | |
$sql = "INSERT INTO course_materials (id, resource_id, name, topic, staff_id, batch_id, semester_id, subject_id, | |
pseudo_subject_id, description,is_shared_document,topic_id,created_by, created_date, updated_by, updated_date) | |
VALUES ('$id','$resourceId','$request->name','$request->topic', | |
$request->staffId,$request->batchId,$request->semesterId,$request->subjectId, | |
$request->pseudoSubjectId,'$request->description',$request->isSharedDocument, | |
$request->topicId, | |
$request->createdBy,UTC_TIMESTAMP(),$request->updatedBy,UTC_TIMESTAMP())"; | |
try { | |
$this->executeQueryForObject($sql); | |
$this->commit(); | |
return $id; | |
} catch (\Exception $e) { | |
$this->rollback(); | |
throw new Exception($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param UpdateCourseMaterialRequest $request | |
* @throws ProfessionalException | |
*/ | |
public function updateCourseMaterialDetails(UpdateCourseMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid document details given"); | |
} | |
if (empty($request->name)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_NAME, "Invalid document name given"); | |
} | |
if (empty($request->topic)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TOPIC, "Invalid document topic given"); | |
} | |
$sql = "UPDATE course_materials | |
SET name = '$request->name',topic = '$request->topic',description ='$request->description', | |
is_shared_document = $request->isShared,updated_date = UTC_TIMESTAMP(),updated_by = $request->updatedBy | |
WHERE id ='$request->documentId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param GetAllCourseMaterialsRequest $request | |
* @return GetAllCourseMaterialResponse | |
* @throws ProfessionalException | |
*/ | |
public function getAllCourseMaterials(GetAllCourseMaterialsRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$response = new GetAllCourseMaterialResponse(); | |
$limitQuery = ""; | |
$conditionQuery = ""; | |
$limitConditionQuery = ""; | |
if (!empty($request->staffId)) { | |
$conditionQuery .= " AND cm.staff_id =$request->staffId "; | |
$limitConditionQuery .= " AND staff_id =$request->staffId "; | |
} | |
if (!empty($request->batchId)) { | |
$conditionQuery .= " AND cm.batch_id =$request->batchId "; | |
$limitConditionQuery .= " AND batch_id =$request->batchId "; | |
} | |
if (!empty($request->semesterId)) { | |
$conditionQuery .= " AND cm.semester_id =$request->semesterId "; | |
$limitConditionQuery .= " AND semester_id =$request->semesterId "; | |
} | |
if (!empty($request->subjectId)) { | |
$conditionQuery .= " AND cm.subject_id =$request->subjectId "; | |
$limitConditionQuery .= " AND subject_id =$request->subjectId "; | |
} | |
if (!empty($request->pseudoSubjectId)) { | |
$conditionQuery .= " AND cm.pseudo_subject_id =$request->pseudoSubjectId "; | |
$limitConditionQuery .= " AND pseudo_subject_id =$request->pseudoSubjectId "; | |
} | |
if (!$request->showPrivateDocuments) { | |
$conditionQuery .= " AND cm.is_private = 0 "; | |
$limitConditionQuery .= " AND is_private = 0 "; | |
} | |
if ($request->showSharedDocumentsOnly) { | |
$conditionQuery .= " AND cm.is_shared_document=1 "; | |
$limitConditionQuery .= " AND is_shared_document=1 "; | |
} | |
if (!empty($request->excludedSubjectId)) { | |
$conditionQuery .= " AND cm.subject_id!=$request->excludedSubjectId "; | |
$limitConditionQuery .= " AND subject_id!=$request->excludedSubjectId "; | |
} | |
if (!empty($request->excludedBatchId)) { | |
$conditionQuery .= " AND cm.batch_id !=$request->excludedBatchId "; | |
$limitConditionQuery .= " AND batch_id !=$request->excludedBatchId "; | |
} | |
if (!empty($request->excludedSemesterId)) { | |
$conditionQuery .= " AND cm.semester_id !=$request->excludedSemesterId "; | |
$limitConditionQuery .= " AND semester_id !=$request->excludedSemesterId "; | |
} | |
if (!empty($request->excludedStaffId)) { | |
$conditionQuery .= " AND cm.staff_id !=$request->excludedStaffId "; | |
$limitConditionQuery .= " AND staff_id !=$request->excludedStaffId "; | |
} | |
if (!empty($request->pseudoSubjectIds)) { | |
$conditionQuery .= " AND cm.pseudo_subject_id IN (" . implode(",", $request->pseudoSubjectIds) . ")"; | |
$limitConditionQuery .= " AND pseudo_subject_id IN (" . implode(",", $request->pseudoSubjectIds) . ")"; | |
} | |
if ($request->toDate && $request->fromDate == "") { | |
$conditionQuery .= " AND DATE(cm.created_date) <= '".$request->toDate."' "; | |
$limitConditionQuery .= " AND created_date <= '".$request->toDate."' "; | |
} | |
if ($request->toDate == "" && $request->fromDate) { | |
$conditionQuery .= " AND DATE(cm.created_date) >= '".$request->fromDate."' "; | |
$limitConditionQuery .= " AND created_date >= '".$request->fromDate."' "; | |
} | |
if ($request->toDate && $request->toDate) { | |
$conditionQuery .= " AND DATE(cm.created_date) between '".$request->fromDate."' AND '".$request->toDate."' "; | |
$limitConditionQuery .= " AND created_date between '".$request->fromDate."' AND '".$request->toDate."' "; | |
} | |
if ($request->addPagination) { | |
$limitQuery = " INNER JOIN (SELECT id FROM course_materials WHERE is_active=1 $limitConditionQuery | |
ORDER BY updated_date DESC LIMIT $request->startIndex,$request->endIndex ) | |
AS temp ON temp.id = cm.id "; | |
} | |
$request->orderType = strtolower($request->orderType) === 'asc' ? 'ASC' : 'DESC'; | |
$sql = "SELECT cm.id,cm.name,cm.topic,cm.description,cm.is_shared_document,cm.is_private, | |
DATE_FORMAT(CONVERT_TZ(cm.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') as created_date, | |
lr.id as resource_id,lr.context,lr.backend_type,lr.storage_object,lr.path, | |
sa.staffID as staff_id,sa.staffName as staff_name, | |
b.batchID as batch_id,b.batchName as batch_name, | |
s.semID as semester_id,s.semName as semester_name,cm.visitors, | |
su.subjectID as subject_id,su.subjectName as subject_name,su.subjectDesc as subject_description, | |
ps.pseudosubjectID as pseudo_subject_id,ps.subjectName as pseudo_subject_name | |
FROM course_materials cm | |
INNER JOIN lin_resource lr on cm.resource_id = lr.id | |
INNER JOIN staffaccounts sa ON sa.staffID = cm.staff_id | |
LEFT JOIN batches b on cm.batch_id = b.batchID | |
LEFT JOIN semesters s on cm.semester_id = s.semID | |
LEFT JOIN subjects su ON su.subjectID = cm.subject_id | |
LEFT JOIN pseudosubjects ps ON ps.pseudosubjectID = cm.pseudo_subject_id | |
WHERE cm.is_active=1 $conditionQuery ORDER BY cm.updated_date $request->orderType "; | |
$totalSql = "SELECT COUNT(id) as totalRecords FROM course_materials WHERE is_active=1 $limitConditionQuery"; | |
try { | |
$response->documents = $this->executeQueryForList($sql, $this->mapper[CourseMaterialServiceMapper::GET_ALL_COURSE_MATERIALS]); | |
$response->totalRecords = $this->executeQueryForObject($totalSql)->totalRecords; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $response; | |
} | |
/** | |
* @param string $documentId | |
* @return mixed|string | |
* @throws ProfessionalException | |
*/ | |
public function getResourceIdByDocumentId($documentId) | |
{ | |
$sql = "SELECT resource_id as id FROM course_materials WHERE id ='$documentId'"; | |
try { | |
return $this->executeQueryForObject($sql)->id; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Deleting course material | |
* | |
* @param DeleteCourseMaterialRequest $request | |
* @throws ProfessionalException | |
*/ | |
public function deleteCourseMaterial(DeleteCourseMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$sql = "DELETE FROM course_materials WHERE id ='$request->documentId'"; | |
try { | |
$resourceId = $this->getResourceIdByDocumentId($request->documentId); | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid course material details given"); | |
} | |
if (empty($request->staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_STAFF_ID, "Invalid staff details given"); | |
} | |
$removeRequest = new RemoveResourceRequest(); | |
$removeRequest->resourceId = $resourceId; | |
$removeRequest->accessKey = getenv('AWS_ACCESS_KEY'); | |
$removeRequest->secretKey = getenv('AWS_CLIENT_SECRET_KEY'); | |
$this->beginTransaction(); | |
SubjectPlanService::getInstance()->deleteCourseMaterialFromActualPlanByMaterialId($request->documentId); | |
SubjectPlanService::getInstance()->deleteCourseMaterialFromProposesPlanMaterialId($request->documentId); | |
PseudoSubjectPlanService::getInstance()->deletePseudoSubjectActualPlanCourseMaterialsByMaterialId($request->documentId); | |
PseudoSubjectPlanService::getInstance()->deletePseudoSubjectProposedPlanCourseMaterialsByMaterialId($request->documentId); | |
$this->deleteCourseMaterialComments($request->documentId); | |
$this->deleteCourseMaterialLikes($request->documentId); | |
$this->deleteCourseMaterialRatings($request->documentId); | |
$this->executeQuery($sql); | |
if (!$this->checkResourceHasCopied($resourceId)) { | |
ResourceService::getInstance()->removeResource($removeRequest); | |
} | |
$this->commit(); | |
} catch (\Exception $e) { | |
$this->rollback(); | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Checking if the resource has been copied | |
* | |
* @param $resourceId | |
* @return bool | |
* @throws ProfessionalException | |
*/ | |
private function checkResourceHasCopied($resourceId) | |
{ | |
$sql = "SELECT COUNT(id) as totalRecords | |
FROM course_materials | |
WHERE resource_id ='$resourceId'"; | |
try { | |
$count = $this->executeQueryForObject($sql)->totalRecords; | |
return !empty($count); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Making document private or not | |
* @param LockOrUnlockDocumentRequest $request | |
* @throws ProfessionalException | |
*/ | |
public function lockOrUnlockDocument(LockOrUnlockDocumentRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid document details given"); | |
} | |
$sql = "UPDATE course_materials SET is_private=$request->isLocked, updated_by = $request->updatedBy, | |
updated_date = UTC_TIMESTAMP() WHERE id = '$request->documentId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $documentId | |
* @throws ProfessionalException | |
*/ | |
private function deleteCourseMaterialLikes($documentId) | |
{ | |
$sql = "DELETE FROM course_material_likes WHERE course_material_id = '$documentId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getMessage(), $e->getCode()); | |
} | |
} | |
/** | |
* @param $documentId | |
* @throws ProfessionalException | |
*/ | |
private function deleteCourseMaterialComments($documentId) | |
{ | |
$sql = "DELETE FROM course_material_comments WHERE course_material_id = '$documentId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getMessage(), $e->getCode()); | |
} | |
} | |
/** | |
* @param $documentId | |
* @throws ProfessionalException | |
*/ | |
private function deleteCourseMaterialRatings($documentId) | |
{ | |
$sql = "DELETE FROM course_material_ratings WHERE course_material_id = '$documentId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getMessage(), $e->getCode()); | |
} | |
} | |
/** | |
* @param GetCourseMaterialDetailsRequest $request | |
* @return CourseMaterial|object | |
* @throws ProfessionalException | |
*/ | |
public function getCourseMaterialDetails(GetCourseMaterialDetailsRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid document details given"); | |
} | |
$conditionQuery = ""; | |
if (!empty($request->staffId) && !$request->showSharedDocuments) { | |
$conditionQuery .= " AND cm.staff_id =$request->staffId "; | |
} | |
if (!empty($request->batchId)) { | |
$conditionQuery .= " AND cm.batch_id =$request->batchId "; | |
} | |
if (!empty($request->semesterId)) { | |
$conditionQuery .= " AND cm.semester_id =$request->semesterId "; | |
} | |
if (!empty($request->subjectId)) { | |
$conditionQuery .= " AND cm.subject_id =$request->subjectId "; | |
} | |
if (!empty($request->pseudoSubjectId)) { | |
$conditionQuery .= " AND cm.pseudo_subject_id =$request->pseudoSubjectId "; | |
} | |
if (!$request->showPrivateDocuments) { | |
$conditionQuery .= " AND cm.is_private = 0"; | |
} | |
if ($request->showSharedDocuments) { | |
$conditionQuery .= " AND (cm.is_shared_document=1 OR cm.staff_id =$request->staffId) "; | |
} | |
$sql = "SELECT cm.id,cm.name,cm.topic,cm.description,cm.is_shared_document, | |
DATE_FORMAT(CONVERT_TZ(cm.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') as created_date, | |
lr.id as resource_id,lr.context,lr.backend_type,lr.storage_object, | |
sa.staffID as staff_id,sa.staffName as staff_name, | |
b.batchID as batch_id,b.batchName as batch_name, | |
s.semID as semester_id,s.semName as semester_name, | |
su.subjectID as subject_id,su.subjectName as subject_name,su.subjectDesc as subject_description, | |
ps.pseudosubjectID as pseudo_subject_id,ps.subjectName as pseudo_subject_name, | |
cmr.rating,cml.total_likes,cmc.total_comments,cmr.number_of_ratings, | |
IF(cml2.id,true,false) as is_liked | |
FROM course_materials cm | |
INNER JOIN lin_resource lr on cm.resource_id = lr.id | |
INNER JOIN staffaccounts sa ON sa.staffID = cm.staff_id | |
LEFT JOIN batches b on cm.batch_id = b.batchID | |
LEFT JOIN semesters s on cm.semester_id = s.semID | |
LEFT JOIN subjects su ON su.subjectID = cm.subject_id | |
LEFT JOIN pseudosubjects ps ON ps.pseudosubjectID = cm.pseudo_subject_id | |
LEFT JOIN ( | |
SELECT AVG(rate) as rating,COUNT(id) as number_of_ratings,course_material_id | |
FROM course_material_ratings | |
WHERE course_material_id='$request->documentId' | |
) as cmr ON cmr.course_material_id = cm.id | |
LEFT JOIN ( | |
SELECT COUNT(id) as total_likes,course_material_id | |
FROM course_material_likes | |
WHERE course_material_id ='$request->documentId' | |
) as cml ON cml.course_material_id = cm.id | |
LEFT JOIN ( | |
SELECT COUNT(id) as total_comments,course_material_id | |
FROM course_material_comments | |
WHERE course_material_id ='$request->documentId' AND is_active=1 | |
) as cmc on cm.id = cmc.course_material_id | |
LEFT JOIN course_material_likes cml2 ON cm.id = cml2.course_material_id | |
AND cml2.user_id = $request->userId AND cml2.user_type ='$request->userType' | |
LEFT JOIN course_material_ratings cmr2 ON cm.id = cmr2.course_material_id | |
AND cmr2.user_id = $request->userId AND cmr2.user_type ='$request->userType' | |
WHERE cm.id = '$request->documentId' AND cm.is_active=1 $conditionQuery | |
ORDER BY cm.updated_date DESC "; | |
try { | |
$document = $this->executeQueryForObject($sql, false, $this->mapper[CourseMaterialServiceMapper::GET_ALL_COURSE_MATERIALS]); | |
if ($document) { | |
$getUrlRequest = new GetPreSignedUrlRequest(); | |
$getUrlRequest->secretKey = getenv('AWS_CLIENT_SECRET_KEY'); | |
$getUrlRequest->accessKey = getenv('AWS_ACCESS_KEY'); | |
$getUrlRequest->resourceId = $document->resource->id; | |
$url = ResourceService::getInstance()->getPreSignedUrlByResourceId($getUrlRequest); | |
$document->resource->url = $url->url; | |
} | |
return $document; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param GetCourseMaterialDetailsRequest $request | |
* @return Object | |
* @throws ProfessionalException | |
*/ | |
public function getCourseMaterialComments(GetCourseMaterialDetailsRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid document details given"); | |
} | |
$conditionQuery = ""; | |
if (!empty($request->staffId)) { | |
$conditionQuery .= " AND cm.staff_id =$request->staffId "; | |
} | |
if (!empty($request->batchId)) { | |
$conditionQuery .= " AND cm.batch_id =$request->batchId "; | |
} | |
if (!empty($request->semesterId)) { | |
$conditionQuery .= " AND cm.semester_id =$request->semesterId "; | |
} | |
if (!empty($request->subjectId)) { | |
$conditionQuery .= " AND cm.subject_id =$request->subjectId "; | |
} | |
if (!empty($request->pseudoSubjectId)) { | |
$conditionQuery .= " AND cm.pseudo_subject_id =$request->pseudoSubjectId "; | |
} | |
if (!$request->showPrivateDocuments) { | |
$conditionQuery .= " AND cm.is_private = 0"; | |
} | |
if (!empty($request->commentId)) { | |
$conditionQuery .= " AND cmc.id = $request->commentId "; | |
} | |
$staffUser = UserType::STAFF; | |
$studentUser = UserType::STUDENT; | |
$response = []; | |
$sql = "SELECT cmc.id,cmc.comment, | |
IF(sa.staffID,sa.staffName,st.studentName) as userName, | |
IF(sa.staffID,'STAFF','STUDENT') as userType, | |
IF(sa.staffID,sa.staffID,st.studentID) as userId, | |
IF(sa.staffID,sa.myImage,st.myImage) as userImage, | |
DATE_FORMAT(CONVERT_TZ(cmc.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') | |
AS commentedTime, | |
IF(cmc.user_id=$request->userId AND cmc.user_type='$request->userType',true,false) as isDeletable, | |
sa.staffID | |
FROM course_materials cm | |
INNER JOIN course_material_comments cmc on cm.id = cmc.course_material_id | |
LEFT JOIN staffaccounts sa ON sa.staffID = cmc.user_id AND cmc.user_type ='$staffUser' | |
LEFT JOIN studentaccount st ON st.studentID = cmc.user_id AND cmc.user_type ='$studentUser' | |
WHERE cmc.is_active=1 AND cm.id ='$request->documentId' $conditionQuery | |
ORDER BY cmc.updated_date DESC "; | |
try { | |
$results = $this->executeQueryForList($sql); | |
foreach ($results as $result) { | |
if($result->staffID) | |
{ | |
$profilePicture = StaffService::getInstance()->getStaffProfilePic($result->staffID); | |
$imagePath = $profilePicture->docpath; | |
$result->userImage = $imagePath; | |
} | |
$response[] = $result; | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $response; | |
} | |
/** | |
* Posting comments | |
* | |
* @param PostCommentRequest $request | |
* @return Object | |
* @throws ProfessionalException | |
*/ | |
public function postComment(PostCommentRequest $request) | |
{ | |
$comment = null; | |
$sql = "INSERT INTO course_material_comments (course_material_id, user_id, user_type, comment, created_by, | |
created_date, updated_by, updated_date) | |
VALUES ('$request->documentId',$request->userId,'$request->userType','$request->comment',$request->createdBy, | |
UTC_TIMESTAMP(),$request->updatedBy,UTC_TIMESTAMP())"; | |
try { | |
$commentId = $this->executeQueryForObject($sql, true); | |
$getComment = new GetCourseMaterialDetailsRequest(); | |
$getComment->documentId = $request->documentId; | |
$getComment->userType = $request->userType; | |
$getComment->userId = $request->userId; | |
$getComment->commentId = $commentId; | |
return $this->getCourseMaterialComments($getComment)[0]; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Soft deleting comments | |
* | |
* @param DeleteCommentRequest $request | |
* @throws ProfessionalException | |
*/ | |
public function deleteComment(DeleteCommentRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->commentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_COMMENT_ID, "Invalid comment details given"); | |
} | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid document details given"); | |
} | |
if (empty($request->userId) && empty($request->userType)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$sql = "UPDATE course_material_comments SET is_active=0,updated_date=UTC_TIMESTAMP(),updated_by = $request->updatedBy | |
WHERE course_material_id='$request->documentId' AND id = $request->commentId "; | |
/** | |
* Checking anyone can delete anyone's comments. | |
* Default false | |
*/ | |
if (!$request->userHasPermissionToDeleteComment) { | |
$sql .= " AND user_id =$request->userId AND user_type ='$request->userType'"; | |
} | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param CheckUserCourseMaterialPermission $request | |
* @return integer | |
* @throws ProfessionalException | |
*/ | |
public function userHasPermissionToViewThisDocument(CheckUserCourseMaterialPermission $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->userType) || empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$conditionQuery = ""; | |
if ($request->userType === UserType::STUDENT) { | |
if (empty($request->staffId) || ((empty($request->batchId) || empty($request->subjectId)) && empty($request->pseudoSubjectId))) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
} elseif ($request->userType === UserType::STAFF) { | |
if (empty($request->semesterId) || | |
empty($request->staffId) || | |
empty($request->batchId) || | |
(empty($request->subjectId) && empty($request->pseudoSubjectId))) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$conditionQuery .= " AND is_private = 0"; | |
} else { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
if (!empty($request->staffId)) { | |
$conditionQuery .= " AND staff_id =$request->staffId "; | |
} | |
if (!empty($request->batchId)) { | |
$conditionQuery .= " AND batch_id =$request->batchId "; | |
} | |
if (!empty($request->semesterId)) { | |
$conditionQuery .= " AND semester_id =$request->semesterId "; | |
} | |
if (!empty($request->subjectId)) { | |
$conditionQuery .= " AND subject_id =$request->subjectId "; | |
} | |
if (!empty($request->pseudoSubjectId)) { | |
$conditionQuery .= " AND pseudo_subject_id =$request->pseudoSubjectId "; | |
} | |
$sql = "SELECT id FROM course_materials WHERE is_active=1 $conditionQuery"; | |
try { | |
return $this->executeQueryForObject($sql)->id; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param MarkUnMarkUserLikeRequest $request | |
* @return Object|integer | |
* @throws ProfessionalException | |
*/ | |
public function markOrUnmarkUserLike(MarkUnMarkUserLikeRequest $request) | |
{ | |
if (empty($request->documentId) || empty($request->userType) || empty($request->userId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
try { | |
if ($request->isLiked) { | |
$sql = "INSERT INTO course_material_likes (course_material_id, user_id, user_type, created_by, created_date) | |
VALUES ('$request->documentId',$request->userId,'$request->userType',$request->createdBy,UTC_TIMESTAMP())"; | |
return $this->executeQueryForObject($sql, true); | |
} else { | |
$sql = "DELETE FROM course_material_likes WHERE course_material_id = '$request->documentId' | |
AND user_type ='$request->userType' AND user_id =$request->userId"; | |
$this->executeQuery($sql); | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return null; | |
} | |
/** | |
* @param CopyCourseMaterialRequest $request | |
* @return String | |
* @throws ProfessionalException | |
*/ | |
public function copyCourseMaterials(CopyCourseMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->pseudoSubjectId)) { | |
if (empty($request->semesterId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SEMESTER_ID, "Invalid semester details given"); | |
} | |
if (empty($request->batchId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_BATCH_ID, "Invalid batch details given"); | |
} | |
} | |
if (empty($request->staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_STAFF_ID, "Invalid staff details given"); | |
} | |
if (empty($request->documentId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "No document selected for copying"); | |
} | |
if (empty($request->subjectId) && empty($request->pseudoSubjectId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SUBJECT_ID, "Invalid subject details given"); | |
} | |
$request->subjectId = $request->subjectId ? $request->subjectId : "NULL"; | |
$request->pseudoSubjectId = $request->pseudoSubjectId ? $request->pseudoSubjectId : "NULL"; | |
$request->batchId = $request->batchId ? $request->batchId : "NULL"; | |
$request->semesterId = $request->semesterId ? $request->semesterId : "NULL"; | |
try { | |
$newId = SecurityUtils::getRandomString(); | |
$sql = "INSERT INTO course_materials (id, resource_id, name, topic, staff_id, batch_id, semester_id, subject_id, | |
pseudo_subject_id, description, created_by, created_date, updated_by, updated_date) | |
SELECT '$newId',resource_id,name,topic,$request->staffId,$request->batchId,$request->semesterId, | |
$request->subjectId, $request->pseudoSubjectId,description,staff_id,UTC_TIMESTAMP(), | |
$request->staffId,UTC_TIMESTAMP() | |
FROM course_materials WHERE id ='$request->documentId'"; | |
$this->executeQueryForObject($sql); | |
return $newId; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $documentId | |
* @return bool | |
* @throws ProfessionalException | |
*/ | |
public function isDocumentShared($documentId) | |
{ | |
$sql = "SELECT id FROM course_materials | |
WHERE is_shared_document=1 AND is_active=1 AND id= '$documentId'"; | |
try { | |
return $this->executeQueryForObject($sql)->id ? true : false; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param GetCourseMaterialRequest $request | |
* @return array|object | |
* @throws ProfessionalException | |
*/ | |
public function getCourseMaterialsBySbsId(GetCourseMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->sbsId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_SBS_ID, "Invalid request sent"); | |
} | |
if (empty($request->accessKey) || empty($request->secretKey)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_AWS_KEYS, "Invalid request sent"); | |
} | |
$sql = "SELECT t1.name, t1.resource_id as resourceId, | |
DATE_FORMAT(CONVERT_TZ(t1.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') as createdDate, | |
CONVERT(t1.description USING utf8) as description, | |
CONVERT(t1.topic USING utf8) as topic,t1.visitors | |
FROM course_materials t1 | |
INNER JOIN sbs_relation t2 ON t1.staff_id = t2.staffID AND t1.batch_id = t2.batchID | |
AND t1.subject_id = t2.subjectID AND t1.semester_id = t2.semID | |
WHERE t2.sbsID= " . $request->sbsId; | |
try { | |
$courseMaterials = $this->executeQueryForList($sql); | |
if ($request->generateUrl) { | |
foreach ($courseMaterials as $courseMaterial) { | |
$getRequest = new GetPreSignedUrlRequest(); | |
$getRequest->resourceId = $courseMaterial->resourceId; | |
$getRequest->secretKey = $request->secretKey; | |
$getRequest->accessKey = $request->accessKey; | |
try { | |
$url = ResourceService::getInstance()->getPreSignedUrlByResourceId($getRequest); | |
} catch (\Throwable $th) { | |
$url = new \stdClass(); | |
$url->url = ""; | |
} | |
$courseMaterial->url = $url->url; | |
} | |
} | |
return $courseMaterials; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function getCourseMaterialById($id) | |
{ | |
$id = $this->realEscapeObject($id); | |
$sql = "SELECT t1.name, t1.resource_id as resourceId, | |
DATE_FORMAT(CONVERT_TZ(t1.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') as createdDate, | |
t1.description, t1.topic, sa.staffName, sa.staffID | |
FROM course_materials t1 | |
INNER JOIN sbs_relation t2 ON t1.staff_id = t2.staffID AND t1.batch_id = t2.batchID | |
AND t1.subject_id = t2.subjectID AND t1.semester_id = t2.semID | |
INNER JOIN staffaccounts sa ON sa.staffID=t1.staff_id | |
WHERE t1.id= '$id'"; | |
try { | |
$courseMaterials = $this->executeQueryForObject($sql); | |
return $courseMaterials; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function getVideoContentByVideoId($videoId) | |
{ | |
$videoId = $this->realEscapeObject($videoId); | |
$sql = "SELECT * FROM batch_video_repository where id='$videoId'"; | |
try { | |
return $this->executeQueryForObject($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function getVideoMaterialsBySbsId($request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$where = []; | |
$request->sbsId?$where []= " sbs.sbsID = $request->sbsId ":""; | |
$request->staffId?$where []= " sbs.staffID = $request->staffId ":""; | |
$request = $this->realEscapeObject($request); | |
$sql = "select bvr.id,bvr.title,bvr.url,bvr.description,bvr.keywords,bvr.thumbnail,bvr.batchID,bat.batchName,null as createdDate,null as resourceId | |
from sbs_relation sbs | |
inner join batch_video_repository bvr on bvr.batchID = sbs.batchID and bvr.staffID = sbs.staffID | |
inner join batches bat on bat.batchID = sbs.batchID | |
".($where?" WHERE ".implode(' AND ',$where):"")." | |
group by bvr.id;"; | |
try { | |
return empty($where)?[]:$this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function getUploadedCourseMaterialByTopicId($topicId,$psId) | |
{ | |
$topicId = $this->realEscapeString($topicId); | |
$psId = $this->realEscapeString($psId); | |
$psCond = $psId?" AND pseudo_subject_id = $psId":" AND pseudo_subject_id IS NULL "; | |
$sql = "SELECT id as courseMatId, name, topic, topic_id as topicId | |
from course_materials where topic_id = $topicId $psCond"; | |
try { | |
return $this->executeQueryForList($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
} |