Compare commits

...

2 Commits

Author SHA1 Message Date
ma0068 3a33d9e17b Merge branch 'master' into feature-11304/LehrauftragInfomailBeiStornoVertrag 2022-11-02 16:04:14 +01:00
ma0068 c561a75080 Neues Sancho Mail Stornierte Lehrauftraege 2022-08-09 15:07:16 +02:00
3 changed files with 178 additions and 8 deletions
+127 -1
View File
@@ -267,6 +267,65 @@ class LehrauftragJob extends JOB_Controller
}
}
/**
* This daily job sends information about all lehr-/projektauftraege cancelled the day bofore.
* Receivers: lectors
**/
public function mailLehrauftraegeCancelled()
{
// Get vertrag_id and uid of lehrauftraege that had accepted AND were cancelled YESTERDAY
$this->VertragvertragsstatusModel->addSelect('vertrag_id, uid');
$this->VertragvertragsstatusModel->addOrder('vertrag_id');
$result = $this->VertragvertragsstatusModel->getCancelled_fromDate('YESTERDAY');
/**
* Build the data array to be used in the email.
**/
$data_arr= array();
if ($vertrag_arr = getData($result))
{
foreach ($vertrag_arr as $vertrag)
{
$uid = $vertrag->uid;
$vertrag_id = $vertrag->vertrag_id;
$person_id = '';
$bezeichnung = '';
$this->VertragModel->load($vertrag_id);
$result = $this->VertragModel->getPersonID($vertrag_id);
if (hasData($result))
{
$bezeichnung = $result->retval[0]->bezeichnung;
$person_id = $result->retval[0]->person_id;
}
$data = array();
$data['uid'] = $uid;
$data['person_id'] = $person_id;
$data['vertrag_id'] = $vertrag_id;
$data['bezeichnung'] = $bezeichnung;
$data_arr []= $data;
}
}
// Send email
if ($this->_sendMail_Storniert($data_arr))
{
$this->logInfo('SUCCEDED: Sending emails about yesterdays cancelled lehrauftraege succeded.');
}
else
{
$this->logError('Error when sending emails in job MailLehrauftragStornierte');
}
}
//******************************************************************************************************************
// PRIVATE FUNCTIONS
//******************************************************************************************************************
@@ -359,7 +418,7 @@ class LehrauftragJob extends JOB_Controller
for ($i = 0; $i < $data_len; $i++)
{
// Get all users entitled by organisational unit
$result = $this->BenutzerrolleModel->getBenutzerByBerechtigung(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, $data[$i]['oe_kurzbz'], 'suid');
$result = $this->BenutzerrolleModel->getBenutzerByBerechtigung(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, $data[$i]['oe_kurzbz']);
if ($berechtigung_arr = getData($result))
{
@@ -527,4 +586,71 @@ class LehrauftragJob extends JOB_Controller
}
return true;
}
/**
* Send Sancho eMail about cancelled Lehrauftraege.
* @param $data_arr
*/
private function _sendMail_Storniert($data_arr)
{
// Loop through 'container' of mail recipients
foreach($data_arr as $data)
{
// Link to LehrauftragAkzeptieren
$url = CIS_ROOT. 'cis/index.php?menu='.
CIS_ROOT. 'cis/menu.php?content_id=&content='.
CIS_ROOT. index_page(). self::LEHRAUFTRAG_AKZEPTIEREN_URI;
// Get first name and uid lektor from person_id
$first_name = '';
$uid = '';
$this->load->model('person/Benutzer_model', 'BenutzerModel');
$this->BenutzerModel->addSelect('vorname, uid');
$this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
$result = $this->BenutzerModel->loadWhere(array('person_id' => $data['person_id']));
if (hasData($result))
{
$first_name = $result->retval[0]->vorname;
$uid = $result->retval[0]->uid;
}
//get cancellor_ name for email
$cancellor_name = '';
$cancellor_uid = $data['uid'];
$this->load->model('person/Benutzer_model', 'BenutzerModel');
$this->BenutzerModel->addSelect('vorname, nachname');
$this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
$result = $this->BenutzerModel->loadWhere(array('uid' => $cancellor_uid));
if(hasData($result))
{
$cancellor_name = $result->retval[0]->vorname . " " . $result->retval[0]->nachname ;
}
// Set mail recipient (lector)
$to = $uid. '@'. DOMAIN;
// Prepare mail content
$content_data_arr = array(
'uid'=> $cancellor_uid,
'vorname' => $first_name,
'vertrag_id' => $data['vertrag_id'],
'bezeichnung' => $data['bezeichnung'],
'storniert_von' => $cancellor_name,
'link' => anchor($url, 'Lehraufträge Übersicht')
);
sendSanchoMail(
'LehrauftragStornierte',
$content_data_arr,
$to,
'Lehrauftrag wurde storniert'
);
}
return true;
}
}
@@ -299,6 +299,19 @@ class Vertrag_model extends DB_Model
}
}
/**
* Gets Person_id corresponding to the contract.
* @param $vertrag_id
* @return array
*/
public function getPersonID($vertrag_id)
{
return $this->loadWhere(array(
'vertrag_id' => $vertrag_id
));
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
@@ -62,7 +62,7 @@ class Vertragvertragsstatus_model extends DB_Model
// Check if vertrag has already this status
$result = $this->hasStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz);
// If status is already set, return error message
if (hasData($result))
{
@@ -74,7 +74,7 @@ class Vertragvertragsstatus_model extends DB_Model
{
$result = $this->getLastStatus($vertrag_id, $mitarbeiter_uid);
$last_status = getData($result)[0]->vertragsstatus_kurzbz;
// If latest status is not 'erteilt', return error message
if ($last_status != 'erteilt')
{
@@ -146,7 +146,7 @@ class Vertragvertragsstatus_model extends DB_Model
vertragsstatus_kurzbz = \'bestellt\' AND
(datum)::date = date \''. $string_date .'\'
';
if (!$further_processed)
{
$condition .= '
@@ -158,10 +158,10 @@ class Vertragvertragsstatus_model extends DB_Model
)
';
}
return $this->loadWhere($condition);
}
/**
* Get all contracts, where the status had been set to 'erteilt' on given date
* @param string $string_date e.g. '01.11.2019' or special Date/Time inputs like 'YESTERDAY', 'TODAY', 'NOW'
@@ -175,7 +175,7 @@ class Vertragvertragsstatus_model extends DB_Model
vertragsstatus_kurzbz = \'erteilt\' AND
(datum)::date = date \''. $string_date .'\'
';
if (!$further_processed)
{
$condition .= '
@@ -187,7 +187,38 @@ class Vertragvertragsstatus_model extends DB_Model
)
';
}
return $this->loadWhere($condition);
}
/**
* Get all contracts, where the status had been set to 'cancelled'
* @param string $string_date e.g. '01.11.2019' or special Date/Time inputs like 'YESTERDAY', 'TODAY', 'NOW'
* @param bool $further_processed If true, ALL contracts cancelled on that day are retrieved, even if they were
* not accepted before.
* @return array
*/
public function getCancelled_fromDate($string_date = 'TODAY', $acceptedBefore = false)
{
$condition = '
vertragsstatus_kurzbz = \'storno\' AND
(datum)::date = date \''. $string_date .'\'
';
if (!$acceptedBefore)
{
$condition .= '
AND
vertrag_id IN (
SELECT vertrag_id
FROM lehre.tbl_vertrag_vertragsstatus
WHERE vertragsstatus_kurzbz IN (\'akzeptiert\')
)
';
}
return $this->loadWhere($condition);
}
}