Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
CRAP | |
0.00% |
0 / 384 |
| AmsLogService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 14 |
4032.00 | |
0.00% |
0 / 384 |
| __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 / 7 |
|||
| createAmsLog | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 19 |
|||
| getAmsLogDetails | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 23 |
|||
| getAmsLogById | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 27 |
|||
| getAmsLogByType | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 27 |
|||
| getAmsLogByName | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 27 |
|||
| getAmsLogByColumnName | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 26 |
|||
| getAmsLogByUserType | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 26 |
|||
| getAmsLogByUserID | |
0.00% |
0 / 1 |
6.00 | |
0.00% |
0 / 26 |
|||
| updateAmsLog | |
0.00% |
0 / 1 |
506.00 | |
0.00% |
0 / 77 |
|||
| updateAmsLogByCreatedAt | |
0.00% |
0 / 1 |
56.00 | |
0.00% |
0 / 47 |
|||
| updateAmsLogById | |
0.00% |
0 / 1 |
72.00 | |
0.00% |
0 / 47 |
|||
| <?php | |
| namespace com\linways\core\ams\professional\service; | |
| use com\linways\core\ams\professional\dto\AmsLog; | |
| use com\linways\core\ams\professional\exception\ProfessionalException; | |
| use com\linways\core\ams\professional\mapper\AmsLogServiceMapper; | |
| use com\linways\core\ams\professional\util\UserUtil; | |
| use Exception; | |
| /** | |
| * | |
| * @Date 20/07/20 | |
| * @author Joel M John | |
| */ | |
| class AmsLogService extends BaseService | |
| { | |
| /** | |
| * Presence of a static member variable | |
| * | |
| * @var null | |
| */ | |
| private static $_instance = null; | |
| /** | |
| * Mapper variable | |
| * @var array | |
| */ | |
| private $mapper = []; | |
| /** | |
| * Initialise mapper, logger, hooks here | |
| * | |
| * | |
| */ | |
| private function __construct() | |
| { | |
| $this->mapper = AmsLogServiceMapper::getInstance()->getMapper(); | |
| } | |
| /** | |
| * Prevent any object or instance of that class to be cloned | |
| */ | |
| private function __clone() | |
| { | |
| } | |
| /** | |
| * Have a single globally accessible static method | |
| * | |
| * @return AmsLogService|null | |
| */ | |
| 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; | |
| } | |
| /** | |
| * Creating AMS log | |
| * @param Object $amsLog | |
| * @return Boolean | |
| * @throws ProfessionalException | |
| */ | |
| public function createAmsLog($amsLog) | |
| { | |
| list($userType,$userID) = UserUtil::getAdminUserTypeAndId(); | |
| try { | |
| if ($amsLog->type == NULL || $amsLog->name == NULL ||$amsLog->time == NULL || $amsLog->entityID == NULL) { | |
| throw new Exception("Fields cannot be NULL!"); | |
| } | |
| $activities = array_filter((array) $amsLog, function($value) { //filter null objects | |
| return !is_null($value) && $value !== ''; | |
| }); | |
| $activities = json_encode($activities); | |
| $sql = "INSERT INTO ams_log(activities, user_id, user_type) | |
| VALUES('$activities','$userID','$userType')"; | |
| if($this->executeQueryForObject($sql,true)) { | |
| return true; | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return false; | |
| } | |
| /** | |
| * Select entire AMS log details | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogDetails() | |
| { | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM | |
| ams_log"; | |
| $result = $this->executeQueryForList($sql, $this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Select AMS log details by Id | |
| * @param Int $id | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogById($id) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->id = $id; | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM | |
| ams_log | |
| WHERE | |
| id = '$amsLog->id'"; | |
| $result = $this->executeQueryForList($sql,$this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Select AMS log details by Type | |
| * @param Object $amsObj | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogByType($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->type = $amsObj->type; | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM | |
| ams_log | |
| WHERE | |
| JSON_EXTRACT(activities, '$.type') = '$amsLog->type'"; | |
| $result = $this->executeQueryForList($sql,$this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Select AMS log details by Name | |
| * @param Object $amsObj | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogByName($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->name = $amsObj->name; | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM | |
| ams_log | |
| WHERE | |
| JSON_EXTRACT(activities, '$.name') = '$amsLog->name'"; | |
| $result = $this->executeQueryForList($sql,$this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Select AMS log details by ColumnName | |
| * @param object $amsObj | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogByColumnName($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->columnName = $amsObj->columnName; | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM ams_log | |
| WHERE | |
| JSON_EXTRACT(activities, '$.columnName') = '$amsLog->columnName'"; | |
| $result = $this->executeQueryForList($sql,$this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Select AMS log details by UserType | |
| * @param object $amsObj | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogByUserType($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->user_type = $amsObj->user_type; | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM ams_log | |
| WHERE | |
| user_type = '$amsLog->user_type'"; | |
| $result = $this->executeQueryForList($sql,$this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Select AMS log details by UserID | |
| * @param Integer $id | |
| * @return result AmsLogDetails | |
| * @throws ProfessionalException | |
| */ | |
| public function getAmsLogByUserID($id) | |
| { | |
| //$id = SecurityUtils::getRandomString(); | |
| //list($userType,$userID) = UserUtil::getUserTypeAndId(); | |
| $amsLog = new AmsLog(); | |
| $amsLog->user_id = $id; | |
| try { | |
| $sql = "SELECT id, | |
| JSON_EXTRACT(activities, '$.type') AS type, | |
| JSON_EXTRACT(activities, '$.name') AS name, | |
| JSON_EXTRACT(activities, '$.columnName') AS columnName, | |
| JSON_EXTRACT(activities, '$.fromValue') AS fromValue, | |
| JSON_EXTRACT(activities, '$.toValue') AS toValue, | |
| JSON_EXTRACT(activities, '$.entityName') AS entityName, | |
| JSON_EXTRACT(activities, '$.entityID') AS entityID, | |
| JSON_EXTRACT(activities, '$.message') AS message, | |
| JSON_EXTRACT(activities, '$.time') AS time, | |
| user_id, | |
| user_type, | |
| created_at | |
| FROM ams_log | |
| WHERE | |
| user_id = '$amsLog->user_id'"; | |
| $result = $this->executeQueryForList($sql,$this->mapper [AmsLogServiceMapper::SEARCH_AMS_LOG]); | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return $result; | |
| } | |
| /** | |
| * Update only selected Columns in AMS log details | |
| * @param Object $amsObj | |
| * @return Boolean | |
| * @throws ProfessionalException | |
| */ | |
| public function updateAmsLog($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->id = $amsObj->id; | |
| $amsLog->type = $amsObj->type; | |
| $amsLog->name = $amsObj->name; | |
| $amsLog->columnName = $amsObj->columnName; | |
| $amsLog->fromValue = $amsObj->fromValue; | |
| $amsLog->toValue = $amsObj->toValue; | |
| $amsLog->message = $amsObj->message; | |
| $amsLog->time = $amsObj->time; | |
| $amsLog->user_id = $amsObj->user_id; | |
| $amsLog->user_type = $amsObj->user_type; | |
| try { | |
| $sql = "UPDATE ams_log | |
| SET | |
| activities = JSON_SET(activities | |
| "; | |
| $activityExist = 0; //flag | |
| if($amsLog->type){ | |
| $sql .=", '$.type','$amsLog->type' "; | |
| $activityExist = 1; | |
| } | |
| if($amsLog->name){ | |
| $sql .=", '$.name','$amsLog->name' "; | |
| $activityExist = 1; | |
| } | |
| if($amsLog->columnName){ | |
| $sql .=", '$.columnName','$amsLog->columnName' "; | |
| $activityExist = 1; | |
| } | |
| if($amsLog->fromValue){ | |
| $sql .=", '$.fromValue','$amsLog->fromValue' "; | |
| $activityExist = 1; | |
| } | |
| if($amsLog->toValue){ | |
| $sql .=", '$.toValue','$amsLog->toValue' "; | |
| $activityExist = 1; | |
| } | |
| if($amsLog->message){ | |
| $sql .=", '$.message','$amsLog->message' "; | |
| $activityExist = 1; | |
| } | |
| if($amsLog->time){ | |
| $sql .=", '$.time','$amsLog->time' "; | |
| $activityExist = 1; | |
| } | |
| if($activityExist == 1){ | |
| $sql .= " )"; | |
| } | |
| if($activityExist == 0){ | |
| $sql = "UPDATE ams_log SET "; | |
| } | |
| $sqlConditionFlag = 0; //flag if more conditions exist for update | |
| if($amsLog->user_id && $activityExist ==1){ | |
| $sql .=", user_id = '$amsLog->user_id' " ; | |
| $sqlConditionFlag = 1; | |
| }elseif($amsLog->user_id && $activityExist ==0){ | |
| $sql .=" user_id = '$amsLog->user_id' " ; | |
| $sqlConditionFlag = 1; | |
| } | |
| if($amsLog->user_type && $sqlConditionFlag ==1){ | |
| $sql .= ", user_type = '$amsLog->user_type' "; | |
| }elseif($amsLog->user_type && $activityExist == 1 && $sqlConditionFlag == 0 ){ | |
| $sql .= "AND user_type = '$amsLog->user_type' "; | |
| } | |
| elseif($amsLog->user_type){ | |
| $sql .= "user_type = '$amsLog->user_type' "; | |
| } | |
| $sql .= "WHERE id ='$amsLog->id' "; | |
| if($this->executeQueryForObject($sql,true)){ | |
| return true; | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return false; | |
| } | |
| /** | |
| * Update AMS log details by CreatedAt | |
| * @param Object $amsObj | |
| * @return Boolean | |
| * @throws ProfessionalException | |
| */ | |
| public function updateAmsLogByCreatedAt($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->id = $amsObj->id; | |
| $amsLog->type = $amsObj->type; | |
| $amsLog->name = $amsObj->name; | |
| $amsLog->columnName = $amsObj->columnName; | |
| $amsLog->fromValue = $amsObj->fromValue; | |
| $amsLog->toValue = $amsObj->toValue; | |
| $amsLog->message = $amsObj->message; | |
| $amsLog->time = $amsObj->time; | |
| $amsLog->user_id = $amsObj->user_id; | |
| $amsLog->user_type = $amsObj->user_type; | |
| $amsLog->created_at = $amsObj->created_at; | |
| try { | |
| if ($amsLog->type == NULL || $amsLog->name == NULL||$amsLog->columnName == NULL || | |
| $amsLog->time == NULL) { | |
| throw new Exception("Fields cannot be NULL!"); | |
| } | |
| $sql = "UPDATE ams_log | |
| SET | |
| activities = JSON_SET(activities, | |
| '$.type', | |
| '$amsLog->type', | |
| '$.name', | |
| '$amsLog->name', | |
| '$.columnName', | |
| '$amsLog->columnName', | |
| '$.fromValue', | |
| '$amsLog->fromValue', | |
| '$.toValue', | |
| '$amsLog->toValue', | |
| '$.message', | |
| '$amsLog->message', | |
| '$.time', | |
| '$amsLog->time'), | |
| user_id = '$amsLog->user_id', | |
| user_type = '$amsLog->user_type' | |
| WHERE | |
| created_at = '$amsLog->created_at' "; | |
| if($this->executeQueryForObject($sql,true)){ | |
| return true; | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return false; | |
| } | |
| /** | |
| * Update AMS log details by Id | |
| * @param Object $amsObj | |
| * @return Boolean | |
| * @throws ProfessionalException | |
| */ | |
| public function updateAmsLogById($amsObj) | |
| { | |
| $amsLog = new AmsLog(); | |
| $amsLog->id = $amsObj->id; | |
| $amsLog->type = $amsObj->type; | |
| $amsLog->name = $amsObj->name; | |
| $amsLog->columnName = $amsObj->columnName; | |
| $amsLog->fromValue = $amsObj->fromValue; | |
| $amsLog->toValue = $amsObj->toValue; | |
| $amsLog->message = $amsObj->message; | |
| $amsLog->time = $amsObj->time; | |
| $amsLog->user_id = $amsObj->user_id; | |
| $amsLog->user_type = $amsObj->user_type; | |
| $amsLog->created_at = $amsObj->created_at; | |
| try { | |
| if ($amsLog->id == NULL || $amsLog->type == NULL || $amsLog->name == NULL||$amsLog->columnName == NULL || | |
| $amsLog->time == NULL) { | |
| throw new Exception("Fields cannot be NULL!"); | |
| } | |
| $sql = "UPDATE ams_log | |
| SET | |
| activities = JSON_SET(activities, | |
| '$.type', | |
| '$amsLog->type', | |
| '$.name', | |
| '$amsLog->name', | |
| '$.columnName', | |
| '$amsLog->columnName', | |
| '$.fromValue', | |
| '$amsLog->fromValue', | |
| '$.toValue', | |
| '$amsLog->toValue', | |
| '$.message', | |
| '$amsLog->message', | |
| '$.time', | |
| '$amsLog->time'), | |
| user_id = '$amsLog->user_id', | |
| user_type = '$amsLog->user_type' | |
| WHERE | |
| id = '$amsLog->id' "; | |
| if($this->executeQueryForObject($sql,true)){ | |
| return true; | |
| } | |
| } catch (\Exception $e) { | |
| throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
| } | |
| return false; | |
| } | |
| } |