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"); | |
| } | |
| } | |
| } |