Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 13 |
CRAP | |
0.00% |
0 / 229 |
NotificationSettingsService | |
0.00% |
0 / 1 |
|
0.00% |
0 / 13 |
1806.00 | |
0.00% |
0 / 229 |
__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 |
|||
addUserSettings | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 3 |
|||
addGlobalSettings | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 14 |
|||
updateGlobalSettings | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
|||
updateCustomValueSettingsInGlobalSettingsAndScheduler | |
0.00% |
0 / 1 |
42.00 | |
0.00% |
0 / 40 |
|||
updateCustomValueSettingsInGlobalSettingsAndSchedulerForNotificationsAboutUnmarkedAttendance | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 38 |
|||
updateCustomValueSettingsInGlobalSettingsAndSchedulerForUnmarkedHourReminder | |
0.00% |
0 / 1 |
20.00 | |
0.00% |
0 / 32 |
|||
updateSchedulerForTimetableReminderSms | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 31 |
|||
updateCustomValueSettingsInGlobalSettings | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 12 |
|||
getAllGlobalSettings | |
0.00% |
0 / 1 |
12.00 | |
0.00% |
0 / 14 |
|||
getSingleGlobalSettings | |
0.00% |
0 / 1 |
30.00 | |
0.00% |
0 / 21 |
<?php | |
namespace com\linways\core\ams\professional\service\notification; | |
use com\linways\core\ams\professional\constant\SchedulerCodesConstant; | |
use com\linways\core\ams\professional\exception\ProfessionalException; | |
use com\linways\core\ams\professional\mapper\notification\NotificationSettingsServiceMapper; | |
use com\linways\core\ams\professional\request\notification\GetGlobalSettingsRequest; | |
use com\linways\core\ams\professional\service\BaseService; | |
use com\linways\nucleus\core\service\SchedulerService; | |
class NotificationSettingsService 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 = NotificationSettingsServiceMapper::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; | |
} | |
/** | |
* [addUserSettings description] | |
* @param [type] $userSettingsList [description] | |
*/ | |
public function addUserSettings($userSettingsList) | |
{ | |
$sql = ""; | |
} | |
/** | |
* [addGlobalSettings description] | |
* @param [type] $globalSettingsList [description] | |
*/ | |
public function addGlobalSettings($globalSettingsList) | |
{ | |
$sql = ""; | |
$globalSettingsList = $this->realEscapeArray($globalSettingsList); | |
$sql = "INSERT INTO `notification_settings_global` (`context`, `feature`, `name`, `push_notification_enabled`, `native_enabled`, `email_enabled`, `sms_enabled`, `created_by`, `updated_by`, `created_date`, `updated_date`) VALUES "; | |
foreach ($globalSettingsList as $globalSettings) { | |
$sql .= "('$globalSettings->context', '$globalSettings->feature', '$globalSettings->name', '$globalSettings->pushNotificationEnabled', '$globalSettings->nativeEnabled', '$globalSettings->emailEnabled', '$globalSettings->smsEnabled', '$globalSettings->createdBy', '$globalSettings->updatedBy', UTC_TIMESTAMP(), UTC_TIMESTAMP()),"; | |
} | |
$sql = rtrim($sql, ","); | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* [addGlobalSettings description] | |
* @param [type] $globalSettingsList [description] | |
*/ | |
public function updateGlobalSettings($globalSettingsList) | |
{ | |
$sql = ""; | |
$globalSettingsList = $this->realEscapeArray($globalSettingsList); | |
foreach ($globalSettingsList as $globalSettings) { | |
$sql .= "UPDATE notification_settings_global SET native_enabled = $globalSettings->nativeEnabled, push_notification_enabled = '$globalSettings->pushNotificationEnabled', email_enabled = '$globalSettings->emailEnabled', sms_enabled = '$globalSettings->smsEnabled' WHERE id = $globalSettings->id;"; | |
} | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* | |
* @param unknown $globalSettingsList | |
* @throws ProfessionalException | |
* @author gadheyan | |
*/ | |
public function updateCustomValueSettingsInGlobalSettingsAndScheduler($globalSettingsList) | |
{ | |
$sql = ""; | |
$globalSettingsList = $this->realEscapeArray($globalSettingsList); | |
foreach ($globalSettingsList as $globalSettings) { | |
$sql .= "UPDATE notification_settings_global SET custom_settings_value = '" . json_encode($globalSettings->customSettingsValue) . "' WHERE id=$globalSettings->id;"; | |
} | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
try { | |
$schedule = new \stdClass(); | |
$schedule->params = []; | |
$schedule->method = "com\\linways\\core\\ams\\professional\\service\\notification\\NotificationHelperService::sendSmsForTodaysUnmarkedFaculty"; | |
$schedule->params["command"] = 'EXECUTE SERVICE'; | |
$schedule->params["taskParams"] = []; | |
$schedule->params["taskParams"]["className"] = "com\\\\linways\\\\core\\\\ams\\\\professional\\\\service\\\\notification\\\\NotificationHelperService"; | |
$schedule->params["taskParams"]["methodName"] = "sendSmsForTodaysUnmarkedFaculty"; | |
$schedule->params["taskParams"]["methodParams"] = []; | |
$timeForSchedule = explode(':', $globalSettings->customSettingsValue['time']); | |
$hour = $timeForSchedule[0]; | |
$minute = $timeForSchedule[1]; | |
$schedule->frequency = "$minute $hour" . " * * *"; | |
$schedule->code = SchedulerCodesConstant::SEND_SMS_TO_ATTENDANCE_UNMARKED_FACULTY; | |
$schedule->code .= "_" . $GLOBALS['COLLEGE_CODE']; | |
try { | |
SchedulerService::getInstance()->deleteScheduledTaskByCode($schedule->code); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
try { | |
$schedule->id = SchedulerService::getInstance()->addTask($schedule); | |
SchedulerService::getInstance()->updateNextExecution($schedule); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} catch (\Exception $e) { | |
} | |
} | |
public function updateCustomValueSettingsInGlobalSettingsAndSchedulerForNotificationsAboutUnmarkedAttendance($globalSettings) | |
{ | |
$sql = ""; | |
$globalSettings = $this->realEscapeObject($globalSettings); | |
$sql = "UPDATE notification_settings_global SET custom_settings_value = '" . json_encode($globalSettings->customSettingsValue) . "' WHERE id=$globalSettings->id;"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
try { | |
$schedule = new \stdClass(); | |
$schedule->params = []; | |
$schedule->method = "com\\linways\\core\\ams\\professional\\service\\notification\\ScheduledNotifications::unmarkedAttendanceReminder"; | |
$schedule->params["command"] = 'EXECUTE SERVICE'; | |
$schedule->params["taskParams"] = []; | |
$schedule->params["taskParams"]["className"] = "com\\\\linways\\\\core\\\\ams\\\\professional\\\\service\\\\notification\\\\ScheduledNotifications"; | |
$schedule->params["taskParams"]["methodName"] = "unmarkedAttendanceReminder"; | |
$schedule->params["taskParams"]["methodParams"] = []; | |
$timeForSchedule = explode(':', $globalSettings->customSettingsValue['time']); | |
$hour = $timeForSchedule[0]; | |
$minute = $timeForSchedule[1]; | |
$schedule->frequency = "$minute $hour" . " " . $globalSettings->customSettingsValue['dates'] . " * *"; | |
$schedule->code = SchedulerCodesConstant::SEND_NOTIFICATIONS_ABOUT_UNMARKED_ATTENDANCE; | |
$schedule->code .= "_" . $GLOBALS['COLLEGE_CODE']; | |
try { | |
SchedulerService::getInstance()->deleteScheduledTaskByCode($schedule->code); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
try { | |
$schedule->id = SchedulerService::getInstance()->addTask($schedule); | |
SchedulerService::getInstance()->updateNextExecution($schedule); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} catch (\Exception $e) { | |
} | |
} | |
public function updateCustomValueSettingsInGlobalSettingsAndSchedulerForUnmarkedHourReminder($globalSettings) | |
{ | |
$sql = ""; | |
$globalSettings = $this->realEscapeObject($globalSettings); | |
$sql = "UPDATE notification_settings_global SET custom_settings_value = '" . addslashes(json_encode($globalSettings->customSettingsValue)) . "' WHERE id=$globalSettings->id;"; | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
$schedule = new \stdClass(); | |
$schedule->params = []; | |
$schedule->method = "com\\linways\\core\\ams\\professional\\service\\notification\\ScheduledNotifications::unmarkedHourDetails"; | |
$schedule->params["command"] = 'EXECUTE SERVICE'; | |
$schedule->params["taskParams"] = []; | |
$schedule->params["taskParams"]["className"] = "com\\\\linways\\\\core\\\\ams\\\\professional\\\\service\\\\notification\\\\ScheduledNotifications"; | |
$schedule->params["taskParams"]["methodName"] = "unmarkedHourDetails"; | |
$schedule->params["taskParams"]["methodParams"] = []; | |
$schedule->frequency = "00 00 " . $globalSettings->customSettingsValue['date'] . " * *"; | |
$schedule->code = SchedulerCodesConstant::SEND_NOTIFICATIONS_ABOUT_UNMARKED_HOUR_REMINDER; | |
$schedule->code .= "_" . $GLOBALS['COLLEGE_CODE']; | |
try { | |
SchedulerService::getInstance()->deleteScheduledTaskByCode($schedule->code); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
try { | |
$schedule->id = SchedulerService::getInstance()->addTask($schedule); | |
SchedulerService::getInstance()->updateNextExecution($schedule); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function updateSchedulerForTimetableReminderSms($deleteScheduler) | |
{ | |
try { | |
$schedule = new \stdClass(); | |
$schedule->params = []; | |
$schedule->method = "com\\linways\\core\\ams\\professional\\service\\notification\\ScheduledNotifications::timeTableReminderSms"; | |
$schedule->params["command"] = 'EXECUTE SERVICE'; | |
$schedule->params["taskParams"] = []; | |
$schedule->params["taskParams"]["className"] = "com\\\\linways\\\\core\\\\ams\\\\professional\\\\service\\\\notification\\\\ScheduledNotifications"; | |
$schedule->params["taskParams"]["methodName"] = "timeTableReminderSms"; | |
$schedule->params["taskParams"]["methodParams"] = []; | |
$schedule->frequency = "00 00 * * 0";//Every Sunday at 00 | |
$schedule->code = SchedulerCodesConstant::SEND_TIMETABLE_REMINDER_SMS; | |
$schedule->code .= "_" . $GLOBALS['COLLEGE_CODE']; | |
if ($deleteScheduler) { | |
try { | |
SchedulerService::getInstance()->deleteScheduledTaskByCode($schedule->code); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} else { | |
try { | |
$schedule->id = SchedulerService::getInstance()->addTask($schedule); | |
SchedulerService::getInstance()->updateNextExecution($schedule); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
public function updateCustomValueSettingsInGlobalSettings($globalSettingsList) | |
{ | |
$sql = ""; | |
$globalSettingsList = $this->realEscapeArray($globalSettingsList); | |
foreach ($globalSettingsList as $globalSettings) { | |
$sql .= "UPDATE notification_settings_global SET custom_settings_value = '" . json_encode($globalSettings->customSettingsValue) . "' WHERE id=$globalSettings->id;"; | |
} | |
try { | |
$this->executeQuery($sql); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
/** | |
* [getAllGlobalSettings description] | |
* @param GetGlobalSettingsRequest $globalsettingsRequest [description] | |
* @return [type] [description] | |
*/ | |
public function getAllGlobalSettings() | |
{ | |
$sql = ""; | |
$response = []; | |
$sql = "SELECT id as notification_settings_global_id, name as notification_settings_global_name, description as notification_settings_global_description, notification_type_id as notification_settings_global_notification_type_id, custom_settings_value as notification_settings_global_custom_settings_value, is_custom_settings_flag as notification_settings_global_is_custom_settings_flag, push_notification_enabled as notification_settings_global_push_notification_enabled, native_enabled as notification_settings_global_native_enabled, email_enabled as notification_settings_global_email_enabled, sms_enabled as notification_settings_global_sms_enabled FROM notification_settings_global "; | |
try { | |
$response = $this->executeQueryForList($sql, $this->mapper[NotificationSettingsServiceMapper::GETGLOBALSETTINGS]); | |
foreach ($response as $globalSettings) { | |
$globalSettings->customSettingsValue = json_decode($globalSettings->customSettingsValue); | |
} | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $response; | |
} | |
/** | |
* [getGlobalSettings description] | |
* @param GetGlobalSettingsRequest $globalsettingsRequest [description] | |
* @return [type] [description] | |
*/ | |
public function getSingleGlobalSettings(GetGlobalSettingsRequest $globalsettingsRequest) | |
{ | |
$sql = ""; | |
$response = []; | |
$globalsettingsRequest = $this->realEscapeObject($globalsettingsRequest); | |
if ($globalsettingsRequest->context && $globalsettingsRequest->feature) { | |
$sql = "SELECT id FROM notification_type WHERE context = '$globalsettingsRequest->context' AND feature = '$globalsettingsRequest->feature'"; | |
try { | |
$globalsettingsRequest->notificationTypeId = $this->executeQueryForObject($sql)->id; | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
} | |
$sql = "SELECT id as notification_settings_global_id, name as notification_settings_global_name, description as notification_settings_global_description,custom_settings_value as notification_settings_global_custom_settings_value, notification_type_id as notification_settings_global_notification_type_id, is_custom_settings_flag as notification_settings_global_is_custom_settings_flag, push_notification_enabled as notification_settings_global_push_notification_enabled, native_enabled as notification_settings_global_native_enabled, email_enabled as notification_settings_global_email_enabled, sms_enabled as notification_settings_global_sms_enabled FROM notification_settings_global WHERE notification_type_id = '$globalsettingsRequest->notificationTypeId'"; | |
try { | |
$response = $this->executeQueryForObject($sql, false, $this->mapper[NotificationSettingsServiceMapper::GETGLOBALSETTINGS]); | |
$response->customSettingsValue = json_decode($response->customSettingsValue); | |
} catch (\Exception $e) { | |
throw new ProfessionalException($e->getCode(), $e->getMessage()); | |
} | |
return $response; | |
} | |
} |