Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
CRAP | |
0.00% |
0 / 266 |
VideoRepositoryService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
3540.00 | |
0.00% |
0 / 266 |
__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 |
|||
addVideoLink | |
0.00% |
0 / 1 |
210.00 | |
0.00% |
0 / 44 |
|||
deleteVideoMaterial | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 18 |
|||
deleteActualSubjectPlanVideoMaterials | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
deleteProposedSubjectPlanVideoMaterials | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
deletePseudoSubjectActualPlan | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
deletePseudoSubjectProposedPlan | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
deleteVideoFromBatchRepository | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
|||
updateVideoMaterialDetails | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 24 |
|||
isStaffCourseVideoMaterial | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 17 |
|||
getAllVideoCourseMaterials | |
0.00% |
0 / 1 |
156.00 | |
0.00% |
0 / 89 |
|||
getProposedPlanCourseVideoMaterial | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 16 |
<?php | |
namespace com\linways\core\ams\professional\service; | |
use com\linways\base\util\SecurityUtils; | |
use com\linways\core\ams\professional\constant\ResourceContext; | |
use com\linways\core\ams\professional\dto\VideoMaterial; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use com\linways\core\ams\professional\mapper\VideoMaterialServiceMapper; | |
use com\linways\core\ams\professional\request\AddResourceRequest; | |
use com\linways\core\ams\professional\request\AddVideoLinkRequest; | |
use com\linways\core\ams\professional\request\DeleteVideoFromRepositoryRequest; | |
use com\linways\core\ams\professional\request\GetCourseVideoMaterialRequest; | |
use com\linways\core\ams\professional\request\UpdateVideoMaterialRequest; | |
use com\linways\core\ams\professional\response\GetCourseVideoMaterialResponse; | |
/** | |
* | |
* @author jithinvijayan | |
* @Date 30/03/20 | |
*/ | |
class VideoRepositoryService 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 = VideoMaterialServiceMapper::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 VideoRepositoryService|null | |
*/ | |
public static function getInstance() | |
{ | |
if (!is_object(self::$_instance)) | |
self::$_instance = new self (); | |
return self::$_instance; | |
} | |
/** | |
* @param AddVideoLinkRequest $request | |
* @return Object|integer | |
* @throws ProfessionalException | |
*/ | |
public function addVideoLink(AddVideoLinkRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->url) && $request->backEndType != 'VIEWWAY') { | |
throw new ProfessionalException(ProfessionalException::INVALID_URL, "Invalid url given"); | |
} | |
if (empty($request->staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_STAFF_ID, "Invalid staff details given"); | |
} | |
if (empty($request->title)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TITLE, "Invalid url title given"); | |
} | |
if (empty($request->pseudoSubjectId) && empty($request->batchId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$addResourceRequest = new AddResourceRequest(); | |
$addResourceRequest->backendType = $request->backEndType; | |
if ($request->storageObject) { | |
$addResourceRequest->storageObject = json_encode($request->storageObject); | |
} else { | |
$addResourceRequest->storageObject = "{}"; | |
} | |
$addResourceRequest->path = $request->url; | |
$addResourceRequest->createdBy = $request->createdBy; | |
$addResourceRequest->updatedBy = $request->createdBy; | |
$addResourceRequest->context = ResourceContext::VIDEO_MATERIALS; | |
$resourceId = ResourceService::getInstance()->addResources($addResourceRequest); | |
$request->batchId = empty($request->batchId) ? "NULL" : $request->batchId; | |
$request->pseudoSubjectId = empty($request->pseudoSubjectId) ? "NULL" : $request->pseudoSubjectId; | |
$request->subjectId = empty($request->subjectId) ? "NULL" : $request->subjectId; | |
$request->semesterId = empty($request->semesterId) ? "NULL" : $request->semesterId; | |
$request->topicId = $request->topicId?$request->topicId:"NULL"; | |
$id = SecurityUtils::getRandomString(); | |
$sql = "INSERT INTO course_video_materials (id, title, description, resource_id, keywords, thumbnail_url, staff_id, | |
batch_id, subject_id, pseudo_subject_id, semester_id,topic_id,created_by, updated_by, created_date, updated_date) | |
VALUES ('$id','$request->title','$request->description','$resourceId','$request->keywords', | |
'$request->thumbnail',$request->staffId,$request->batchId,$request->subjectId,$request->pseudoSubjectId, | |
$request->semesterId,$request->topicId ,$request->createdBy,$request->updatedBy,UTC_TIMESTAMP(),UTC_TIMESTAMP())"; | |
try { | |
$this->executeQueryForObject($sql); | |
return $id; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $materialId | |
* @throws ProfessionalException | |
*/ | |
public function deleteVideoMaterial($materialId) | |
{ | |
$materialId = $this->realEscapeString($materialId); | |
if (empty($materialId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_BATCH_VIDEO_REPOSITORY_ID, "Invalid video repository details given"); | |
} | |
try { | |
$this->beginTransaction(); | |
# Deleting subject actual plan and video material relation | |
$this->deleteActualSubjectPlanVideoMaterials($materialId); | |
# Deleting subject proposed plan and video material relation | |
$this->deleteProposedSubjectPlanVideoMaterials($materialId); | |
# Deleting pseudo subject actual plan and video material relation | |
$this->deletePseudoSubjectActualPlan($materialId); | |
# Deleting pseudo subject proposed plan and video material relation | |
$this->deletePseudoSubjectProposedPlan($materialId); | |
# Deleting video material permanently | |
$this->deleteVideoFromBatchRepository($materialId); | |
$this->commit(); | |
} catch (\Exception $e) { | |
$this->rollback(); | |
throw new ProfessionalExceptior($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $materialId | |
* @throws ProfessionalException | |
*/ | |
private function deleteActualSubjectPlanVideoMaterials($materialId) | |
{ | |
$sql = "DELETE FROM subject_actual_plan_video_materials | |
WHERE video_repository_id = '$materialId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $materialId | |
* @throws ProfessionalException | |
*/ | |
private function deleteProposedSubjectPlanVideoMaterials($materialId) | |
{ | |
$sql = "DELETE FROM subject_proposed_plan_video_materials | |
WHERE video_repository_id = '$materialId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $materialId | |
* @throws ProfessionalException | |
*/ | |
private function deletePseudoSubjectActualPlan($materialId) | |
{ | |
$sql = "DELETE FROM ps_actual_plan_video_materials | |
WHERE video_repository_id = '$materialId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $materialId | |
* @throws ProfessionalException | |
*/ | |
private function deletePseudoSubjectProposedPlan($materialId) | |
{ | |
$sql = "DELETE FROM ps_proposed_plan_video_materials | |
WHERE video_repository_id = '$materialId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param $id | |
* @throws ProfessionalException | |
*/ | |
private function deleteVideoFromBatchRepository($id) | |
{ | |
$id = $this->realEscapeString($id); | |
if (empty($id)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_BATCH_VIDEO_REPOSITORY_ID, "Invalid batch video details given"); | |
} | |
$sql = "DELETE FROM course_video_materials WHERE id ='$id'"; | |
try { | |
$this->ExecuteQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* @param UpdateVideoMaterialRequest $request | |
* @throws ProfessionalException | |
*/ | |
public function updateVideoMaterialDetails(UpdateVideoMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
if (empty($request->materialId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DOCUMENT_ID, "Invalid video material id"); | |
} | |
if (empty($request->title)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_TITLE, "Invalid title given"); | |
} | |
if (empty($request->description)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_DESCRIPTION, "Invalid description given"); | |
} | |
if (empty($request->keywords)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_KEYWORDS, "Invalid keywords given"); | |
} | |
$sql = "UPDATE course_video_materials | |
SET title ='$request->title',description = '$request->description',keywords='$request->keywords', | |
updated_by =$request->updatedBy,updated_date = UTC_TIMESTAMP(),semester_id = '$request->semesterId',subject_id = '$request->subjectId' | |
WHERE id = '$request->materialId'"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Checking video ownership | |
* | |
* @param $materialId | |
* @param $staffId | |
* @return bool | |
* @throws ProfessionalException | |
*/ | |
public function isStaffCourseVideoMaterial($materialId, $staffId) | |
{ | |
$staffId = (int)$this->realEscapeString($staffId); | |
$materialId = $this->realEscapeString($materialId); | |
if (empty($materialId) || empty($staffId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$sql = "SELECT id FROM course_video_materials | |
WHERE staff_id = $staffId AND id = '$materialId'"; | |
try { | |
$id = $this->executeQueryForObject($sql)->id; | |
if (empty($id)) | |
return true; | |
return false; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* Searching course video materials | |
* | |
* @param GetCourseVideoMaterialRequest $request | |
* @return GetCourseVideoMaterialResponse|Object|VideoMaterial | |
* @throws ProfessionalException | |
*/ | |
public function getAllVideoCourseMaterials(GetCourseVideoMaterialRequest $request) | |
{ | |
$request = $this->realEscapeObject($request); | |
$conditions = $conditions1 = ""; | |
$limitConditions = $limitConditions1 = ""; | |
$limitSql = $limitSql1 = ""; | |
if (!empty($request->materialId)) { | |
$conditions .= " AND cvm.id ='$request->materialId' "; | |
$conditions1 .= " AND cvm.id ='$request->materialId' "; | |
} | |
if (!empty($request->staffId)) { | |
$conditions .= " AND cvm.staff_id = $request->staffId "; | |
$limitConditions .= " AND staff_id = $request->staffId "; | |
$conditions1 .= " AND cvm.staff_id = $request->staffId "; | |
$limitConditions1 .= " AND staff_id = $request->staffId "; | |
} | |
if (!empty($request->pseudoSubjectId)) { | |
$conditions .= " AND cvm.pseudo_subject_id = $request->pseudoSubjectId "; | |
$limitConditions .= " AND pseudo_subject_id = $request->pseudoSubjectId "; | |
$conditions1 .= " AND cvm.pseudo_subject_id = $request->pseudoSubjectId "; | |
$limitConditions1 .= " AND pseudo_subject_id = $request->pseudoSubjectId "; | |
} | |
//if (!empty($request->batchId)) | |
else | |
{ | |
$conditions .= " AND cvm.batch_id = $request->batchId "; | |
$limitConditions .= " AND batch_id = $request->batchId "; | |
$conditions1 .= " AND cvm.batch_id = $request->batchId "; | |
$limitConditions1 .= " AND batch_id = $request->batchId "; | |
} | |
if (!empty($request->subjectId)) { | |
$conditions .= " AND cvm.subject_id = $request->subjectId "; | |
$limitConditions .= " AND subject_id = $request->subjectId "; | |
$conditions1 .= " AND cvm.subject_id IS NULL "; | |
$limitConditions1 .= " AND subject_id IS NULL "; | |
} | |
if (!empty($request->semesterId) && empty($request->pseudoSubjectId)) { | |
$conditions .= " AND cvm.semester_id = $request->semesterId "; | |
$limitConditions .= " AND semester_id = $request->semesterId "; | |
$conditions1 .= " AND cvm.semester_id IS NULL "; | |
$limitConditions1 .= " AND semester_id IS NULL "; | |
} | |
if (!empty($request->keyword)) { | |
$conditions .= " AND cvm.keywords LIKE '%$request->keyword%' "; | |
$limitConditions .= " AND keywords LIKE '%$request->keyword%' "; | |
$conditions1 .= " AND cvm.keywords LIKE '%$request->keyword%' "; | |
$limitConditions1 .= " AND keywords LIKE '%$request->keyword%' "; | |
} | |
if (!empty($request->topicId)) { | |
$conditions .= " AND cvm.topic_id = $request->topicId "; | |
$limitConditions .= " AND topic_id = $request->topicId "; | |
$conditions1 .= " AND cvm.topic_id = $request->topicId "; | |
$limitConditions1 .= " AND topic_id = $request->topicId "; | |
} | |
if (empty($request->materialId)) { | |
$limitSql = " INNER JOIN (SELECT id FROM course_video_materials WHERE 1=1 $limitConditions | |
ORDER BY created_date DESC) as temp ON temp.id =cvm.id "; | |
$limitSql1 = " INNER JOIN (SELECT id FROM course_video_materials WHERE 1=1 $limitConditions1 | |
ORDER BY created_date DESC) as temp ON temp.id =cvm.id "; | |
} | |
$sql = "SELECT cvm.id,cvm.title,cvm.description,cvm.keywords, | |
DATE_FORMAT(CONVERT_TZ(cvm.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') as created_date, | |
sa.staffID as staff_id,sa.staffName as staff_name, | |
b.batchID as batch_id,b.batchName as batch_name, | |
s2.subjectID as subject_id,s2.subjectName as subject_name, | |
ps.pseudosubjectID as pseudo_subject_id,ps.subjectName as pseudo_subject_name, | |
s.semID as semester_id,s.semName as semester_name, | |
lr.id as resource_id,lr.path,lr.backend_type | |
FROM course_video_materials cvm | |
INNER JOIN lin_resource lr on cvm.resource_id = lr.id | |
INNER JOIN staffaccounts sa on cvm.staff_id = sa.staffID | |
LEFT JOIN batches b on cvm.batch_id = b.batchID | |
LEFT JOIN subjects s2 on cvm.subject_id = s2.subjectID | |
LEFT JOIN pseudosubjects ps ON ps.pseudosubjectID =cvm.pseudo_subject_id | |
LEFT JOIN semesters s ON s.semID= cvm.semester_id | |
WHERE 1=1 $conditions "; | |
// $sql1 = "SELECT cvm.id,cvm.title,cvm.description,cvm.keywords, | |
// DATE_FORMAT(CONVERT_TZ(cvm.created_date,'+00:00',@@global.time_zone),'%d-%m-%Y %h:%i:%s %p') as created_date, | |
// sa.staffID as staff_id,sa.staffName as staff_name, | |
// b.batchID as batch_id,b.batchName as batch_name, | |
// s2.subjectID as subject_id,s2.subjectName as subject_name, | |
// ps.pseudosubjectID as pseudo_subject_id,ps.subjectName as pseudo_subject_name, | |
// s.semID as semester_id,s.semName as semester_name, | |
// lr.id as resource_id,lr.path,lr.backend_type | |
// FROM course_video_materials cvm | |
// $limitSql1 | |
// INNER JOIN lin_resource lr on cvm.resource_id = lr.id | |
// INNER JOIN staffaccounts sa on cvm.staff_id = sa.staffID | |
// LEFT JOIN batches b on cvm.batch_id = b.batchID | |
// LEFT JOIN subjects s2 on cvm.subject_id = s2.subjectID | |
// LEFT JOIN pseudosubjects ps ON ps.pseudosubjectID =cvm.pseudo_subject_id | |
// LEFT JOIN semesters s ON s.semID= cvm.semester_id | |
// WHERE 1=1 $conditions1 "; | |
$sql .= " ORDER BY cvm.created_date DESC "; | |
try { | |
if (!empty($request->materialId)) { | |
return $this->executeQueryForObject($sql, false, $this->mapper[VideoMaterialServiceMapper::SEARCH_COURSE_VIDEO_MATERIALS]); | |
} else { | |
$response = new GetCourseVideoMaterialResponse(); | |
$totalSql = "SELECT COUNT(id) as totalRecords FROM course_video_materials WHERE 1=1 $limitConditions"; | |
$response->totalRecords = (int)$this->executeQueryForObject($totalSql)->totalRecords; | |
$response->materials = $this->executeQueryForList($sql, $this->mapper[VideoMaterialServiceMapper::SEARCH_COURSE_VIDEO_MATERIALS]); | |
return $response; | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function getProposedPlanCourseVideoMaterial($topicId) | |
{ | |
$topicId = $this->realEscapeString($topicId); | |
if (empty($topicId)) { | |
throw new ProfessionalException(ProfessionalException::INVALID_REQUEST, "Invalid request sent"); | |
} | |
$sql = "SELECT id as vidematId,title,resource_id,topic_id FROM course_video_materials | |
WHERE topic_id = '$topicId' "; | |
try { | |
$id = $this->executeQueryForObject($sql)->id; | |
if (empty($id)) | |
return true; | |
return false; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
} |