/** * Created by Pensare Software. * User: Theo Weijmer * Date: 05/01/2018 * Time: 15:54 */ dbo.projectsInit = function () { var timeout; if ( dbo.projectsModel !== undefined ) { dbo.projectsModel.refreshProjects(); } else { dbo.projectsModel = { projects : ko.observableArray( [] ), project : ko.observable(), archive : ko.observable( false ), selectedRowID : ko.observable(), busy : false, search : ko.observable(), order : ko.observable( 'projectnumber' ), direction : ko.observable(), totalOwnRevenue : ko.observable( 0 ), totalOtherrevenue: ko.observable( 0 ), totalCosts : ko.observable( 0 ), total : ko.observable( 0 ), init: function () { var vm = dbo.projectsModel; vm.refreshProjects(); }, searchProjects: function () { var vm = dbo.projectsModel; if ( timeout ) { clearTimeout( timeout ); timeout = null; } timeout = setTimeout( function () { vm.refreshProjects(); }, 700 ); }, directionOrderProjects: function ( field ) { var vm = dbo.projectsModel; if ( field == vm.order() ) { vm.direction( !vm.direction() ); } else { vm.direction( true ); } vm.order( field ); 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, verwijder eerst de gerelateerde gegevens (facturen, reserveringen, projectmedewerkers, prognoses) ', modalClass: 'modal-danger' } ); } } ); } } ); }, refreshProjects: function () { var vm = dbo.projectsModel; var projectsObject = { archive : vm.archive() ? 'T' : 'F', search : vm.search(), order : vm.order(), direction: vm.direction() ? 'ASC' : 'DESC' } dbo.projectDataService.getAllProjects( projectsObject, function ( data ) { vm.totalOwnRevenue(0); vm.totalOtherrevenue(0); vm.totalCosts(0); vm.total(0); 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.projectname = data.projectname; self.customer = data.customer ? data.customer.name : '#NB'; self.startdate = data.startdate; self.enddate = data.enddate; self.archive = data.archive; self.totalOwnrevenue = Number( data.offer.own_revenue ); self.totalOtherrevenue = Number( data.offer.other_revenue ); self.costs = Number( data.offer.costs ); self.total = Number( data.offer.own_revenue ) + Number( data.offer.other_revenue ) + Number( data.offer.costs ); vm.totalOwnRevenue( vm.totalOwnRevenue() + self.totalOwnrevenue ) vm.totalOtherrevenue( vm.totalOtherrevenue() + self.totalOtherrevenue ) vm.totalCosts( vm.totalCosts() + self.costs ) vm.total( Math.round(vm.total() + self.total) ) }, 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' ) ); } }