/** * Created by Pensare Software. * User: Theo Weijmer * Date: 05/01/2018 * Time: 15:54 */ dbo.projectsInit = function () { if ( dbo.projectsModel !== undefined ) { } else { dbo.projectsModel = { projects : ko.observableArray( [] ), project : ko.observable(), archive : ko.observable( false ), selectedRowID: ko.observable(), init: function () { var vm = dbo.projectsModel; vm.refreshProjects(); }, newProject: function () { var vm = dbo.projectsModel; dbo.editProjectModal.newEditProject( false, function () { vm.refreshProjects(); } ); }, toggleArchive: function () { var vm = dbo.projectsModel; vm.archive( !vm.archive() ); vm.refreshProjects(); }, editProject: function () { var project = this; var vm = dbo.projectsModel; dbo.editProjectModal.newEditProject( project, function () { vm.refreshProjects(); } ); }, selectProject: function () { var vm = dbo.projectsModel; vm.selectedRowID( this.id ); }, archiveProject: function () { var vm = dbo.projectsModel; var self = this; var status = self.archive == 'F' ? 'T' : 'F'; dbo.projectDataService.archiveProject( self.id, status, function () { vm.refreshProjects(); } ); }, removeProject: function () { var vm = dbo.projectsModel; var self = this; tellMe( { title : 'verwijderen projecte', message : 'weet u zeker dat u de project wilt verwijderen, dit kan niet ongedaan worden gemaakt', notify : true, noText : 'nee verwijder de project niet', yesText : 'ja verwijder de project', modalClass: 'modal-warning' }, function ( response ) { console.log( response ); if ( response ) { dbo.projectDataService.removeProject( self.id, function ( data ) { if ( data.result ) { tellMe( { title : 'project verwijderd', message : 'de project is succesvol verwijderd', modalClass: 'modal-success' }, function () { vm.refreshProjects(); } ); } else { tellMe( { title : 'fout bij verwijderen project', message : 'de project kan niet worden verwijderd', modalClass: 'modal-danger' } ); } } ); } } ); }, refreshProjects: function () { var vm = dbo.projectsModel; dbo.projectDataService.getAllProjects( vm.archive() ? 'T' : 'F', function ( data ) { vm.projects.removeAll(); $.each( data, function ( i, p ) { vm.projects.push( new vm.Project( p ) ); } ) } ); }, Project: function ( data ) { var vm = dbo.projectsModel; var self = this; self.id = data.id; self.projectnumber = data.projectnumber; self.projectleader = data.projectleader.fullname; self.customer = data.customer.name; self.startdate = data.startdate; self.enddate = data.enddate; self.archive = data.archive; self.totalOwnrevenue = 0; self.totalOtherrevenue = 0; self.revenues = ko.observableArray([]); $.each(data.offers, function(i,p){ if( p.accepteddate ){ self.totalOwnrevenue += p.totalOwnrevenue; self.totalOtherrevenue += p.totalOtherrevenue; } self.revenues.push( new vm.Revenue(p)); }); }, Revenue : function(data){ var vm = dbo.projectsModel; var self = this; self.id = data.id; self.offernumber = data.offernumber; self.startdate = dbo.helpers.mysql2date(self.startdate); self.accepteddate = dbo.helpers.mysql2date(self.accepteddate); self.rejectdate = dbo.helpers.mysql2date(self.rejectdate); self.own_revenue = data.own_revenue; self.other_revenue = data.other_revenue; self.acceptance_chance = data.acceptance_chance; self.payed = 0; self.payments = ko.observableArray([]); $.each(data.payments, function(i, p){ self.payed =+ p.paymentamount; self.payments.push( new vm.Payment(p)); }); }, Payment : function(data){ self.id = data.id; self.paymentdate = dbo.helpers.mysql2date(self.paymentdate); self.paymentamount = data.paymentamount; } }; dbo.projectsModel.init(); ko.applyBindings( dbo.projectsModel, document.getElementById( 'PROJECTS' ) ); } }