/** * 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(), busy : false, init: function () { var vm = dbo.projectsModel; vm.refreshProjects(); }, newProject: function () { var vm = dbo.projectsModel; dbo.editProjectModal.addProject( 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.editProject( project.id, 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 ? data.projectleader.fullname : '#NB'; self.customer = data.customer ? data.customer.name : '#NB'; 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' ) ); } }