/** * Created by Pensare Software. * User: Theo Weijmer * Date: 25/12/2017 * Time: 17:32 */ $( function () { dbo.editUserModal = { id : null, roles : ko.observableArray( [] ), firstname : ko.observable(), lastname : ko.observable(), middlename: ko.observable(), username : ko.observable(), email : ko.observable(), role : ko.observable(), hourlyRate: ko.observable(), callback: null, init: function () { var vm = dbo.editUserModal; dbo.rolesDataservice.getAllRoles( 'F', function ( data ) { vm.roles( data ); } ); }, newEditUser: function ( user, callback ) { var vm = dbo.editUserModal; vm.callback = typeof(callback) == 'function' ? callback : null; vm.showUserModal(); vm.setUser( user ); }, setRole: function () { var vm = dbo.editUserModal; vm.role( this.rolelevel ); }, saveUser: function () { var vm = dbo.editUserModal; if ( vm.formValid == false ) return; var submitDATA = { id : vm.id, firstname : vm.firstname(), middlename: vm.middlename(), lastname : vm.lastname(), username : vm.username(), email : vm.email(), role : vm.role(), hourlyrate: vm.hourlyRate() } dbo.userDataService.saveUser( submitDATA, function ( data ) { if ( data.success ) { tellMe( { title : 'gebruiker aangemaakt', message : 'gebuiker is succesvol opgeslagen', modalClass: 'modal-success' }, function () { vm.hideUserModal(); if ( typeof(vm.callback) == 'function' ) vm.callback(); } ); return; } var errorMessage = ''; tellMe( { title : 'fout aanmaken gebruiker', message : errorMessage, modalClass: 'modal-danger' } ); } ); }, setUser: function ( user ) { var vm = dbo.editUserModal; var role = isNaN( user.role ) ? null : user.role; vm.id = user.id || 0; vm.firstname( user.firstname || '' ); vm.lastname( user.lastname || '' ); vm.middlename( user.middlename || '' ); vm.username( user.username || '' ); vm.email( user.email || '' ); vm.role( user.role || null ); vm.hourlyRate( user.hourlyrate || 0 ); }, showUserModal: function () { $( "#user-modal" ).modal( 'show' ); }, hideUserModal: function () { $( "#user-modal" ).modal( 'hide' ); }, validateNumber: function ( field ) { var vm = dbo.editUserModal; vm[field]( dbo.helpers.validateNumber( vm[field](), true ) ); } }; dbo.editUserModal.init(); dbo.editUserModal.lastnameInvalid = ko.pureComputed( function () { if ( !this.lastname() ) return true; if ( this.lastname().length < 2 ) return true; return false; }, dbo.editUserModal ); dbo.editUserModal.firstnameInvalid = ko.pureComputed( function () { if ( !this.firstname() ) return true; if ( this.firstname().length < 2 ) return true; return false; }, dbo.editUserModal ); dbo.editUserModal.usernameInvalid = ko.pureComputed( function () { if ( !this.username() ) return true; if ( this.username().length < 4 ) return true; return false; }, dbo.editUserModal ); dbo.editUserModal.emailInvalid = ko.pureComputed( function () { if ( !this.email() ) return true; return !dbo.helpers.validateEmail( this.email() ); }, dbo.editUserModal ); dbo.editUserModal.formValid = ko.pureComputed( function () { if ( this.firstnameInvalid() ) return false; if ( this.lastnameInvalid() ) return false; if ( this.usernameInvalid() ) return false; if ( this.emailInvalid() ) return false; return true; }, dbo.editUserModal ) ko.applyBindings( dbo.editUserModal, document.getElementById( 'user-modal' ) ); } );