Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 157 |
GroupMemberService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
1482.00 | |
0.00% |
0 / 157 |
__construct | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
saveMember | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 25 |
|||
validateSaveMemberRequest | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 4 |
|||
insertMember | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 18 |
|||
updateMember | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 18 |
|||
deleteMember | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
|||
moveMemberToTrash | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 13 |
|||
bulkInsertMember | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 30 |
|||
deleteMembersPermanently | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 16 |
|||
searchGroupMembers | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
changeAcademicStatus | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 18 |
<?php | |
namespace com\linways\core\ams\professional\service\academic; | |
use com\linways\base\util\SecurityUtils; | |
use com\linways\base\util\MakeSingletonTrait; | |
use com\linways\core\ams\professional\service\BaseService; | |
use com\linways\core\ams\professional\mapper\academic\GroupMemberServiceMapper; | |
use com\linways\core\ams\professional\request\academic\SearchClusterRequest; | |
use com\linways\core\ams\professional\constant\academic\ClusterTypeConstant; | |
use com\linways\core\ams\professional\constant\academic\StatusConstants; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use com\linways\core\ams\professional\dto\api\Cluster; | |
use com\linways\core\ams\professional\dto\api\GroupMember; | |
class GroupMemberService extends BaseService | |
{ | |
use MakeSingletonTrait; | |
private function __construct() { | |
// $this->mapper = GroupMemberServiceMapper::getInstance()->getMapper(); | |
} | |
/** | |
* Save GroupMembers | |
* @param GroupMembers $member | |
* @return String $id | |
*/ | |
public function saveMember (GroupMember $member) | |
{ | |
$member = $this->realEscapeObject($member); | |
$member->createdBy = $GLOBALS['userId'] ?? $member->createdBy; | |
$member->updatedBy = $GLOBALS['userId'] ?? $member->updatedBy; | |
try{ | |
$this->validateSaveMemberRequest($member); | |
if(!empty($member->id)) | |
{ | |
$member->id = $this->updateMember($member); | |
} | |
else | |
{ | |
$member->id = $this->insertMember($member); | |
} | |
}catch(\Exception $e) { | |
if($e->getCode() !== ProfessionalException::INVALID_PARAMETER && $e->getCode() !== ProfessionalException::EMPTY_PARAMETERS && $e->getCode() !== ProfessionalException::DUPLICATE_ENTRY) { | |
throw new ProfessionalException($e->getCode(),"Failed to save member! Please try again"); | |
} else if ($e->getCode() === ProfessionalException::DUPLICATE_ENTRY) { | |
throw new ProfessionalException (ProfessionalException::DUPLICATE_ENTRY,"Student already exists!"); | |
} else { | |
throw new ProfessionalException ($e->getCode(),$e->getMessage()); | |
} | |
} | |
return $member->id; | |
} | |
/** | |
* Validate Member Request Before Saving | |
* @param GroupMember $member | |
* @return NULL | |
*/ | |
private function validateSaveMemberRequest(GroupMember $member) | |
{ | |
if(empty($member->groupId)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Groups are null! Please choose a groups for member"); | |
} | |
/** | |
* Insert GroupMembers | |
* @param GroupMembers $member | |
* @return String $id | |
*/ | |
private function insertMember(GroupMember $member) | |
{ | |
$properties = !empty($member->properties) ? "'" . json_encode($member->properties) . "'" : "NULL"; | |
$memberQ = !empty($member->member) ? "'" . json_encode($member->member) . "'" : "NULL"; | |
$id = SecurityUtils::getRandomString(); | |
$query = "INSERT INTO `group_members` | |
(`id`, `groups_id`, `members`, `properties`,`created_by`,`updated_by`) | |
VALUES | |
('$id','$member->groupId',$memberQ,$properties,'$member->createdBy','$member->updatedBy') | |
ON DUPLICATE KEY UPDATE | |
`updated_by` = '$member->updatedBy', | |
`properties` = $properties "; | |
try { | |
$this->executeQuery($query); | |
return $id; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* Update GroupMembers | |
* @param GroupMembers $member | |
* @return NULL | |
*/ | |
private function updateMember(GroupMember $member) | |
{ | |
$properties = !empty($member->properties) ? "'" . json_encode($member->properties) . "'" : "NULL"; | |
$memberQ = !empty($member->member) ? "'" . json_encode($member->member) . "'" : "NULL"; | |
$query = "UPDATE | |
`group_members` | |
SET | |
`groups_id` = '$member->groupId', | |
`members` = '$memberQ', | |
`properties` = '$properties', | |
WHERE | |
`id` = '$member->id'"; | |
try { | |
$this->executeQuery($query); | |
return $member->id; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* Delete Group Member (Hard Delete) | |
* @param String $id | |
* @return NULL | |
*/ | |
public function deleteMember($groupId,$id){ | |
$groupId = $this->realEscapeString($groupId); | |
$id = $this->realEscapeString($id); | |
$updatedBy = $GLOBALS['userId']; | |
if(empty($id)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Have some problem, please try again"); | |
$query = "DELETE FROM `group_members` where `groups_id` = '$groupId' and `student_id` = $id;"; | |
try { | |
$this->executeQuery($query); | |
} catch (\Exception $e) { | |
throw new ProfessionalException(ProfessionalException::ERROR_DELETING,"Error deleting member! Please try again"); | |
} | |
} | |
/** | |
* Delete Group Member (Soft Delete) | |
* @param String $id | |
* @return NULL | |
*/ | |
public function moveMemberToTrash($groupId,$id) | |
{ | |
$groupId = $this->realEscapeString($groupId); | |
$id = $this->realEscapeString($id); | |
$updatedBy = $GLOBALS['userId']; | |
if(empty($id)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Have some problem, please try again"); | |
$query = "update group_members set trashed = utc_timestamp() where groups_id = '$groupId' and student_id = $id;"; | |
try { | |
$this->executeQuery($query); | |
} catch (\Exception $e) { | |
throw new ProfessionalException(ProfessionalException::ERROR_DELETING,"Error deleting member! Please try again"); | |
} | |
} | |
/** | |
* Insert GroupMembers | |
*/ | |
public function bulkInsertMember($members) | |
{ | |
if(empty($members->groupId)){ | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Have some problem, please try again"); | |
} | |
try { | |
if(count($members->members)){ | |
$query = "INSERT INTO `group_members` (`id`, `groups_id`, `members`, `properties`, `trashed`, `created_by`, `created_date`, `updated_by`, `updated_date`) | |
SELECT | |
LEFT(MD5(RAND()), 17) AS `id`, | |
'$members->groupId' AS `groups_id`, | |
JSON_OBJECT('studentId',stdp.id) AS `members`, | |
JSON_OBJECT('isFailed',false,'academicStatus','ACTIVE') AS `properties`, | |
null AS `trashed`, | |
'$members->createdBy' AS `created_by`, | |
utc_timestamp() AS `created_date`, | |
'$members->updatedBy' AS `updated_by`, | |
utc_timestamp() AS `updated_date` | |
FROM `student_program_account` stdp | |
INNER JOIN `studentaccount` st ON stdp.student_id = st.studentID | |
WHERE stdp.id IN (".(implode(',',$members->members)).") | |
ON DUPLICATE KEY UPDATE | |
`properties` = JSON_OBJECT('isFailed',false,'academicStatus','ACTIVE'), | |
`updated_by` = '$members->updatedBy', | |
`updated_date` = utc_timestamp();"; | |
$this->executeQuery($query); | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(),$e->getMessage()); | |
} | |
} | |
/** | |
* Delete Group Member (Soft Delete) | |
* @param String $id | |
* @return NULL | |
*/ | |
public function deleteMembersPermanently($groupId,$id = null) | |
{ | |
$groupId = $this->realEscapeString($groupId); | |
$id = $this->realEscapeString($id); | |
$updatedBy = $GLOBALS['userId']; | |
if(empty($groupId)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Have some problem, please try again"); | |
$query = "DELETE FROM `group_members` where `groups_id` = '$groupId' "; | |
if($id){ | |
$query .= " and `student_id` = '$id' "; | |
} | |
try { | |
$this->executeQuery($query); | |
} catch (\Exception $e) { | |
throw new ProfessionalException(ProfessionalException::ERROR_DELETING,"Error deleting member! Please try again"); | |
} | |
} | |
public function searchGroupMembers($request){ | |
return array(); | |
} | |
/** | |
* Update group member status | |
* @param String $id | |
* @return NULL | |
*/ | |
public function changeAcademicStatus($groupId,$id,$status){ | |
$groupId = $this->realEscapeString($groupId); | |
$id = $this->realEscapeString($id); | |
$updatedBy = $GLOBALS['userId']; | |
if(empty($id)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Invalid user, please try again"); | |
if(empty($groupId)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Invalid group, please try again"); | |
if(empty($status)) | |
throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Invalid status, please try again"); | |
$query = "UPDATE `group_members` | |
SET properties = JSON_SET(properties,'$.academicStatus','".$status."') | |
WHERE `groups_id` = '$groupId' AND `student_id` = $id;"; | |
try { | |
$this->executeQuery($query); | |
} catch (\Exception $e) { | |
throw new ProfessionalException(ProfessionalException::ERROR_DELETING,"Error deleting member! Please try again"); | |
} | |
} | |
} |