Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 20 |
CRAP | |
0.00% |
0 / 214 |
| AdminService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 20 |
2256.00 | |
0.00% |
0 / 214 |
| __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 |
|||
| enableStaffLogin | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 12 |
|||
| addStaffDepartments | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 14 |
|||
| deleteStaffDepartments | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 8 |
|||
| getTimetableAdminDeptPrivilleges | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
| updateTimeTableAdminDeptPrivilleges | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 25 |
|||
| deleteAllTimetableAdminDeptPrivilleges | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| createAdminType | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| toggleAllowProfileEditById | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| toggleAllowProfileEditALL | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 14 |
|||
| getAdminDetailsById | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 10 |
|||
| getAdminListByMenuItem | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 13 |
|||
| verifyAdminAccountAndFetchDetails | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 17 |
|||
| getAllSupportAdmins | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
| resetPassord | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 13 |
|||
| blockAdmin | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| enableStudentFieldReset | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 11 |
|||
| softDeleteField | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 9 |
|||
| <?php | |
| namespace com\linways\core\ams\professional\service; | |
| use com\linways\core\ams\professional\dto\Admin; | |
| use com\linways\core\ams\professional\dto\SettingsConstents; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| use com\linways\core\ams\professional\dto\LibraryStaffDepartment; | |
| use com\linways\core\ams\professional\mapper\AdminServiceMapper; | |
| use com\linways\core\ams\professional\request\AdminLoginRequest; | |
| class AdminService extends BaseService | |
| { | |
| // /Condition 1 - Presence of a static member variable | |
| private static $_instance = null; | |
| private $mapper = []; | |
| // /Condition 2 - Locked down the constructor | |
| private function __construct() | |
| { | |
| $this->mapper = AdminServiceMapper::getInstance()->getMapper(); | |
| } | |
| // Prevent any oustide instantiation of this class | |
| // /Condition 3 - Prevent any object or instance of that class to be cloned | |
| private function __clone() | |
| { | |
| } | |
| // Prevent any copy of this object | |
| // /Condition 4 - Have a single globally accessible static method | |
| public static function getInstance() | |
| { | |
| if (!is_object(self::$_instance)) // or if( is_null(self::$_instance) ) or if( self::$_instance == null ) | |
| self::$_instance = new self (); | |
| return self::$_instance; | |
| } | |
| /** | |
| * method for checking enableStaffLogin from admin side | |
| * | |
| * @param int $adminTypeId | |
| * @return boolean | |
| * @throws ProfessionalException | |
| */ | |
| public function enableStaffLogin($adminTypeId) | |
| { | |
| $menuItem = NULL; | |
| $enableStaffLogin = false; | |
| try { | |
| $authGroupId = $adminTypeId; | |
| $permission[] = SettingsConstents::ENABLE_STAFF_LOGIN_FROM_ADMIN; | |
| $enableStaffLogin = PermissionService::getInstance()->checkAuthGroupPermission ( $authGroupId, $permission); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return $enableStaffLogin; | |
| } | |
| /** | |
| * add staff associated departments | |
| * | |
| * @param LibraryStaffDepartment $libraryStaffDepartment | |
| * @return \com\linways\base\dto\MySqlResult | |
| * @throws ProfessionalException | |
| */ | |
| public function addStaffDepartments($libraryStaffDepartment) | |
| { | |
| $sql = "INSERT INTO libraryStaffDepartment(staffId,deptId,createdBy,updatedBy,createdDate,updatedDate) VALUES "; | |
| $values = []; | |
| foreach ($libraryStaffDepartment->deptIds as $deptId) { | |
| $values [] = "($libraryStaffDepartment->staffId,$deptId,$libraryStaffDepartment->createdBy,$libraryStaffDepartment->updatedBy,utc_timestamp(),utc_timestamp())"; | |
| } | |
| $sql .= implode(',', $values); | |
| try { | |
| $this->deleteStaffDepartments($libraryStaffDepartment->staffId); | |
| return $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * delete staff associated departments | |
| * | |
| * @param int $staffId | |
| * @return \com\linways\base\dto\MySqlResult | |
| * @throws ProfessionalException | |
| */ | |
| public function deleteStaffDepartments($staffId) | |
| { | |
| $sql = "DELETE FROM libraryStaffDepartment WHERE staffId=$staffId"; | |
| try { | |
| return $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * get timetable admin dept privilleges | |
| * | |
| * @param int $adminTypeId | |
| * @return array $deptPrivilleges | |
| */ | |
| public function getTimetableAdminDeptPrivilleges($adminTypeId) | |
| { | |
| $deptPrivilleges = []; | |
| $adminTypeId = $this->realEscapeString($adminTypeId); | |
| $sql = "select * FROM timtable_admin_dept_privilleges WHERE adminTypeId=$adminTypeId"; | |
| try { | |
| $deptPrivilleges = $this->executeQueryForList($sql, $this->mapper [AdminServiceMapper::GETTIMTABLEADMINDEPTPRIVILLEGES]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return $deptPrivilleges; | |
| } | |
| /** | |
| * Method for updating admin dept privilleges | |
| * | |
| * @param array $deptIds | |
| * @param int $adminTypeId | |
| * @param int $uId | |
| * - logged in user id | |
| */ | |
| public function updateTimeTableAdminDeptPrivilleges($deptIds, $adminTypeId, $uId) | |
| { | |
| $adminTypeId = $this->realEscapeString($adminTypeId); | |
| $uId = $this->realEscapeString($uId); | |
| //Delete all existing privilleges | |
| $this->deleteAllTimetableAdminDeptPrivilleges($adminTypeId); | |
| if (!empty ($deptIds)) { | |
| $sql = "INSERT INTO timtable_admin_dept_privilleges(deptId,adminTypeId,createdBy,updatedBy,createdDate,updatedDate) VALUES "; | |
| $values = null; | |
| foreach ($deptIds as $deptId) { | |
| $deptId = $this->realEscapeString($deptId); | |
| if (empty ($values)) { | |
| $values .= " ($deptId,$adminTypeId,$uId,$uId,utc_timestamp(),utc_timestamp() )"; | |
| } else { | |
| $values .= " , ($deptId,$adminTypeId,$uId,$uId,utc_timestamp(),utc_timestamp() )"; | |
| } | |
| } | |
| if (!empty ($values)) { | |
| $sql .= $values; | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| } | |
| } | |
| /** | |
| * Delete all timetable admin dept privilleges | |
| * @param int $adminTypeId | |
| * @throws ProfessionalException | |
| */ | |
| public function deleteAllTimetableAdminDeptPrivilleges($adminTypeId) | |
| { | |
| $adminTypeId = $this->realEscapeString($adminTypeId); | |
| $sql = "DELETE FROM timtable_admin_dept_privilleges WHERE adminTypeId = $adminTypeId"; | |
| try { | |
| $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Create Admin Type | |
| * @param string $admintypeName | |
| * @return id | |
| * @throws ProfessionalException | |
| */ | |
| public function createAdminType($admintypeName) | |
| { | |
| $sql = "INSERT INTO admin_privilege_type(admintypeName) VALUES ( '$admintypeName')"; | |
| try { | |
| return $this->executeQueryForObject($sql, TRUE); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return null; | |
| } | |
| /** | |
| * Allow staff to edit their profile | |
| * @param int $admintypeName | |
| * @return id | |
| * @throws ProfessionalException | |
| * @author Vishnu | |
| */ | |
| public function toggleAllowProfileEditById($staffId) | |
| { | |
| $sql = "UPDATE staffaccounts SET allowProfileEdit = IF (allowProfileEdit = 0, 1, 0) WHERE staffID = " . $staffId . ""; | |
| try { | |
| return $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return null; | |
| } | |
| /** | |
| * Allow staff to edit their profile | |
| * @param int $admintypeName | |
| * @return id | |
| * @throws ProfessionalException | |
| * @author Vishnu | |
| */ | |
| public function toggleAllowProfileEditALL($staffId, $ischecked) | |
| { | |
| $staffIds = implode(',', $staffId); | |
| if ($ischecked == 1) { | |
| $sql = "UPDATE staffaccounts SET allowProfileEdit = 1 WHERE staffID in ($staffIds)"; | |
| } else { | |
| $sql = "UPDATE staffaccounts SET allowProfileEdit = 0 WHERE staffID in ($staffIds)"; | |
| } | |
| try { | |
| return $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return null; | |
| } | |
| /** | |
| * Undocumented function | |
| * | |
| * @param [type] $id | |
| * @return void | |
| */ | |
| public function getAdminDetailsById($id) | |
| { | |
| $id = $this->realEscapeString($id); | |
| $sql = "SELECT adminID as id, adminName as name, adminEmail as email,isSupportAdmin FROM adminaccount WHERE adminID=$id"; | |
| try { | |
| $adminDetails = $this->executeQueryForObject($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return $adminDetails; | |
| } | |
| /** | |
| * Undocumented function | |
| * | |
| * @return void | |
| * @throws ProfessionalException | |
| */ | |
| public function getAdminListByMenuItem($menuItem) | |
| { | |
| $menuItem = $this->realEscapeString($menuItem); | |
| $sql = null; | |
| try { | |
| $sql = "SELECT aa.adminId as id,aa.adminName as name,aa.adminEmail as email from adminaccount aa | |
| inner join admin_privileges ap on aa.admintypeID = ap.admintypeID | |
| where ap.menuItems = '$menuItem' and aa.isSupportAdmin=0"; | |
| $adminDetails = $this->executeQueryForList($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $adminDetails; | |
| } | |
| /** | |
| * @param AdminLoginRequest $request | |
| * @return Object|null|Admin | |
| * @throws ProfessionalException | |
| */ | |
| public function verifyAdminAccountAndFetchDetails(AdminLoginRequest $request) | |
| { | |
| $request = $this->realEscapeObject($request); | |
| $response = null; | |
| $sql = "SELECT adminID,adminAccount,adminPassword,adminName,adminEmail,admintypeID | |
| FROM adminaccount WHERE adminPassword='$request->password'"; | |
| if (!empty($request->adminAccount)) { | |
| $sql .= " AND adminAccount='$request->adminAccount' "; | |
| } elseif (!empty($request->email)) { | |
| $sql .= " AND adminEmail='$request->email' "; | |
| } | |
| try { | |
| $response = $this->executeQueryForObject($sql, false, $this->mapper[AdminServiceMapper::GET_ADMIN_DETAILS_MAPPER]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $response; | |
| } | |
| /** | |
| * @param AdminLoginRequest $request | |
| * @return Object|null|Admin | |
| * @throws ProfessionalException | |
| */ | |
| public function getAllSupportAdmins() | |
| { | |
| $response = null; | |
| $sql = "SELECT adminID,adminAccount,adminName,admintypeID | |
| FROM adminaccount WHERE isSupportAdmin = 1 "; | |
| try { | |
| $response = $this->executeQueryForList($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $response; | |
| } | |
| /** | |
| * Reset admin password | |
| * @param $adminId | |
| * @param $adminAccount | |
| * @return $new password | |
| * @throws ProfessionalException | |
| */ | |
| public function resetPassord($adminId,$adminAccount){ | |
| $adminId = $this->realEscapeString($adminId); | |
| $adminAccount = $this->realEscapeString($adminAccount); | |
| $date = date('dmy'); | |
| $newPassword = $date."-".$adminAccount; | |
| $sql = "UPDATE adminaccount SET adminPassword = md5('$newPassword') WHERE adminID = $adminId"; | |
| try { | |
| if($this->executeQuery($sql)){ | |
| return $newPassword; | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Block admin login | |
| * @param $adminId | |
| * @param $status | |
| * @return null | |
| * @throws ProfessionalException | |
| */ | |
| public function blockAdmin($adminId,$status){ | |
| $adminId = $this->realEscapeString($adminId); | |
| $status = $this->realEscapeString($status); | |
| $sql = "UPDATE adminaccount SET is_blocked = $status WHERE adminID = $adminId"; | |
| try { | |
| return $this->executeQuery($sql); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| /** | |
| * Checking enableStudentFieldReset from admin side | |
| * @param int $adminTypeId | |
| * @return boolean | |
| * @throws ProfessionalException | |
| */ | |
| public function enableStudentFieldReset($adminTypeId) | |
| { | |
| $enableStudentFieldReset = false; | |
| try { | |
| $authGroupId = $adminTypeId; | |
| $permission[] = SettingsConstents::ENABLE_STUDENT_FIELDS_RESET_FROM_ADMIN; | |
| $enableStudentFieldReset = PermissionService::getInstance()->checkAuthGroupPermission ( $authGroupId, $permission); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException ($e->getCode(), $e->getMessage()); | |
| } | |
| return $enableStudentFieldReset; | |
| } | |
| function softDeleteField($tableName, $fieldRef, $fieldValue) | |
| { | |
| $sql = "UPDATE " . $tableName . " SET isDeleted = 1 WHERE " . $fieldRef . "='" . $fieldValue . "'"; | |
| try { | |
| $this->executeQuery($sql); | |
| return true; | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| } | |
| } |