Files
monpas/public/js/monpas/models/gebruikersmodel.js
T

399 lines
12 KiB
JavaScript

$(function(){
ls.initGebruikersModel = function(){
var timer;
function fAddOrgs(p){
var dit =this;
this.id = p.id;
this.naam = p.naam
this.geopend = ko.observable(false);
this.orgs1 = ko.observableArray([]);
if (p.orgs){
$.each(p.orgs, function(j,k){
dit.orgs1.push(new fAddOrgs1(k));
})
}
}
function fAddOrgs1(p){
var dit =this;
this.id = p.id;
this.naam = p.naam
this.geopend = ko.observable(false);
this.orgs2 = ko.observableArray([]);
if (p.orgs){
$.each(p.orgs, function(j,k){
dit.orgs2.push(new fAddOrgs2(k));
})
}
}
function fAddOrgs2(p){
var dit =this;
this.id = p.id;
this.naam = p.naam
this.geopend = ko.observable(false);
this.orgs3 = ko.observableArray([]);
if (p.orgs){
$.each(p.orgs, function(j,k){
dit.orgs3.push(new fAddOrgs3(k));
})
}
}
function fAddOrgs3(p){
var dit =this;
this.id = p.id;
this.naam = p.naam
this.brin = p.brin
}
function fAddGebruiker(p){
this.userid = p ? p.userid : null;
this.actief = ko.observable(p.OUactief );
this.voornaam = ko.observable(p.voornaam );
this.tussenvoegsel = ko.observable(p.tussenvoegsel);
this.achternaam = ko.observable(p.achternaam );
this.email = ko.observable(p.email ) ;
if (p.gnaam){
this.gnaam = ko.observable(p.gnaam);
}
else{
this.gnaam = ko.observable('');
}
this.autorisatienivoid = ko.observable(p.nivo_id );
this.autorisatienaam = ko.observable(p.autorisatienaam );
this.deleteOK = ko.observable(true); // wordt nu nog niets meegedaan
};
function fMaakEmptyUser(){
this.userid = 0;
this.actief = ko.observable(1);
this.voornaam = ko.observable('');
this.tussenvoegsel = ko.observable('');
this.achternaam = ko.observable('');
this.email = ko.observable('') ;
this.gnaam = ko.observable('');
this.autorisatienivoid = ko.observable(0);
this.autorisatienaam = ko.observable('');
this.deleteOK = ko.observable(true);
}
function fAddFunctieNewUser(p){
var dit = this;
this.id = p.id//functieid
this.functienaam = p.functienaam;
this.gekoppeld = 'F';
this.isFunctie = ko.observable(false);
}
function fAddAutorisatie(p){
this.id = p.id; // is autorisatienivo id
this.naam = p.naam
}
function fAddOtherUser(p){
this.id = p.id ; //userid
this.fullname = p.fullname;
this.autorisatienivoid = ko.observable(10);
}
if (ls.GebruikersModel !== undefined){
ls.GebruikersModel.initModel();
}
else {
ls.GebruikersModel = {
orgs : ko.observable(''),
selectedOrg : ko.observable(),
gebruikers : ko.observableArray([]),
toonactief : ko.observable('1'),
selectedUser : ko.observable(),
selectedUserOld : ko.observable(), // een kopie van de geselecteerde user
copyUser : ko.observable(),
otherUsers : ko.observableArray([]),
functies :ko.observableArray([]),
zoekstring : ko.observable(''),
titel : ko.observable({title: ko.observable(), status: ko.observable()} ),
autorisatieopties : ko.observableArray([]),
focusop : ko.observable(1), //werkt weer eens niet
bezig : ko.observable(false),
initBindings :function(){
var self = ls.GebruikersModel;
if (!ko.dataFor(document.getElementById('pagGebruikersxx')) ) {
ko.applyBindings(ls.GebruikersModel, document.getElementById("pagGebruikersxx"));
}
self.initModel();
},
initModel: function(){
var self=ls.GebruikersModel;
self.gebruikers.removeAll();
$.post("index.php/shared/users/getorgs", function(orgs){
self.orgs('');
if (orgs){
self.orgs(new fAddOrgs(orgs));
self.selectedOrg(self.orgs());
self.fGetGebruikers();
}
self.autorisatieopties.removeAll()
$.post("index.php/shared/autorisatienivos/getautorisaties", function(data){
if (data){
$.each(data, function(i,p){
self.autorisatieopties.push(new fAddAutorisatie(p));
});
}
},'json');
},'json'); // getorgs
},
filteruser: function(others, filternaam){
return others().filter(function(user){
return ( filternaam() == ''||
(user.fullname).toUpperCase() == (filternaam()).toUpperCase() ||
(user.fullname).toUpperCase().indexOf((filternaam()).toUpperCase() ) > -1
);
});
},
fGetGebruikers: function(){
var self = ls.GebruikersModel;
self.gebruikers.removeAll();
if (self.selectedOrg() != undefined){
$.post("index.php/shared/users/getorggebruikers/" + self.selectedOrg().id, function(data){
if (data){
$.each(data, function(i,p){
self.gebruikers.push(new fAddGebruiker(p));
});
}
},'json'); //getorggebruikers
};
},
fPopNew: function(){
var self=ls.GebruikersModel;
self.selectedUser(new fMaakEmptyUser());
// hier ipv 0 het laagst mogelijke recht?
self.selectedUser().autorisatienivoid(self.autorisatieopties()[0].id);
self.titel().title("Nieuwe gebruiker");
self.titel().status(1);
self.focusop(1);
$("#modEditUser").modal("show");
},
fPopEdit: function(){
var self=ls.GebruikersModel;
self.selectedUser(new fMaakEmptyUser())
self.selectedUserOld(this);
self.selectedUser().userid=this.userid;
self.selectedUser().gnaam(this.gnaam());
self.selectedUser().voornaam(this.voornaam());
self.selectedUser().tussenvoegsel(this.tussenvoegsel());
self.selectedUser().achternaam(this.achternaam());
self.selectedUser().email(this.email());
self.selectedUser().autorisatienivoid(this.autorisatienivoid());
self.titel().title("Wijzig gebruikergegevens");
self.titel().status(2);
if (self.selectedUser().gnaam() == "" ) self.titel().status(3);
self.focusop(1);
$("#modEditUser").modal("show");
},
fDelete: function(){
var self=ls.GebruikersModel;
var that = this;
apprise("Weet u zeker dat u deze gebruiker wilt verwijderen? " , {verify:true, textYes:'ja', textNo:'nee'},function(ans){
if (ans) {
$.post("index.php/shared/users/deleteuser/" + that.userid+ '/'+self.selectedOrg().id, function(result){
if (result){
if (result.ok) {
if (!result.user){
self.gebruikers.remove(that);
}
else{
that.actief(result.user.OUactief);
that.autorisatienaam(result.user.autorisatienaam);
that.autorisatienivoid(result.user.nivo_id);
}
}
if (result.errortekst){
apprise(result.errortekst);
}
}
},'json');
}; // if ans
});
},
fSaveActiefStatus: function(){
var self=ls.GebruikersModel;
var that = this;
var status = 1;
if (this.actief() == 1){status = 0 }
var submitData ={userid : this.userid,
status : status}
$.post('index.php/shared/users/savestatus', submitData,function(){
that.actief(status);
});
return true;
},
fSaveUser: function(){
var self =ls.GebruikersModel;
var errortekst = '';
if (self.bezig() ) return;
self.bezig(true);
var submitData = {orgid : self.selectedOrg().id,
id : self.selectedUser().userid,
voornaam : self.selectedUser().voornaam(),
tussenvoegsel : self.selectedUser().tussenvoegsel(),
achternaam : self.selectedUser().achternaam(),
email : self.selectedUser().email(),
gnaam : self.selectedUser().gnaam(),
autorisatienivoid : self.selectedUser().autorisatienivoid(),
status : self.titel().status()} ;
// controleer e-mail
if (!checkEmail(self.selectedUser().email()) ){
apprise("Het e-mailadres is niet correct.");
self.focusop(1);
self.bezig(false);
return;
}
else {
if (self.titel().status()==1){
$.post("index.php/shared/users/adduser", submitData,function(result){
if (result && result.ok){
self.gebruikers.push(new fAddGebruiker(result.user));
self.gebruikers.sort(function(left,right){
lft = left.achternaam().toUpperCase();
rght = right.achternaam().toUpperCase();
return lft == rght ? 0 : (lft < rght ? -1 : 1)
});
self.bezig(false);
$("#modEditUser").modal("hide");
}
else {
apprise(result.errortekst);
self.bezig(false);
self.focusop(1);
}
self.bezig(false);
},'json');
}
else { // status = 2 dus update
$.post("index.php/shared/users/updateuser2",submitData,function(result){
if (result) {
// hier nog alle waarden (terug)zetten.
self.selectedUserOld().actief(result.user.OUactief);
self.selectedUserOld().voornaam(result.user.voornaam);
self.selectedUserOld().tussenvoegsel(result.user.tussenvoegsel);
self.selectedUserOld().achternaam(result.user.achternaam);
self.selectedUserOld().email(result.user.email);
self.selectedUserOld().gnaam(result.user.gnaam);
self.selectedUserOld().autorisatienivoid(result.user.nivo_id);
self.selectedUserOld().autorisatienaam(result.user.autorisatienaam);
self.focusop(1);
self.gebruikers.sort(function(left,right){
lft = left.achternaam().toUpperCase();
rght = right.achternaam().toUpperCase();
return lft == rght ? 0 : (lft < rght ? -1 : 1)
});
if (!result.ok){ apprise(result.errortekst);}
else{
ls.MsgAutoFade(1000,"Gebruikergegevens zijn opgeslagen");
self.selectedUserOld().autorisatienaam(result.user.autorisatienaam);
// ALS DE GEWIJZIGDE GEGEVENS VAN DE HUIDIGE GEBRUIKER ZIJN MOET DE FULLNAME ONDER HET MENU
// WORDEN AANGEPAST
if (result.fullname.length > 0){
ls.MenuModel.user(result.fullname);
}
self.bezig(false);
$("#modEditUser").modal("hide");
}
}
self.bezig(false);
},'json');
}
}
},
fSendNewWW: function(){
var self = ls.GebruikersModel;
if (self.bezig()) return
let sd = {userid: self.selectedUser().userid,
orgid : self.selectedOrg().id}
self.bezig(true)
$.post("index.php/shared/users/SendNewWW" ,sd, function(result){
if (result) {
apprise("Er is een e-mail verstuurd naar " +self.selectedUser().email() + " met daarin het nieuwe wachtwoord.");
}
self.bezig(false)
},'json');
},
fToggleGeopend : function(){
this.geopend(!this.geopend());
},
fSetSelected : function(){
var self = ls.GebruikersModel;
if (self.selectedOrg() && self.selectedOrg().id == this.id) return;
self.selectedOrg(this);
self.fGetGebruikers();
},
fPopCopy : function(){
var self= ls.GebruikersModel;
showAjaxLoader();
self.fGetOtherUsers(function(){self.fOpenPopUp()})
},
fGetOtherUsers: function(callback){
var self= ls.GebruikersModel;
$.post("index.php/shared/users/getotherusers/" + self.selectedOrg().id, function (data) {
self.otherUsers.removeAll();
if (data) {
$.each(data, function (i, p) {
self.otherUsers.push(new fAddOtherUser(p));
}); // each
}
if (typeof callback == "function") callback()
hideAjaxLoader();
}, 'json');
},
fOpenPopUp: function(){
var self= ls.GebruikersModel;
$("#modCopyUser").modal('show');
},
fSaveCopyUser :function(){
var self= ls.GebruikersModel;
var submitData={ userid : self.copyUser().id,
orgid : self.selectedOrg().id,
autorisatie : self.copyUser().autorisatienivoid()}
$.post("index.php/shared/users/savecopyuser", submitData,function(result){
if (result){
self.gebruikers.push(new fAddGebruiker(result));
}
$("#modCopyUser").modal("hide");
},'json');
}
} ; // definition van model
ls.GebruikersModel.initBindings();
}; // else
}// function initGebruikersModel
});