mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
adds zustelladresse as a field to EditKontakte component
This commit is contained in:
@@ -27,8 +27,12 @@ class Profil extends Auth_Controller
|
||||
'insertFile' => ['student/anrechnung_beantragen:r', 'user:r'],
|
||||
'getProfilRequestFiles' => ['student/anrechnung_beantragen:r', 'user:r'],
|
||||
'deleteOldVersionFiles' => ['student/anrechnung_beantragen:r', 'user:r'],
|
||||
'test' => ['student/anrechnung_beantragen:r', 'user:r'],
|
||||
|
||||
]);
|
||||
|
||||
|
||||
|
||||
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
@@ -40,13 +44,16 @@ class Profil extends Auth_Controller
|
||||
$this->load->model('person/Kontakt_model', 'KontaktModel');
|
||||
$this->load->model('person/Profil_change_model', 'ProfilChangeModel');
|
||||
$this->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
|
||||
$this->load->model('DmsVersion_model','DmsVersionModel');
|
||||
|
||||
$this->load->library('DmsLib');
|
||||
|
||||
//? put the uid and pid inside the controller to reuse in controller
|
||||
$this->uid = getAuthUID();
|
||||
$this->pid = getAuthPersonID();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
@@ -84,14 +91,15 @@ class Profil extends Auth_Controller
|
||||
echo json_encode([]);
|
||||
return;
|
||||
}
|
||||
$res=[];
|
||||
|
||||
|
||||
$this->load->library('DmsLib');
|
||||
$this->load->model('DmsVersion_model','DmsVersionModel');
|
||||
|
||||
|
||||
$files = $_FILES['files'];
|
||||
$file_count = count($files['name']);
|
||||
|
||||
$res=[];
|
||||
|
||||
for ($i = 0; $i < $file_count; $i++) {
|
||||
$_FILES['files']['name'] = $files['name'][$i];
|
||||
$_FILES['files']['type'] = $files['type'][$i];
|
||||
@@ -100,7 +108,7 @@ class Profil extends Auth_Controller
|
||||
$_FILES['files']['size'] = $files['size'][$i];
|
||||
|
||||
$dms = [
|
||||
"kategorie_kurzbz"=>"dokumente",
|
||||
"kategorie_kurzbz"=>"profil_aenderung",
|
||||
"version"=>0,
|
||||
"name"=>$_FILES['files']['name'],
|
||||
"mimetype"=>$_FILES['files']['type'],
|
||||
@@ -118,16 +126,37 @@ class Profil extends Auth_Controller
|
||||
|
||||
|
||||
public function deleteOldVersionFiles(){
|
||||
//? table dms_version has a composite primary key with dms_id and dms_version
|
||||
$file_array = json_decode($this->input->raw_input_stream);
|
||||
if(!isset($file_array) || !sizeof($file_array)){
|
||||
return;
|
||||
}
|
||||
|
||||
$res =[];
|
||||
foreach($file_array as $value){
|
||||
foreach($file_array as $id){
|
||||
//? delete all the different versions of the dms_file
|
||||
|
||||
array_push($res, $this->DmsVersionModel->delete([$value,0]));
|
||||
$zwischen_res = $this->DmsVersionModel->loadWhere(["dms_id"=>$id]);
|
||||
$zwischen_res = hasData($zwischen_res) ? getData($zwischen_res) : null;
|
||||
if(isset($zwischen_res)){
|
||||
$zwischen_res = array_map(function($item){ return $item->version;},$zwischen_res);
|
||||
foreach($zwischen_res as $version){
|
||||
array_push($res, $this->DmsVersionModel->delete([$id,$version]));
|
||||
}
|
||||
}else{
|
||||
echo json_encode(error("No version of the file has been found"));
|
||||
}
|
||||
}
|
||||
echo json_encode($res);
|
||||
}
|
||||
|
||||
public function test(){
|
||||
|
||||
// Loads permission lib
|
||||
$this->load->library('PermissionLib');
|
||||
var_dump($this->permissionlib->getOE_isEntitledFor());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function selectProfilRequest(){
|
||||
$_GET = json_decode($this->input->raw_input_stream, true);
|
||||
@@ -529,9 +558,8 @@ class Profil extends Auth_Controller
|
||||
|
||||
if (
|
||||
|
||||
isSuccess($adresse_res = $this->AdresseModel->addSelect(["adresse_id","strasse", "tbl_adressentyp.bezeichnung as typ", "plz", "ort"])) &&
|
||||
isSuccess($adresse_res = $this->AdresseModel->addSelect(["adresse_id","strasse", "tbl_adressentyp.bezeichnung as typ", "plz", "ort","zustelladresse"])) &&
|
||||
isSuccess($adresse_res = $this->AdresseModel->addOrder("zustelladresse", "DESC")) &&
|
||||
isSuccess($adresse_res = $this->AdresseModel->addOrder("sort")) &&
|
||||
isSuccess($adresse_res = $this->AdresseModel->addJoin("tbl_adressentyp", "typ=adressentyp_kurzbz"))
|
||||
) {
|
||||
$adresse_res = $this->AdresseModel->loadWhere(array("person_id" => $this->pid));
|
||||
|
||||
@@ -37,6 +37,7 @@ class ProfilUpdate extends Auth_Controller
|
||||
$this->load->library('DmsLib');
|
||||
//? downloads the file using the dms_id
|
||||
$file = $this->dmslib->download($dms_id);
|
||||
|
||||
$file = hasData($file) ? getData($file) : null;
|
||||
//? returns the downloaded file to the user
|
||||
$res = $this->outputFile($file);
|
||||
@@ -148,8 +149,9 @@ class ProfilUpdate extends Auth_Controller
|
||||
if(array_key_exists('add',$requested_change) && $requested_change['add']){
|
||||
//? removes add flag
|
||||
unset($requested_change['add']);
|
||||
//? fields like insertvon are not filled when inserting new row
|
||||
$requested_change['person_id'] = $personID;
|
||||
$requested_change['insertamum'] = "NOW()";
|
||||
$requested_change['insertvon'] = getAuthUID();
|
||||
$insertID = $this->KontaktModel->insert($requested_change);
|
||||
|
||||
}
|
||||
@@ -159,6 +161,8 @@ class ProfilUpdate extends Auth_Controller
|
||||
}
|
||||
//! UPDATE
|
||||
else{
|
||||
$requested_change['updateamum']="NOW()";
|
||||
$requested_change['updatemvon']=getAuthUID();
|
||||
$this->KontaktModel->update($kontakt_id,$requested_change);
|
||||
}
|
||||
return isset($insertID) ? $insertID : null;
|
||||
@@ -181,7 +185,8 @@ class ProfilUpdate extends Auth_Controller
|
||||
if(array_key_exists('add',$requested_change) && $requested_change['add']){
|
||||
//? removes add flag
|
||||
unset($requested_change['add']);
|
||||
//? fields like insertvon are not filled when inserting new row
|
||||
$requested_change['insertamum']="NOW()";
|
||||
$requested_change['insertvon']=getAuthUID();
|
||||
$requested_change['person_id'] = $personID;
|
||||
//TODO: zustelladresse, heimatadresse, rechnungsadresse und nation werden nicht beachtet
|
||||
$insertID = $this->AdresseModel->insert($requested_change);
|
||||
@@ -192,6 +197,8 @@ class ProfilUpdate extends Auth_Controller
|
||||
}
|
||||
//! UPDATE
|
||||
else{
|
||||
$requested_change['updateamum'] = "NOW()";
|
||||
$requested_change['updatevon'] = getAuthUID();
|
||||
$this->AdresseModel->update($adresse_id,$requested_change);
|
||||
}
|
||||
return isset($insertID)? $insertID : null;
|
||||
|
||||
@@ -38,16 +38,12 @@ export default {
|
||||
|
||||
methods: {
|
||||
async submitProfilChange() {
|
||||
//? when the update contains a file upload
|
||||
|
||||
//TODO: check if the updated value is different from the original value before submitting the request
|
||||
if (this.topic && this.profilUpdate) {
|
||||
if (this.profilUpdate.files) {
|
||||
const fileIDs = await this.uploadFiles(this.profilUpdate.files);
|
||||
|
||||
if (fileIDs) {
|
||||
this.profilUpdate.files = fileIDs;
|
||||
console.log("here is the update", this.profilUpdate);
|
||||
}
|
||||
}
|
||||
//? inserts new row in public.tbl_cis_profil_update
|
||||
@@ -98,8 +94,6 @@ export default {
|
||||
|
||||
let filesToKeep = [];
|
||||
let filesToDelete = [];
|
||||
console.log(existingFiles);
|
||||
console.log(files);
|
||||
existingFiles.forEach((file) => {
|
||||
Array.from(files).some((f) => f.name === file.name)
|
||||
? filesToKeep.push(file)
|
||||
@@ -107,11 +101,13 @@ export default {
|
||||
});
|
||||
|
||||
//? only keeps the newest version of the documents and deletes the old versions in the database
|
||||
Vue.$fhcapi.UserData.deleteOldVersionFiles(
|
||||
filesToDelete
|
||||
).then((res) => {
|
||||
console.log(res);
|
||||
});
|
||||
if(filesToDelete.length > 0) {
|
||||
Vue.$fhcapi.UserData.deleteOldVersionFiles(
|
||||
filesToDelete
|
||||
).then((res) => {
|
||||
console.log(res);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
updatedFiles = [...filesToKeep];
|
||||
@@ -122,7 +118,7 @@ export default {
|
||||
if (files[i].type !== "application/x.fhc-dms+json")
|
||||
formData.append("files[]", files[i]);
|
||||
}
|
||||
|
||||
if(Array.from(formData).length > 0){
|
||||
await Vue.$fhcapi.UserData.insertFile(formData)
|
||||
.then((res) => {
|
||||
/* returns file information as
|
||||
@@ -130,7 +126,6 @@ export default {
|
||||
|
||||
updatedFiles = updatedFiles.concat(
|
||||
res.data?.map((file) => {
|
||||
console.log("here are the files:",file);
|
||||
return { dms_id: file.dms_id, name: file.client_name};
|
||||
})
|
||||
);
|
||||
@@ -138,6 +133,7 @@ export default {
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
});
|
||||
}
|
||||
|
||||
return updatedFiles;
|
||||
},
|
||||
@@ -163,6 +159,7 @@ export default {
|
||||
</template>
|
||||
<template v-slot:default>
|
||||
|
||||
|
||||
<nav aria-label="breadcrumb" class="ps-2 ">
|
||||
<ol class="breadcrumb ">
|
||||
<li class="breadcrumb-item" v-for="element in breadcrumb">{{element}}</li>
|
||||
|
||||
@@ -71,6 +71,7 @@ export default {
|
||||
typ: null,
|
||||
plz: null,
|
||||
ort: null,
|
||||
zustelladresse:null,
|
||||
}
|
||||
: {
|
||||
//? add flag
|
||||
@@ -104,7 +105,6 @@ export default {
|
||||
this.properties = item;
|
||||
this.data = item.data;
|
||||
this.view = item.view;
|
||||
console.log("properties", this.properties);
|
||||
if (item.title) {
|
||||
//? emits the selected topic to the parent component
|
||||
this.topic = item.title;
|
||||
@@ -160,6 +160,7 @@ export default {
|
||||
|
||||
|
||||
<div v-else-if="view==='text_input'" class="form-underline">
|
||||
|
||||
<div class="form-underline-titel">{{data.titel?data.titel:'titel'}}</div>
|
||||
|
||||
<input class="form-control" @input="$emit('update:profilUpdate',data.value)" v-model="data.value" :placeholder="data.value">
|
||||
|
||||
@@ -339,6 +339,20 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bearbeiten Button -->
|
||||
|
||||
<div class="row mb-3 ">
|
||||
<div class="col">
|
||||
<button @click="showModal" type="button" class="text-start w-100 btn btn-outline-secondary" >
|
||||
<div class="row">
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-edit"></i>
|
||||
</div>
|
||||
<div class="col-auto">Bearbeiten</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="data.profilUpdates" class="row mb-3">
|
||||
<div class="col">
|
||||
@@ -473,30 +487,9 @@ export default {
|
||||
<!-- START OF SIDE PANEL -->
|
||||
<div class="col-md-4 col-xxl-3 col-sm-12 text-break" >
|
||||
|
||||
<!-- Bearbeiten Button -->
|
||||
|
||||
<div class="row d-none d-md-block mb-3">
|
||||
<div class="col mb-3">
|
||||
<button @click="showModal" type="button" class="text-start w-100 btn btn-outline-secondary" >
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<i class="fa fa-edit"></i>
|
||||
</div>
|
||||
<div class="col-10">Bearbeiten</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-if="data.profilUpdates" class="row d-none d-md-block mb-3">
|
||||
<div class="col mb-3">
|
||||
|
||||
|
||||
<!-- PROFIL UPDATES -->
|
||||
<fetch-profil-updates @fetchUpdates="fetchProfilUpdates" :data="data.profilUpdates"></fetch-profil-updates>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row d-none d-md-block mb-3">
|
||||
|
||||
<div class="col">
|
||||
@@ -509,6 +502,33 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bearbeiten Button -->
|
||||
|
||||
<div class="row d-none d-md-block ">
|
||||
<div class="col mb-3">
|
||||
<button @click="showModal" type="button" class="text-start w-100 btn btn-outline-secondary" >
|
||||
<div class="row">
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-edit"></i>
|
||||
</div>
|
||||
<div class="col-auto">Bearbeiten</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="data.profilUpdates" class="row d-none d-md-block mb-3">
|
||||
<div class="col mb-3">
|
||||
|
||||
|
||||
<!-- PROFIL UPDATES -->
|
||||
<fetch-profil-updates @fetchUpdates="fetchProfilUpdates" :data="data.profilUpdates"></fetch-profil-updates>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row mb-3" >
|
||||
<div class="col-12">
|
||||
<!-- AUSWEIS STATUS -->
|
||||
|
||||
@@ -8,7 +8,12 @@ export default {
|
||||
methods:{
|
||||
updateValue: function(event,bind){
|
||||
//? sets the value of a property to null when an empty string is entered to keep the isChanged function valid
|
||||
this.data[bind] = event.target.value === "" ? null : event.target.value;
|
||||
if(bind ==="zustelladresse"){
|
||||
this.data[bind] = event.target.checked;
|
||||
}else{
|
||||
this.data[bind] = event.target.value === "" ? null : event.target.value;
|
||||
}
|
||||
|
||||
this.$emit('profilUpdate',this.isChanged?this.data:null);
|
||||
},
|
||||
},
|
||||
@@ -28,7 +33,7 @@ export default {
|
||||
template:`
|
||||
|
||||
<div class="gy-3 row justify-content-center align-items-center">
|
||||
|
||||
|
||||
<!-- column 1 in the address row -->
|
||||
|
||||
|
||||
@@ -84,6 +89,14 @@ export default {
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 order-5">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" @change="updateValue($event,'zustelladresse')" :checked="data.zustelladresse" id="flexCheckDefault">
|
||||
<label class="form-check-label" for="flexCheckDefault">
|
||||
Zustelladresse
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
|
||||
|
||||
@@ -181,14 +181,16 @@ export default {
|
||||
|
||||
vorname: {
|
||||
title:"vorname",
|
||||
view:"text_input",
|
||||
view:"TextInputDokument",
|
||||
withFiles:true,
|
||||
data:{
|
||||
titel:"vorname",
|
||||
value:this.data.vorname,
|
||||
}},
|
||||
nachname: {
|
||||
title:"nachname",
|
||||
view:"text_input",
|
||||
view:"TextInputDokument",
|
||||
withFiles:true,
|
||||
data:{
|
||||
titel:"nachname",
|
||||
value:this.data.nachname,
|
||||
@@ -196,7 +198,8 @@ export default {
|
||||
},
|
||||
titel:{
|
||||
title:"titel",
|
||||
view:"text_input",
|
||||
view:"TextInputDokument",
|
||||
withFiles:true,
|
||||
data:{
|
||||
titel:"titel",
|
||||
value:this.data.titel,
|
||||
@@ -204,7 +207,8 @@ export default {
|
||||
},
|
||||
postnomen:{
|
||||
title:"postnomen",
|
||||
view:"text_input",
|
||||
view:"TextInputDokument",
|
||||
withFiles:true,
|
||||
data:{
|
||||
titel:"postnomen",
|
||||
value:this.data.postnomen,
|
||||
@@ -266,6 +270,21 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bearbeiten Button -->
|
||||
|
||||
<div class="row ">
|
||||
<div class="col mb-3">
|
||||
<button @click="showModal" type="button" class="text-start w-100 btn btn-outline-secondary" >
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<i class="fa fa-edit"></i>
|
||||
</div>
|
||||
<div class="col-10">Bearbeiten</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="data.profilUpdates" class="row mb-3">
|
||||
<div class="col">
|
||||
<!-- MOBILE PROFIL UPDATES -->
|
||||
@@ -426,28 +445,6 @@ export default {
|
||||
<!-- START OF SIDE PANEL -->
|
||||
<div class="col-md-4 col-xxl-3 col-sm-12 text-break" >
|
||||
|
||||
|
||||
<!-- Bearbeiten Button -->
|
||||
|
||||
<div class="row d-none d-md-block mb-3">
|
||||
<div class="col mb-3">
|
||||
<button @click="showModal" type="button" class="text-start w-100 btn btn-outline-secondary" >
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<i class="fa fa-edit"></i>
|
||||
</div>
|
||||
<div class="col-10">Bearbeiten</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="data.profilUpdates" class="row d-none d-md-block mb-3">
|
||||
<div class="col mb-3">
|
||||
<!-- PROFIL UPDATES -->
|
||||
<fetch-profil-updates @fetchUpdates="fetchProfilUpdates" :data="data.profilUpdates"></fetch-profil-updates>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row d-none d-md-block mb-3">
|
||||
<div class="col">
|
||||
@@ -459,6 +456,30 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bearbeiten Button -->
|
||||
|
||||
<div class="row d-none d-md-block">
|
||||
<div class="col mb-3">
|
||||
<button @click="showModal" type="button" class="text-start w-100 btn btn-outline-secondary" >
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<i class="fa fa-edit"></i>
|
||||
</div>
|
||||
<div class="col-10">Bearbeiten</div>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="data.profilUpdates" class="row d-none d-md-block mb-3">
|
||||
<div class="col mb-3">
|
||||
<!-- PROFIL UPDATES -->
|
||||
<fetch-profil-updates @fetchUpdates="fetchProfilUpdates" :data="data.profilUpdates"></fetch-profil-updates>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row mb-3" >
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user