- Renamed public/js/messaging/messageClient.js to public/js/messaging/read.js

- Added new JS public/js/messaging/write.js used in view application/views/system/messages/ajaxWrite.php
- Added new public method write, listReceivedMessages, listSentMessages and sendMessageToOU to controller system/messages/MessageClient.php
- Removed private method _getReceiversByOekurzbz from MessageLib
- Fixed method sendMessageOU of MessageLib
- Added new public method prepareAjaxWrite to model CL/Messages_model
- Fixed method prepareAjaxReadReceived of model CL/Messages_model
- Added new public method prepareAjaxReadSent to model CL/Messages_model
- Changed method CL/Messages_model->_personLog interface
- Added new public method getOrganisationunitsByPersonId to crm/Prestudent_model
- Added new public method getReceivedMessages to model system/Recipient_model
- Changed getReceivedMessages method of model system/Recipient_model
- Changed view system/messages/ajaxRead.php
- Added new view system/messages/ajaxWrite.php
This commit is contained in:
Paolo
2019-06-28 19:01:25 +02:00
parent 27ccd086ac
commit 34dc82766a
11 changed files with 449 additions and 120 deletions
+101 -30
View File
@@ -28,9 +28,10 @@ class Messages_model extends CI_Model
// Loads model MessageToken_model
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
// Loads model Benutzerrolle_model
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
// Loads model Prestudent_model
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
}
//------------------------------------------------------------------------------------------------------------------
@@ -39,20 +40,42 @@ class Messages_model extends CI_Model
/**
*
*/
public function prepareAjaxRead()
public function prepareAjaxWrite()
{
$jsonNestedData = error('Something did not go as it should');
$ouResult = $this->PrestudentModel->getOrganisationunitsByPersonId(getAuthPersonId());
if (isError($ouResult)) show_error('An error occurred while loading this page, please contact the site administrator');
$ouOptions = '<option value="0">Select...</option>';
if (hasData($ouResult))
{
foreach (getData($ouResult) as $ou)
{
$ouOptions .= sprintf("\n".'<option value="%s">%s</option>', $ou->oe_kurzbz, $ou->bezeichnung);
}
}
return array('organisationUnitOptions' => $ouOptions);
}
/**
*
*/
public function prepareAjaxReadReceived()
{
$jsonResult = error('Something did not go as it should');
$loggedUserName = getAuthFirstname().' '.getAuthSurname();
if (isEmptyString($loggedUserName)) $loggedUserName = 'Me';
$receivedMessagesResult = $this->RecipientModel->getReceivedMessages(getAuthPersonId());
$receivedMessagesResult = $this->RecipientModel->getReceivedMessages(
getAuthPersonId(),
$this->config->item(MessageLib::CFG_OU_RECEIVERS)
);
if (isError($receivedMessagesResult)) return $receivedMessagesResult;
$sentMessagesResult = $this->RecipientModel->getSentMessages(getAuthPersonId());
if (isError($sentMessagesResult)) return $sentMessagesResult;
if (hasData($receivedMessagesResult))
{
$jsonArray = array();
@@ -60,41 +83,59 @@ class Messages_model extends CI_Model
foreach (getData($receivedMessagesResult) as $receivedMessage)
{
$jsonRecord = new stdClass();
$jsonRecord->message_id = $receivedMessage->message_id;
$jsonRecord->subject = $receivedMessage->subject;
$jsonRecord->body = $receivedMessage->body;
$jsonRecord->from = $receivedMessage->vorname.' '.$receivedMessage->nachname;
$sentDate = new DateTime($receivedMessage->sent);
$jsonRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonRecord->status = $receivedMessage->status;
if (hasData($sentMessagesResult))
{
$jsonChildrenArray = array();
$jsonArray[] = $jsonRecord;
}
foreach (getData($sentMessagesResult) as $sentMessage)
{
if ($receivedMessage->relationmessage_id == $sentMessage->message_id)
{
$jsonChildrenRecord = new stdClass();
$jsonChildrenRecord->subject = $sentMessage->subject;
$jsonChildrenRecord->from = $loggedUserName;
$sentDate = new DateTime($sentMessage->sent);
$jsonChildrenRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonChildrenRecord->status = $sentMessage->status;
$jsonResult = success(json_encode($jsonArray));
}
$jsonChildrenArray[] = $jsonChildrenRecord;
}
}
return $jsonResult;
}
if (!isEmptyArray($jsonChildrenArray)) $jsonRecord->_children = $jsonChildrenArray;
}
/**
*
*/
public function prepareAjaxReadSent()
{
$jsonResult = error('Something did not go as it should');
$loggedUserName = getAuthFirstname().' '.getAuthSurname();
if (isEmptyString($loggedUserName)) $loggedUserName = 'Me';
$sentMessagesResult = $this->RecipientModel->getSentMessages(getAuthPersonId());
if (isError($sentMessagesResult)) return $sentMessagesResult;
if (hasData($sentMessagesResult))
{
$jsonArray = array();
foreach (getData($sentMessagesResult) as $sentMessage)
{
$jsonRecord = new stdClass();
$jsonRecord->message_id = $sentMessage->message_id;
$jsonRecord->subject = $sentMessage->subject;
$jsonRecord->body = $sentMessage->body;
$jsonRecord->from = $sentMessage->vorname.' '.$sentMessage->nachname;
$sentDate = new DateTime($sentMessage->sent);
$jsonRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonRecord->status = $sentMessage->status;
$jsonArray[] = $jsonRecord;
}
$jsonNestedData = success(json_encode($jsonArray));
$jsonResult = success(json_encode($jsonArray));
}
return $jsonNestedData;
return $jsonResult;
}
/**
@@ -260,7 +301,6 @@ class Messages_model extends CI_Model
if (isError($msgVarsData)) show_error(getData($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
// Adds the organisation unit to each prestudent
@@ -337,6 +377,34 @@ class Messages_model extends CI_Model
return success('Messages sent successfully');
}
/**
* Send a message to an organisation unit
*/
public function sendToOrganisationUnit($receiverOU, $subject, $body)
{
if (isEmptyString($receiverOU)) return error('Not a valid organisation unit');
if (isEmptyString($subject)) return error('Subject is an empty string');
if (isEmptyString($body)) return error('Body is an empty string');
$sender_id = getAuthPersonId();
$message = $this->messagelib->sendMessageOU(
$receiverOU, // receiverPersonId
$subject, // subject
$body, // body
$sender_id // sender_id
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry
$personLog = $this->_personLog($sender_id, $this->config->item(MessageLib::CFG_SYSTEM_PERSON_ID), getData($message)[0], $receiverOU);
if (isError($personLog)) return $personLog;
return success('Messages sent successfully');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods called by controller system/messages/Messages
@@ -447,18 +515,21 @@ class Messages_model extends CI_Model
/**
* Perform a person log after a message is sent
*/
private function _personLog($sender_id, $receiver_id, $message_id)
private function _personLog($sender_id, $receiver_id, $message_id, $receiverOU = null)
{
// In case the message is accessed via ViewMessage controller -> no authentication
// If no authentication is performed then use a hard coded uid
$loggedUserUID = isLogged() ? getAuthUID() : self::NO_AUTH_UID;
$message = 'Message sent from person '.$sender_id.' to '.$receiver_id.', message id: '.$message_id;
if (!isEmptyString($receiverOU)) $message .= ', receiverOU: '.$receiverOU;
return $this->personloglib->log(
$receiver_id,
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$receiver_id.', message id: '.$message_id,
'message' => $message,
'success' => 'true'
),
'kommunikation',
@@ -523,4 +523,20 @@ class Prestudent_model extends DB_Model
}
}
}
/**
* Get organisation units for all the prestudents of a person
*/
public function getOrganisationunitsByPersonId($person_id)
{
$query = 'SELECT o.oe_kurzbz, o.bezeichnung
FROM public.tbl_prestudent p
JOIN public.tbl_studiengang s USING(studiengang_kz)
JOIN public.tbl_organisationseinheit o USING(oe_kurzbz)
WHERE p.person_id = ?
GROUP BY o.oe_kurzbz, o.bezeichnung
ORDER BY o.bezeichnung';
return $this->execQuery($query, array($person_id));
}
}
+35 -5
View File
@@ -303,13 +303,13 @@ class Recipient_model extends DB_Model
/**
*
*/
public function getReceivedMessages($person_id)
public function getReceivedMessages($person_id, $functions)
{
$sql = 'SELECT mr.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mr.sent,
mr.sent AS sent,
p.vorname,
p.nachname,
MAX(ms.status) AS status
@@ -327,9 +327,34 @@ class Recipient_model extends DB_Model
mr.sent,
p.vorname,
p.nachname
ORDER BY mr.sent DESC';
UNION
SELECT mrou.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mrou.sent AS sent,
p.vorname,
p.nachname,
MAX(ms.status) AS status
FROM public.tbl_person p
JOIN public.tbl_benutzer b ON (b.person_id = p.person_id)
JOIN (SELECT uid, oe_kurzbz FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz IN ?) bf ON (bf.uid = b.uid)
JOIN public.tbl_msg_recipient mrou ON (mrou.oe_kurzbz = bf.oe_kurzbz)
JOIN public.tbl_msg_message mm ON (mm.message_id = mrou.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mrou.message_id AND ms.person_id = mrou.person_id)
WHERE p.person_id = ?
AND mrou.sent IS NOT NULL
AND mrou.sentinfo IS NULL
GROUP BY mrou.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mrou.sent,
p.vorname,
p.nachname
ORDER BY sent DESC';
return $this->execQuery($sql, array($person_id));
return $this->execQuery($sql, array($person_id, $functions, $person_id));
}
/**
@@ -342,10 +367,13 @@ class Recipient_model extends DB_Model
mm.subject,
mm.body,
mr.sent,
p.vorname,
p.nachname,
MAX(ms.status) AS status
FROM public.tbl_msg_message mm
JOIN public.tbl_msg_recipient mr ON (mr.message_id = mm.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mm.message_id AND mr.person_id = mr.person_id)
JOIN public.tbl_person p ON (p.person_id = mr.person_id)
WHERE mm.person_id = ?
AND mr.sent IS NOT NULL
AND mr.sentinfo IS NULL
@@ -353,7 +381,9 @@ class Recipient_model extends DB_Model
mm.relationmessage_id,
mm.subject,
mm.body,
mr.sent
mr.sent,
p.vorname,
p.nachname
ORDER BY mr.sent DESC';
return $this->execQuery($sql, array($person_id));