filter offene Vertraege, validations insert, update Contract

This commit is contained in:
ma0068
2024-11-12 07:57:46 +01:00
parent 023fafde2c
commit 5751441424
6 changed files with 203 additions and 98 deletions
@@ -27,11 +27,19 @@ class Vertraege extends FHCAPI_Controller
'deleteBetreuung' => ['admin:r', 'assistenz:r']
]);
//Load Models
//Load Models and Libraries
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('accounting/Vertragsstatus_model', 'VertragsstatusModel');
$this->load->model('accounting/Vertragstyp_model', 'VertragstypModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
//TODO(Manu) additional permission checks
// Load language phrases
$this->loadPhrases([
'ui',
'vertrag'
]);
}
//TODO(Manu) validations, phrases
@@ -97,46 +105,66 @@ class Vertraege extends FHCAPI_Controller
public function addNewContract()
{
//$this->validateNewOrUpdate();
//TODO(Manu) check validations
//$bezeichnung = $formData->bezeichnung;
$this->load->library('form_validation');
$person_id = $this->input->post('person_id');
if(!$person_id)
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Person_id']), self::ERROR_TYPE_GENERAL);
}
$formData = $this->input->post('formData');
$vertragsdatum = $formData['vertragsdatum'];
$bezeichnung = $formData['bezeichnung'];
$vertragstyp_kurzbz = $formData['vertragstyp_kurzbz'];
$betrag = isset($formData['betrag']) ? $formData['betrag'] : null;
$vertragsstunden = isset($formData['vertragsstunden']) ? $formData['vertragsstunden'] : null;
$vertragsstunden_studiensemester_kurzbz = isset($formData['vertragsstunden_studiensemester_kurzbz']) ? $formData['vertragsstunden_studiensemester_kurzbz'] : null;
$anmerkung = isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
//Manually rewrite to postparameter for form validation
$_POST['vertragstyp_kurzbz'] = $formData['vertragstyp_kurzbz'];
$_POST['vertragsdatum']= $formData['vertragsdatum'];
$_POST['bezeichnung']= $formData['bezeichnung'];
$_POST['betrag'] = $formData['betrag'];
$_POST['vertragsstunden']= isset($formData['vertragsstunden']) ? $formData['vertragsstunden'] : null;
$_POST['vertragsstunden_studiensemester_kurzbz']= isset($formData['vertragsstunden_studiensemester_kurzbz']) ? $formData['vertragsstunden_studiensemester_kurzbz'] : null;
$_POST['anmerkung']= isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
$this->form_validation->set_rules('vertragstyp_kurzbz', 'Vertragstyp', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragstyp'])
]);
$this->form_validation->set_rules('vertragsdatum', 'Vertragsdatum', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragsdatum'])
]);
$this->form_validation->set_rules('betrag', 'Betrag', 'required|numeric', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Betrag']),
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Betrag'])
]);
$this->form_validation->set_rules('vertragsstunden', 'Stunden(Vertrags-Urfassung)', 'numeric', [
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Stunden(Vertrags-Urfassung)'])
]);
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$lehrauftraege = $this->input->post('clickedRows');
//$this->terminateWithError("in function" . $lehrauftraege[0]['lehreinheit_id'], self::ERROR_TYPE_GENERAL);
$this->db->trans_start();
$result = $this->VertragModel->insert([
'person_id' => $person_id,
'vertragsdatum' => $vertragsdatum,
'bezeichnung' => $bezeichnung,
'vertragstyp_kurzbz' => $vertragstyp_kurzbz,
'betrag' => $betrag,
'vertragsstunden' => $vertragsstunden,
'vertragsstunden_studiensemester_kurzbz' => $vertragsstunden_studiensemester_kurzbz,
'anmerkung' => $anmerkung,
'vertragsdatum' => $_POST['vertragsdatum'],
'bezeichnung' => $_POST['bezeichnung'],
'vertragstyp_kurzbz' => $_POST['vertragstyp_kurzbz'],
'betrag' => $_POST['betrag'],
'vertragsstunden' => $_POST['vertragsstunden'],
'vertragsstunden_studiensemester_kurzbz' => $_POST['vertragsstunden_studiensemester_kurzbz'],
'anmerkung' => $_POST['anmerkung'],
'insertamum' => date('c'),
'insertvon' => getAuthUID()
]);
$this->getDataOrTerminateWithError($result);
$vertrag_id = $result->retval;
//$this->terminateWithError($result->retval, self::ERROR_TYPE_GENERAL);
//TODO(Manu) validation, dass status nicht schon bereits vorhanden
$status_result = $this->VertragvertragsstatusModel->insert([
'vertrag_id' => $vertrag_id,
'uid' => getAuthUID(),
@@ -148,7 +176,7 @@ class Vertraege extends FHCAPI_Controller
if (!$status_result) {
$this->db->trans_rollback();
$this->terminateWithError('Fehler beim Hinzufügen des Vertragsstatus.', self::ERROR_TYPE_GENERAL);
$this->terminateWithError($this->p->t('vertrag', 'error_insertOrUpdateStatusVertrag'), self::ERROR_TYPE_GENERAL);
}
//Hinzufügen der Lehraufträge
@@ -169,13 +197,12 @@ class Vertraege extends FHCAPI_Controller
if (!$result_lehrauftrag) {
$this->db->trans_rollback();
$this->terminateWithError('Fehler beim Verknüpfen Lehrauftrag mit Vertrag', self::ERROR_TYPE_GENERAL);
$this->terminateWithError($this->p->t('vertrag', 'error_addOrUpdateLehrauftraege'), self::ERROR_TYPE_GENERAL);
}
}
if ($row['type'] == 'Betreuung')
{
$this->load->model('education/Projektbetreuer_model', 'Projektbetreuermodel');
$result_projektbetreuer = $this->Projektbetreuermodel->update(
@@ -191,10 +218,9 @@ class Vertraege extends FHCAPI_Controller
if (!$result_projektbetreuer)
{
$this->db->trans_rollback();
$this->terminateWithError('Fehler beim Verknüpfen Lehrauftrag mit Betreuung', self::ERROR_TYPE_GENERAL);
$this->terminateWithError($this->p->t('vertrag', 'error_addOrUpdateLehrauftraege'), self::ERROR_TYPE_GENERAL);
}
}
}
$this->db->trans_complete();
@@ -203,41 +229,62 @@ class Vertraege extends FHCAPI_Controller
public function updateContract()
{
$this->load->library('form_validation');
$vertrag_id = $this->input->post('vertrag_id');
$person_id = $this->input->post('person_id');
$formData = $this->input->post('formData');
$vertragsdatum = $formData['vertragsdatum'];
$bezeichnung = $formData['bezeichnung'];
$vertragstyp_kurzbz = $formData['vertragstyp_kurzbz'];
$betrag = isset($formData['betrag']) ? $formData['betrag'] : null;
$vertragsstunden = isset($formData['vertragsstunden']) ? $formData['vertragsstunden'] : null;
$vertragsstunden_studiensemester_kurzbz = isset($formData['vertragsstunden_studiensemester_kurzbz']) ? $formData['vertragsstunden_studiensemester_kurzbz'] : null;
$anmerkung = isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
$lehrauftraege = $this->input->post('clickedRows');
//Manually rewrite to postparameter for form validation
$_POST['vertragstyp_kurzbz'] = $formData['vertragstyp_kurzbz'];
$_POST['vertragsdatum']= $formData['vertragsdatum'];
$_POST['bezeichnung']= $formData['bezeichnung'];
$_POST['betrag'] = $formData['betrag'];
$_POST['vertragsstunden']= isset($formData['vertragsstunden']) ? $formData['vertragsstunden'] : null;
$_POST['vertragsstunden_studiensemester_kurzbz']= isset($formData['vertragsstunden_studiensemester_kurzbz']) ? $formData['vertragsstunden_studiensemester_kurzbz'] : null;
$_POST['anmerkung']= isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
$this->form_validation->set_rules('vertragstyp_kurzbz', 'Vertragstyp', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragstyp'])
]);
$this->form_validation->set_rules('vertragsdatum', 'Vertragsdatum', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragsdatum'])
]);
$this->form_validation->set_rules('betrag', 'Betrag', 'required|numeric', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Betrag']),
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Betrag'])
]);
$this->form_validation->set_rules('vertragsstunden', 'Stunden(Vertrags-Urfassung)', 'numeric', [
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Stunden(Vertrags-Urfassung)'])
]);
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$this->db->trans_start();
$result = $this->VertragModel->update(
$vertrag_id, [
'person_id' => $person_id,
'vertragsdatum' => $vertragsdatum,
'bezeichnung' => $bezeichnung,
'vertragstyp_kurzbz' => $vertragstyp_kurzbz,
'betrag' => $betrag,
'vertragsstunden' => $vertragsstunden,
'vertragsstunden_studiensemester_kurzbz' => $vertragsstunden_studiensemester_kurzbz,
'anmerkung' => $anmerkung,
'vertragsstunden' => $vertragsstunden,
'updateamum' => date('c'),
'updatevon' => getAuthUID()
$vertrag_id,
[
'person_id' => $person_id,
'vertragsdatum' => $_POST['vertragsdatum'],
'bezeichnung' => $_POST['bezeichnung'],
'vertragstyp_kurzbz' => $_POST['vertragstyp_kurzbz'],
'betrag' => $_POST['betrag'],
'vertragsstunden' => $_POST['vertragsstunden'],
'vertragsstunden_studiensemester_kurzbz' => $_POST['vertragsstunden_studiensemester_kurzbz'],
'anmerkung' => $_POST['anmerkung'],
'vertragsstunden' => $_POST['vertragsstunden'],
'updateamum' => date('c'),
'updatevon' => getAuthUID()
]);
$this->getDataOrTerminateWithError($result);
//TODO(MANU) Transaction: splitting of in error und rollback sonst weiter
//Adding of Lehraufträge
foreach ($lehrauftraege as $row) {
@@ -256,13 +303,12 @@ class Vertraege extends FHCAPI_Controller
if (!$result_lehrauftrag) {
$this->db->trans_rollback();
$this->terminateWithError('Fehler beim Verknüpfen Lehrauftrag mit Vertrag', self::ERROR_TYPE_GENERAL);
$this->terminateWithError($this->p->t('vertrag', 'error_addOrUpdateLehrauftraege'), self::ERROR_TYPE_GENERAL);
}
}
if ($row['type'] == 'Betreuung')
{
$this->load->model('education/Projektbetreuer_model', 'Projektbetreuermodel');
$result_projektbetreuer = $this->Projektbetreuermodel->update(
@@ -278,12 +324,10 @@ class Vertraege extends FHCAPI_Controller
if (!$result_projektbetreuer)
{
$this->db->trans_rollback();
$this->terminateWithError('Fehler beim Verknüpfen Lehrauftrag mit Betreuung', self::ERROR_TYPE_GENERAL);
$this->terminateWithError($this->p->t('vertrag', 'error_addOrUpdateLehrauftraege'), self::ERROR_TYPE_GENERAL);
}
}
}
$this->db->trans_complete();
$this->terminateWithSuccess(true);
@@ -361,15 +405,14 @@ class Vertraege extends FHCAPI_Controller
]);
$this->getDataOrTerminateWithError($result);
}
}
$result = $this->VertragvertragsstatusModel->load([
'vertrag_id' => $vertrag_id
]);
//TODO(Manu) check if there are exceptions for deletions (status abgerechnet?)
if(hasData($result)){
$data = getData($result);
foreach ($data as $item) {