enabled sending messages with person ids as receivers, person data can be retrieved by uid, link in infocenter details to send message

This commit is contained in:
alex
2018-02-01 10:26:37 +01:00
parent 77da816b5e
commit b9e7dc38cc
7 changed files with 251 additions and 50 deletions
+81 -35
View File
@@ -26,6 +26,8 @@ class Messages extends VileSci_Controller
public function write($sender_id, $msg_id = null, $receiver_id = null)
{
$prestudent_id = $this->input->post('prestudent_id');
$person_id = $this->input->post('person_id');
$msg = null;
// Get message data if possible
@@ -42,30 +44,15 @@ class Messages extends VileSci_Controller
}
}
$variablesArray = array();
$msgVarsData = array();
// Get variables
$this->load->model('system/Message_model', 'MessageModel');
$msgVarsDataByPrestudentId = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if ($msgVarsDataByPrestudentId->error)
{
show_error($msgVarsDataByPrestudentId->retval);
}
if (!hasData($variables = $this->MessageModel->getMessageVars()))
{
unset($variables);
}
else
{
$variablesArray = array();
// Skip person_id and prestudent_id
for($i = 2; $i < count($variables->retval); $i++)
{
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
}
}
array_shift($variables->retval); // Remove person_id
array_shift($variables->retval); // Remove prestudent_id
if($prestudent_id !== null)
$this->getPrestudentMsgData($prestudent_id, $variablesArray, $msgVarsData);
elseif($person_id !== null)
$this->getPersonMsgData($person_id, $variablesArray, $msgVarsData);
// Organisation units used to get the templates
$oe_kurzbz = array(); // A person can have more organisation units
@@ -89,7 +76,7 @@ class Messages extends VileSci_Controller
$data = array (
'sender_id' => $sender_id,
'receivers' => $msgVarsDataByPrestudentId->retval,
'receivers' => $msgVarsData->retval,
'message' => $msg,
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
@@ -99,6 +86,56 @@ class Messages extends VileSci_Controller
$v = $this->load->view('system/messageWrite', $data);
}
private function getPrestudentMsgData($prestudent_id, &$variablesArray, &$msgVarsData)
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if ($msgVarsData->error)
{
show_error($msgVarsData->retval);
}
if (!hasData($variables = $this->MessageModel->getMessageVars()))
{
unset($variables);
}
else
{
$variablesArray = array();
// Skip person_id and prestudent_id
for($i = 2; $i < count($variables->retval); $i++)
{
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
}
}
array_shift($variables->retval); // Remove person_id
array_shift($variables->retval); // Remove prestudent_id
}
private function getPersonMsgData($person_id, &$variablesArray, &$msgVarsData)
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if ($msgVarsData->error)
{
show_error($msgVarsData->retval);
}
if (!hasData($variables = $this->MessageModel->getMessageVarsPerson()))
{
unset($variables);
}
else
{
$variablesArray = array();
// Skip person_id
for($i = 1; $i < count($variables->retval); $i++)
{
$variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
}
array_shift($variables->retval); // Remove person_id
}
}
/**
* send
*/
@@ -109,6 +146,7 @@ class Messages extends VileSci_Controller
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$prestudents = $this->input->post('prestudents');
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
if (!isset($relationmessage_id) || $relationmessage_id == '')
@@ -116,15 +154,20 @@ class Messages extends VileSci_Controller
$relationmessage_id = null;
}
//
$data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
// get message data of prestudents or persons
$prestudentsData = array();
if($prestudents !== null)
{
$data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
//
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
}
else
$data = $this->MessageModel->getMsgVarsDataByPersonId($persons);
//
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
//
if (hasData($data) && hasData($prestudentsData))
// send message(s)
if (hasData($data))
{
for ($i = 0; $i < count($data->retval); $i++)
{
@@ -138,12 +181,15 @@ class Messages extends VileSci_Controller
$parsedText = $this->messagelib->parseMessageText($body, $dataArray);
$oe_kurzbz = '';
for ($p = 0; $p < count($prestudentsData->retval); $p++)
$oe_kurzbz = null;
if(hasData($prestudentsData))
{
if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id)
for ($p = 0; $p < count($prestudentsData->retval); $p++)
{
$oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz;
if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id)
{
$oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz;
}
}
}
@@ -474,7 +474,7 @@ class InfoCenter extends VileSci_Controller
if (isError($dokumente_nachgereicht))
{
show_error($dokumente->retval);
show_error($dokumente_nachgereicht->retval);
}
$logs = $this->personloglib->getLogs($person_id);
@@ -486,12 +486,22 @@ class InfoCenter extends VileSci_Controller
show_error($notizen->retval);
}
$user_person = $this->PersonModel->getByUid($this->uid);
if (isError($user_person))
{
show_error($user_person->retval);
}
$messagelink = base_url('/index.ci.php/system/Messages/write/'.$user_person->retval[0]->person_id);
$data = array (
'stammdaten' => $stammdaten->retval,
'dokumente' => $dokumente->retval,
'dokumente_nachgereicht' => $dokumente_nachgereicht->retval,
'logs' => $logs,
'notizen' => $notizen->retval
'notizen' => $notizen->retval,
'messagelink' => $messagelink
);
return $data;
+18 -4
View File
@@ -157,13 +157,13 @@ class Person_model extends DB_Model
* gets Stammdaten for a person, including contactdata in textform from other tables
* nation, kontakt, adresse
* @param $person_id
* @return array
* @return array, null when no person found
*/
public function getPersonStammdaten($person_id)
{
$this->addSelect('tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
$this->addJoin('bis.tbl_nation s', 'tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
$this->addJoin('bis.tbl_nation g', 'tbl_person.geburtsnation = g.nation_code', 'LEFT');
$this->addSelect('public.tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
$this->addJoin('bis.tbl_nation s', 'public.tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
$this->addJoin('bis.tbl_nation g', 'public.tbl_person.geburtsnation = g.nation_code', 'LEFT');
$person = $this->load($person_id);
@@ -194,4 +194,18 @@ class Person_model extends DB_Model
return success($stammdaten);
}
/**
* gets person data from uid
* @param $uid
* @return array
*/
public function getByUid($uid)
{
$this->addSelect('vorname, nachname, gebdatum, person_id');
$this->addJoin('tbl_benutzer', 'person_id');
return $this->loadWhere(array('uid' => $uid));
}
}
@@ -102,6 +102,23 @@ class Message_model extends DB_Model
}
}
/**
* getMessageVars for person
*/
public function getMessageVarsPerson()
{
$result = $this->db->query('SELECT * FROM public.vw_msg_vars_person WHERE 0 = 1');
if ($result)
{
return success($result->list_fields());
}
else
{
return error($this->db->error(), FHC_DB_ERROR);
}
}
/**
* getMsgVarsDataByPrestudentId
*/
@@ -111,4 +128,14 @@ class Message_model extends DB_Model
return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id));
}
/**
* getMsgVarsDataByPersonId
*/
public function getMsgVarsDataByPersonId($person_id)
{
$query = 'SELECT * FROM public.vw_msg_vars_person WHERE person_id %s ?';
return $this->execQuery(sprintf($query, is_array($person_id) ? 'IN' : '='), array($person_id));
}
}
@@ -29,7 +29,8 @@ $this->load->view(
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Infocenter
Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?></h3>
Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?>
</h3>
</div>
</div>
<section>
@@ -132,11 +133,26 @@ $this->load->view(
<?php endforeach; ?>
</tbody>
</table>
<?php if (isset($stammdaten->zugangscode)): ?>
Zugang Bewerbung: <a
href="<?php echo base_url('addons/bewerbung/cis/registration.php?code='.html_escape($stammdaten->zugangscode)) ?>"
target='_blank'><?php echo html_escape($stammdaten->zugangscode) ?></a>
<?php endif; ?>
<div class="row">
<div class="col-lg-6">
<form id="sendmsgform" method="post" action="<?php echo $messagelink ?>"
target="_blank">
<input type="hidden" name="person_id"
value="<?php echo $stammdaten->person_id ?>">
<a id="sendmsglink" href="javascript:void(0);"><i
class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>
</form>
</div>
<?php if (isset($stammdaten->zugangscode)): ?>
<div class="col-lg-6 text-right">
<a
href="<?php echo base_url('addons/bewerbung/cis/registration.php?code='.html_escape($stammdaten->zugangscode)) ?>"
target='_blank'><i
class="glyphicon glyphicon-new-window"></i>&nbspZugang
Bewerbung</a>
</div>
<?php endif; ?>
</div>
</div> <!-- ./column -->
</div> <!-- ./row -->
</div> <!-- ./panel-body -->
@@ -727,11 +743,19 @@ $this->load->view(
"dateFormat": "dd.mm.yy"
});
//javascript hack - not nice!
//javascript bootstrap hack - not nice!
$("select").addClass('form-control');
$("table").addClass('table-condensed');
$("#logtable, #notiztable").addClass('table-hover');
//add submit event to message send link
$("#sendmsglink").click(
function()
{
$("#sendmsgform").submit();
}
);
//add click events to "formal geprüft" checkboxes
<?php foreach($dokumente as $dokument): ?>
+13 -2
View File
@@ -126,8 +126,9 @@
<?php
foreach($receivers as $receiver)
{
$receiverid = isset($receiver->prestudent_id) ? $receiver->prestudent_id : $receiver->person_id;
?>
<option value="<?php echo $receiver->prestudent_id; ?>"><?php echo $receiver->Nachname . " " . $receiver->Vorname; ?></option>
<option value="<?php echo $receiverid; ?>"><?php echo $receiver->Vorname . " " . $receiver->Nachname; ?></option>
<?php
}
?>
@@ -156,7 +157,17 @@
for($i = 0; $i < count($receivers); $i++)
{
$receiver = $receivers[$i];
echo '<input type="hidden" name="prestudents[]" value="' . $receiver->prestudent_id . '">' . "\n";
if (isset($receiver->prestudent_id))
{
$receiverid = $receiver->prestudent_id;
$fieldname= 'prestudents[]';
}
else
{
$receiverid = $receiver->person_id;
$fieldname= 'persons[]';
}
echo '<input type="hidden" name="' . $fieldname . '" value="' . $receiverid . '">' . "\n";
}
?>