From 970aa5397182184a2acaa13322bbeb33194d9426 Mon Sep 17 00:00:00 2001 From: Theo Weijmer Date: Thu, 18 Jan 2018 08:45:09 +0100 Subject: [PATCH] projecten --- .../controllers/projects/OffersController.php | 4 +- .../projects/ProjectsController.php | 21 +- .../libraries/projects/RemoveProject.php | 10 +- application/models/eloquent/Offer.php | 4 +- application/models/eloquent/Project.php | 52 ++++- .../models/eloquent/Projectemployee.php | 30 +++ .../modals/partials/_projectemployees.php | 63 ++++++ .../views/modals/partials/_projectoffers.php | 49 ++++ application/views/modals/project_modal.php | 105 ++++++--- application/views/partials/_js.php | 23 +- public/css/main.css | 6 + .../js/lib/dataservices/offerDataservice.js | 2 +- .../lib/dataservices/projectsDataservice.js | 22 +- .../lib/{modules => }/modals/commentModal.js | 0 .../lib/{modules => }/modals/customerModal.js | 0 .../lib/{modules => }/modals/externalModal.js | 0 .../js/lib/{modules => }/modals/offerModal.js | 0 public/js/lib/modals/projectModal.js | 102 +++++++++ .../js/lib/{modules => }/modals/userModal.js | 0 public/js/lib/modules/modals/projectModal.js | 28 --- .../js/lib/modules/projects/offersModule.js | 210 ++---------------- .../js/lib/modules/projects/projectsModule.js | 6 +- public/js/lib/services/commentsService.js | 47 ++++ public/js/lib/services/documentService.js | 78 +++++++ public/js/lib/services/offersService.js | 112 ++++++++++ 25 files changed, 689 insertions(+), 285 deletions(-) create mode 100644 application/models/eloquent/Projectemployee.php create mode 100644 application/views/modals/partials/_projectemployees.php create mode 100644 application/views/modals/partials/_projectoffers.php rename public/js/lib/{modules => }/modals/commentModal.js (100%) rename public/js/lib/{modules => }/modals/customerModal.js (100%) rename public/js/lib/{modules => }/modals/externalModal.js (100%) rename public/js/lib/{modules => }/modals/offerModal.js (100%) create mode 100644 public/js/lib/modals/projectModal.js rename public/js/lib/{modules => }/modals/userModal.js (100%) delete mode 100644 public/js/lib/modules/modals/projectModal.js create mode 100644 public/js/lib/services/commentsService.js create mode 100644 public/js/lib/services/documentService.js create mode 100644 public/js/lib/services/offersService.js diff --git a/application/controllers/projects/OffersController.php b/application/controllers/projects/OffersController.php index c357c5e..22883ef 100644 --- a/application/controllers/projects/OffersController.php +++ b/application/controllers/projects/OffersController.php @@ -27,9 +27,9 @@ class OffersController extends MY_Controller { } - public function getAllOffers( $archive = 'F' ) + public function getAllOffers( $projectID, $archive = 'F' ) { - $offers = Offer::getAllOffers( $archive ); + $offers = Offer::getAllOffers( $projectID, $archive ); $this->json( $offers ); } diff --git a/application/controllers/projects/ProjectsController.php b/application/controllers/projects/ProjectsController.php index d51e92b..1bef08f 100644 --- a/application/controllers/projects/ProjectsController.php +++ b/application/controllers/projects/ProjectsController.php @@ -29,11 +29,30 @@ class ProjectsController extends MY_Controller { public function getAllProjects( $archive = 'F' ) { - $projects = Project::getAllProjects( $archive ); + $projects = Project::getAllProjects( FALSE, $archive ); $this->json( $projects ); } + public function getProject( $projectID ) + { + $project = Project::getProject( $projectID ); + + $this->json( $project ); + } + + public function addProject() + { + $projectID = Project::createProject(); + + $this->json( $projectID ); + } + + public function addProjectEmployee( $projectID ) + { + Projectemployee::createProjectEmployee( $projectID ); + } + public function saveProject() { $projectValidation = new ProjectValidation(); diff --git a/application/libraries/projects/RemoveProject.php b/application/libraries/projects/RemoveProject.php index d0cc42a..409c125 100644 --- a/application/libraries/projects/RemoveProject.php +++ b/application/libraries/projects/RemoveProject.php @@ -8,7 +8,7 @@ class RemoveProject { - private $offerID; + private $projectID; private $allowDelete = TRUE; public function __construct( $projectID ) @@ -23,9 +23,9 @@ class RemoveProject { return $this->allowDelete; } - private function setProjectID( $customerID ) + private function setProjectID( $projectID ) { - $this->offerID = $customerID; + $this->projectID = $projectID; } private function handle() @@ -35,9 +35,9 @@ class RemoveProject { private function checkForOffers() { - $offers = Offer::whereProjectId($this->setProjectID); + $offers = Offer::whereProjectId($this->projectID); - if( $offers->count > 0 ) $this->allowDelete = FALSE; + if( $offers->count() > 0 ) $this->allowDelete = FALSE; } } \ No newline at end of file diff --git a/application/models/eloquent/Offer.php b/application/models/eloquent/Offer.php index 6253e90..9946a34 100644 --- a/application/models/eloquent/Offer.php +++ b/application/models/eloquent/Offer.php @@ -26,12 +26,14 @@ class Offer extends BaseModel { return $this->belongsTo( 'Customer' ); } - public static function getAllOffers( $archive = 'F' ) + public static function getAllOffers( $projectID, $archive = 'F' ) { $offers = Offer::orderBy( 'startdate' ) ->with( 'customer' ) ->with( 'project' ); + if ( $projectID ) $offers = $offers->whereProjectId( $projectID ); + if ( $archive == 'F' ) $offers = $offers->whereArchive( 'F' ); $offers = $offers->get(); diff --git a/application/models/eloquent/Project.php b/application/models/eloquent/Project.php index f10c159..8ff774e 100644 --- a/application/models/eloquent/Project.php +++ b/application/models/eloquent/Project.php @@ -16,6 +16,11 @@ class Project extends BaseModel { return $this->hasMany( 'Offer' ); } + public function projectemployees() + { + return $this->hasMany( 'Projectemployee' ); + } + public function projectleader() { return $this->belongsTo( 'User', 'projectleader_id' ); @@ -28,7 +33,34 @@ class Project extends BaseModel { public static function getAllProjects( $archive = 'F' ) { - $projects = Project::with( [ + $projects = Project::getBaseProject(); + + if ( $archive == 'F' ) $projects = $projects->whereArchive( 'F' ); + + $projects = $projects->get(); + + return $projects; + } + + public static function getProject( $projectID ) + { + $project = Project::getBaseProject(); + + $project = $project->whereArchive( 'F' ) + ->whereId( $projectID ) + ->first(); + + return $project; + } + + public static function removeProject( $projectID ) + { + Project::whereId( $projectID )->delete(); + } + + public static function getBaseProject() + { + $project = Project::with( [ 'projectleader' => function ( $q ) { $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); }] ) @@ -40,17 +72,21 @@ class Project extends BaseModel { $q->selectRaw( '*' ); }] ); }] ) + ->with( [ + 'projectemployees.user' => function ( $q ) { + $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); + }] ) ->with( 'customer' ); - if ( $archive == 'F' ) $projects = $projects->whereArchive( 'F' ); - - $projects = $projects->get(); - - return $projects; + return $project; } - public static function removeProject( $projectID ) + public static function createProject() { - Project::whereId($projectID)->delete(); + $data = ['startdate'=> date('Y-m-d')]; + + $project = Project::create($data); + + return $project->id; } } \ No newline at end of file diff --git a/application/models/eloquent/Projectemployee.php b/application/models/eloquent/Projectemployee.php new file mode 100644 index 0000000..e868b81 --- /dev/null +++ b/application/models/eloquent/Projectemployee.php @@ -0,0 +1,30 @@ +belongsTo( 'Project' ); + } + + public function user() + { + return $this->belongsTo( 'User' ); + } + + public static function createProjectEmployee( $projectID ) + { + $projectemployee = Projectemployee::create( [ + 'project_id' => $projectID + ] ); + + return $projectemployee->id; + } + +} \ No newline at end of file diff --git a/application/views/modals/partials/_projectemployees.php b/application/views/modals/partials/_projectemployees.php new file mode 100644 index 0000000..f1897e7 --- /dev/null +++ b/application/views/modals/partials/_projectemployees.php @@ -0,0 +1,63 @@ + +
+
+

+ project medewerkers +

+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ naam + + tarief + + budget + + start + + eind + +   +
+ + + + + uur + + + + + + + +
+ +
+
+
\ No newline at end of file diff --git a/application/views/modals/partials/_projectoffers.php b/application/views/modals/partials/_projectoffers.php new file mode 100644 index 0000000..9092cf0 --- /dev/null +++ b/application/views/modals/partials/_projectoffers.php @@ -0,0 +1,49 @@ +
+
+

+ offertes +

+
+
+ + + + + + + + + + + + + + + + + +
+ nummer + + start + + eigen omzet + + overig omzet + +   +
+ + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/application/views/modals/project_modal.php b/application/views/modals/project_modal.php index e410f17..95e6893 100644 --- a/application/views/modals/project_modal.php +++ b/application/views/modals/project_modal.php @@ -1,44 +1,77 @@ -
- - - - - - - - - - - +
-
-
-
-

- offertes -

-
-
- - - - - - - -
- nummer - - start - - eigen omzet - - overig omzet -
+
+
+ +
+
+
+
+ +
+ + + + +
+
+
+
+
+
+ +
+ + + + +
+
+
+
+
+ +
+
+ + + + + + + + + + + +
+
+ load->view( 'modals/partials/_projectoffers' ); ?> +
+
+ load->view( 'modals/partials/_projectemployees' ); ?> +
diff --git a/application/views/partials/_js.php b/application/views/partials/_js.php index 2294d63..7d9300e 100644 --- a/application/views/partials/_js.php +++ b/application/views/partials/_js.php @@ -60,20 +60,29 @@ + + + - - - - - - - + + + + + + + + + + + + + diff --git a/public/css/main.css b/public/css/main.css index 9cbe760..f3b4b71 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -44,6 +44,11 @@ color: #fff !important; } +.table-cyanish-header { + background-color: #0099B8; + color: #fff !important; +} + .table-indigoish-header { background-color: #4D64FA; color: #fff !important; @@ -207,6 +212,7 @@ height:100%; background-color: #CCD5DB; z-index:1035; + display:none; } .project-page-header{ height:50px; diff --git a/public/js/lib/dataservices/offerDataservice.js b/public/js/lib/dataservices/offerDataservice.js index 0175a62..53c4344 100644 --- a/public/js/lib/dataservices/offerDataservice.js +++ b/public/js/lib/dataservices/offerDataservice.js @@ -7,7 +7,7 @@ dbo.offerDataService = { - getAllOffers: function ( archive = 'F', callback ) { + getAllOffers: function ( projectID, archive = 'F', callback ) { $.getJSON( 'index.php/projects/offersController/getAllOffers/' + archive ) .done( function ( data ) { callback( data ); diff --git a/public/js/lib/dataservices/projectsDataservice.js b/public/js/lib/dataservices/projectsDataservice.js index 64c4874..7247354 100644 --- a/public/js/lib/dataservices/projectsDataservice.js +++ b/public/js/lib/dataservices/projectsDataservice.js @@ -14,13 +14,31 @@ dbo.projectDataService = { } ); }, - getProject: function ( userID, callback ) { - $.getJSON( 'index.php/projects/projectsController/getProject/' + userID ) + getProject: function ( projectID, callback ) { + $.getJSON( 'index.php/projects/projectsController/getProject/' + projectID ) .done( function ( data ) { callback( data ); } ); }, + addProject: function ( callback ) { + $.getJSON( 'index.php/projects/projectsController/addProject', function ( data ) { + callback( data ); + } ); + }, + + addProject: function ( callback ) { + $.getJSON( 'index.php/projects/projectsController/addProject', function ( data ) { + callback( data ); + } ); + }, + + addProjectEmployee: function ( projectID, callback ) { + $.getJSON( 'index.php/projects/projectsController/addProjectemployee/' + projectID, function ( data ) { + callback( data ); + } ); + }, + saveProject: function ( submitDATA, callback ) { $.post( 'index.php/projects/projectsController/saveProject', submitDATA, function () { }, 'json' ) diff --git a/public/js/lib/modules/modals/commentModal.js b/public/js/lib/modals/commentModal.js similarity index 100% rename from public/js/lib/modules/modals/commentModal.js rename to public/js/lib/modals/commentModal.js diff --git a/public/js/lib/modules/modals/customerModal.js b/public/js/lib/modals/customerModal.js similarity index 100% rename from public/js/lib/modules/modals/customerModal.js rename to public/js/lib/modals/customerModal.js diff --git a/public/js/lib/modules/modals/externalModal.js b/public/js/lib/modals/externalModal.js similarity index 100% rename from public/js/lib/modules/modals/externalModal.js rename to public/js/lib/modals/externalModal.js diff --git a/public/js/lib/modules/modals/offerModal.js b/public/js/lib/modals/offerModal.js similarity index 100% rename from public/js/lib/modules/modals/offerModal.js rename to public/js/lib/modals/offerModal.js diff --git a/public/js/lib/modals/projectModal.js b/public/js/lib/modals/projectModal.js new file mode 100644 index 0000000..376acbf --- /dev/null +++ b/public/js/lib/modals/projectModal.js @@ -0,0 +1,102 @@ +/** + * Created by Pensare Software. + * Offer: Theo Weijmer + * Date: 25/12/2017 + * Time: 17:32 + */ + +$( function () { + dbo.editProjectModal = { + + offers : ko.observableArray( [] ), + projectEmployees: ko.observableArray( [] ), + customers : ko.observableArray( [] ), + showProject : ko.observable( false ), + projectID : null, + callback : null, + customerID : ko.observable( null ), + archive : ko.observable( false ), + startdate : ko.observable( null ), + enddate : ko.observable( null ), + + init: function () { + var vm = dbo.editProjectModal; + + vm.refreshProject(); + + dbo.customerDataService.getAllCustomers( 'F', function ( data ) { + vm.customers( data ); + } ); + }, + + addProject: function ( callback ) { + var vm = dbo.editProjectModal; + + vm.callback = callback; + + dbo.projectDataService.addProject( function ( data ) { + vm.projectID = data; + + vm.showProject( true ); + + vm.init(); + } ); + }, + + addProjectEmployee: function () { + var vm = dbo.editProjectModal; + dbo.projectDataService.addProjectemployee( function ( projectID ) { + vm.projectID = projectID; + + vm.refreshProject(); + } ); + }, + + saveCustomerID: function () { + + }, + + closeProject: function () { + var vm = dbo.editProjectModal; + + vm.showProject( false ); + }, + + refreshProject: function () { + var vm = dbo.editProjectModal; + + dbo.projectDataService.getProject( vm.projectID, function ( data ) { + vm.Project( data ); + } ); + }, + + Project: function ( data ) { + var vm = dbo.editProjectModal; + var self = this; + + vm.id = data.id; + vm.customerID( data.customer_id ); + vm.startdate( data.startdate ); + vm.enddate( data.enddate ); + + self.projectEmployees = ko.observableArray( [] ); + $.each( data.employees, function ( i, p ) { + self.projectEmployees.push( new vm.Projectemployee( p ) ); + } ); + }, + + Projectemployee: function ( data ) { + var self = this; + + self.id = data.id; + self.employee_id = data.employee_id; + self.fullname = data.user ? data.user.fullname : '#NB'; + self.tarif = data.tarif; + self.budget = data.budget; + self.startdate = dbo.helpers.mysql2date( data.startdate ); + self.enddate = dbo.helpers.mysql2date( data.enddate ); + } + }; + + ko.applyBindings( dbo.editProjectModal, document.getElementById( 'project-modal' ) ); +} ); \ No newline at end of file diff --git a/public/js/lib/modules/modals/userModal.js b/public/js/lib/modals/userModal.js similarity index 100% rename from public/js/lib/modules/modals/userModal.js rename to public/js/lib/modals/userModal.js diff --git a/public/js/lib/modules/modals/projectModal.js b/public/js/lib/modules/modals/projectModal.js deleted file mode 100644 index a431f96..0000000 --- a/public/js/lib/modules/modals/projectModal.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Created by Pensare Software. - * Offer: Theo Weijmer - * Date: 25/12/2017 - * Time: 17:32 - */ - -$( function () { - dbo.editProjectModal = { - - showProject: ko.observable( false ), - - newEditProject: function () { - var vm = dbo.editProjectModal; - - vm.showProject( true ); - }, - - closeProject: function(){ - var vm = dbo.editProjectModal; - - vm.showProject( false ); - } - }; - - ko.applyBindings( dbo.editProjectModal, document.getElementById( 'project-modal' ) ); - -} ); \ No newline at end of file diff --git a/public/js/lib/modules/projects/offersModule.js b/public/js/lib/modules/projects/offersModule.js index f266572..01c4490 100644 --- a/public/js/lib/modules/projects/offersModule.js +++ b/public/js/lib/modules/projects/offersModule.js @@ -22,218 +22,46 @@ dbo.offersInit = function () { selectedRowID: ko.observable(), init: function () { - var vm = dbo.offersModel; + var service = dbo.offersService; + service.vm = dbo.offersModel; - vm.refreshOffers(); + service.refreshOffers(); }, newOffer: function () { - var vm = dbo.offersModel; - dbo.editOfferModal.newEditOffer( false, function () { - vm.refreshOffers(); - } ); + var service = dbo.offersService; + service.vm = dbo.offersModel; + + service.newOffer(); }, toggleArchive: function () { - var vm = dbo.offersModel; + var service = dbo.offersService; + service.vm = dbo.offersModel; - vm.archive( !vm.archive() ); - - vm.refreshOffers(); + service.toggleArchive(); }, editOffer: function () { - var offer = this; - var vm = dbo.offersModel; + var service = dbo.offersService; + service.vm = dbo.offersModel; - dbo.editOfferModal.newEditOffer( offer, function () { - vm.refreshOffers(); - } ); - }, - - selectOffer: function () { - var vm = dbo.offersModel; - - vm.selectedRowID( this.id ); - - vm.refreshComments(); - - vm.refreshDocuments(); - }, - - addDocument: function ( data, evt ) { - var vm = dbo.offersModel; - uploadFile( evt.target.files[0], vm.selectedRowID(), vm.tableName, function () { - vm.refreshDocuments(); - } ); - }, - - addComment: function () { - var vm = dbo.offersModel; - dbo.commentsDataService.addComment( vm.selectedRowID(), vm.tableName, function ( commentID ) { - dbo.commentModel.showComment( commentID, function () { - vm.refreshComments(); - } ) - } ); - }, - - editComment: function () { - var vm = dbo.offersModel; - dbo.commentModel.showComment( this.id, function () { - vm.refreshComments(); - } ); - }, - - downloadDocument: function () { - window.open( 'index.php/projects/documentscontroller/downloaddocument/' + this.id ); + service.editOffer(); }, archiveOffer: function () { - var vm = dbo.offersModel; - var self = this; + var service = dbo.offersService; + service.vm = dbo.offersModel; - var status = self.archive == 'F' ? 'T' : 'F'; - - dbo.offerDataService.archiveOffer( self.id, status, function () { - vm.refreshOffers(); - } ); + service.archiveOffer( this ); }, removeOffer: function () { - var vm = dbo.offersModel; - var self = this; + var service = dbo.offersService; + service.vm = dbo.offersModel; - tellMe( { - title : 'verwijderen offerte', - message : 'weet u zeker dat u de offerte wilt verwijderen, dit kan niet ongedaan worden gemaakt', - notify : true, - noText : 'nee verwijder de offerte niet', - yesText : 'ja verwijder de offerte', - modalClass: 'modal-warning' - }, function ( response ) { - console.log( response ); - if ( response ) { - dbo.offerDataService.removeOffer( self.id, function ( data ) { - if ( data.result ) { - tellMe( { - title : 'offerte verwijderd', - message : 'de offerte is succesvol verwijderd', - modalClass: 'modal-success' - }, function () { - vm.refreshOffers(); - } ); - } else { - tellMe( { - title : 'fout bij verwijderen offerte', - message : 'de offerte kan niet worden verwijderd', - modalClass: 'modal-danger' - } ); - } - } ); - } - } ); - }, - - removeFile: function () { - var vm = dbo.offersModel; - var self = this; - - tellMe( { - title : 'verwijderen document', - message : 'weet u zeker dat u hjet document wilt verwijderen, dit kan niet ongedaan worden gemaakt', - notify : true, - noText : 'nee verwijder het document niet', - yesText : 'ja verwijder het document', - modalClass: 'modal-warning' - }, function ( response ) { - console.log( response ); - if ( response ) { - dbo.documentsDataService.removeDocument( self.id, function ( data ) { - if ( data.result ) { - tellMe( { - title : 'document verwijderd', - message : 'het document is succesvol verwijderd', - modalClass: 'modal-success' - }, function () { - vm.refreshDocuments(); - } ); - } else { - tellMe( { - title : 'fout bij verwijderen document', - message : 'het document kan niet worden verwijderd', - modalClass: 'modal-danger' - } ); - } - } ); - } - } ); - - }, - - refreshOffers: function () { - var vm = dbo.offersModel; - - dbo.offerDataService.getAllOffers( vm.archive() ? 'T' : 'F', function ( data ) { - vm.offers.removeAll(); - $.each( data, function ( i, p ) { - vm.offers.push( new vm.Offer( p ) ); - } ) - } ); - }, - - refreshComments: function () { - var vm = dbo.offersModel; - - dbo.commentsDataService.getComments( vm.selectedRowID(), vm.tableName, function ( data ) { - vm.comments.removeAll(); - console.log( data ); - $.each( data, function ( i, p ) { - vm.comments.push( new vm.Comment( p ) ); - } ); - } ); - }, - - refreshDocuments: function () { - var vm = dbo.offersModel; - - dbo.documentsDataService.getdocuments( vm.selectedRowID(), vm.tableName, function ( data ) { - vm.documents.removeAll(); - - $.each( data, function ( i, p ) { - vm.documents.push( new vm.Document( p ) ); - } ) - } ) - }, - - Offer: function ( data ) { - this.id = data.id; - this.offernumber = data.offernumber; - this.acceptance_chance = data.acceptance_chance; - this.projectNumber = data.project ? data.project.projectnumber : null; - this.customerName = data.customer ? data.customer.name : null; - this.customer_id = data.customer_id; - this.startdate = data.startdate ? dbo.helpers.mysql2date( data.startdate ) : null; - this.rejectdate = data.rejectdate ? dbo.helpers.mysql2date( data.rejectdate ) : null; - this.accepteddate = data.accepteddate ? dbo.helpers.mysql2date( data.accepteddate ) : null; - this.acceptance_chance = data.acceptance_chance ? data.acceptance_chance : 0; - this.archive = data.archive; - }, - - Comment: function ( data ) { - this.id = data.id; - this.comment_date = data.comment_date; - this.fullname = data.user.fullname; - this.comment = ko.observable( data.comment ); - }, - - Document: function ( data ) { - this.id = data.id; - this.originalname = data.originalname; - this.uploaddate = data.uploaddate; - this.fullname = data.user.fullname; + service.removeOffer( this ); } - - }; dbo.offersModel.init(); diff --git a/public/js/lib/modules/projects/projectsModule.js b/public/js/lib/modules/projects/projectsModule.js index 676a58c..ee8ff32 100644 --- a/public/js/lib/modules/projects/projectsModule.js +++ b/public/js/lib/modules/projects/projectsModule.js @@ -26,7 +26,7 @@ dbo.projectsInit = function () { newProject: function () { var vm = dbo.projectsModel; - dbo.editProjectModal.newEditProject( false, function () { + dbo.editProjectModal.addProject( false, function () { vm.refreshProjects(); } ); }, @@ -117,8 +117,8 @@ dbo.projectsInit = function () { var self = this; self.id = data.id; self.projectnumber = data.projectnumber; - self.projectleader = data.projectleader.fullname; - self.customer = data.customer.name; + 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; diff --git a/public/js/lib/services/commentsService.js b/public/js/lib/services/commentsService.js new file mode 100644 index 0000000..64b36c7 --- /dev/null +++ b/public/js/lib/services/commentsService.js @@ -0,0 +1,47 @@ +/** + * Created by Pensare Software. + * User: Theo Weijmer + * Date: 17/01/2018 + * Time: 09:55 + */ + +dbo.commentsService = { + + + tableName: 'OFFER', + + + addComment: function () { + var vm = dbo.offersModel; + dbo.commentsDataService.addComment( vm.selectedRowID(), vm.tableName, function ( commentID ) { + dbo.commentModel.showComment( commentID, function () { + vm.refreshComments(); + } ) + } ); + }, + + editComment: function () { + var vm = dbo.offersModel; + dbo.commentModel.showComment( this.id, function () { + vm.refreshComments(); + } ); + }, + refreshComments: function () { + var vm = dbo.offersModel; + + dbo.commentsDataService.getComments( vm.selectedRowID(), vm.tableName, function ( data ) { + vm.comments.removeAll(); + console.log( data ); + $.each( data, function ( i, p ) { + vm.comments.push( new vm.Comment( p ) ); + } ); + } ); + }, + + Comment: function ( data ) { + this.id = data.id; + this.comment_date = data.comment_date; + this.fullname = data.user.fullname; + this.comment = ko.observable( data.comment ); + }, +} \ No newline at end of file diff --git a/public/js/lib/services/documentService.js b/public/js/lib/services/documentService.js new file mode 100644 index 0000000..802a815 --- /dev/null +++ b/public/js/lib/services/documentService.js @@ -0,0 +1,78 @@ +/** + * Created by Pensare Software. + * User: Theo Weijmer + * Date: 17/01/2018 + * Time: 09:53 + */ + + +dbo.documentService = { + + tableName: 'OFFER', + + + removeFile: function (that) { + var vm = dbo.offersService.vm; + + tellMe( { + title : 'verwijderen document', + message : 'weet u zeker dat u hjet document wilt verwijderen, dit kan niet ongedaan worden gemaakt', + notify : true, + noText : 'nee verwijder het document niet', + yesText : 'ja verwijder het document', + modalClass: 'modal-warning' + }, function ( response ) { + console.log( response ); + if ( response ) { + dbo.documentsDataService.removeDocument( self.id, function ( data ) { + if ( data.result ) { + tellMe( { + title : 'document verwijderd', + message : 'het document is succesvol verwijderd', + modalClass: 'modal-success' + }, function () { + vm.refreshDocuments(); + } ); + } else { + tellMe( { + title : 'fout bij verwijderen document', + message : 'het document kan niet worden verwijderd', + modalClass: 'modal-danger' + } ); + } + } ); + } + } ); + + }, + + addDocument: function ( data, evt ) { + var vm = dbo.offersModel; + uploadFile( evt.target.files[0], vm.selectedRowID(), vm.tableName, function () { + vm.refreshDocuments(); + } ); + }, + + refreshDocuments: function () { + var vm = dbo.offersModel; + + dbo.documentsDataService.getdocuments( vm.selectedRowID(), vm.tableName, function ( data ) { + vm.documents.removeAll(); + + $.each( data, function ( i, p ) { + vm.documents.push( new vm.Document( p ) ); + } ) + } ) + }, + + downloadDocument: function () { + window.open( 'index.php/projects/documentscontroller/downloaddocument/' + this.id ); + }, + + Document: function ( data ) { + this.id = data.id; + this.originalname = data.originalname; + this.uploaddate = data.uploaddate; + this.fullname = data.user.fullname; + } +} \ No newline at end of file diff --git a/public/js/lib/services/offersService.js b/public/js/lib/services/offersService.js new file mode 100644 index 0000000..d2f446f --- /dev/null +++ b/public/js/lib/services/offersService.js @@ -0,0 +1,112 @@ +/** + * Created by Pensare Software. + * User: Theo Weijmer + * Date: 17/01/2018 + * Time: 09:31 + */ + + +dbo.offersService = { + + vm: null, + + init: function () { + var service = dbo.offersService; + + service.refreshOffers(); + }, + + newOffer: function () { + var service = dbo.offersService; + + dbo.editOfferModal.newEditOffer( false, function () { + service.refreshOffers(); + } ); + }, + + toggleArchive: function () { + var service = dbo.offersService; + var vm = dbo.offersService.vm; + + vm.archive( !vm.archive() ); + + service.refreshOffers(); + }, + + editOffer: function ( that ) { + var offer = that; + + dbo.editOfferModal.newEditOffer( offer, function () { + dbo.offersService.refreshOffers(); + } ); + }, + + archiveOffer: function ( that ) { + var service = dbo.offersService; + + var status = that.archive == 'F' ? 'T' : 'F'; + + dbo.offerDataService.archiveOffer( that.id, status, function () { + service.refreshOffers(); + } ); + }, + + removeOffer: function ( that ) { + var service = dbo.offersService; + + tellMe( { + title : 'verwijderen offerte', + message : 'weet u zeker dat u de offerte wilt verwijderen, dit kan niet ongedaan worden gemaakt', + notify : true, + noText : 'nee verwijder de offerte niet', + yesText : 'ja verwijder de offerte', + modalClass: 'modal-warning' + }, function ( response ) { + if ( response ) { + dbo.offerDataService.removeOffer( that.id, function ( data ) { + if ( data.result ) { + tellMe( { + title : 'offerte verwijderd', + message : 'de offerte is succesvol verwijderd', + modalClass: 'modal-success' + }, function () { + service.refreshOffers(); + } ); + } else { + tellMe( { + title : 'fout bij verwijderen offerte', + message : 'de offerte kan niet worden verwijderd', + modalClass: 'modal-danger' + } ); + } + } ); + } + } ); + }, + + refreshOffers: function (projectID = false) { + var vm = dbo.offersService.vm; + var self = dbo.offersService; + + dbo.offerDataService.getAllOffers( projectID, vm.archive() ? 'T' : 'F', function ( data ) { + vm.offers.removeAll(); + $.each( data, function ( i, p ) { + vm.offers.push( new self.Offer( p ) ); + } ) + } ); + }, + + Offer: function ( data ) { + this.id = data.id; + this.offernumber = data.offernumber; + this.acceptance_chance = data.acceptance_chance; + this.projectNumber = data.project ? data.project.projectnumber : null; + this.customerName = data.customer ? data.customer.name : null; + this.customer_id = data.customer_id; + this.startdate = data.startdate ? dbo.helpers.mysql2date( data.startdate ) : null; + this.rejectdate = data.rejectdate ? dbo.helpers.mysql2date( data.rejectdate ) : null; + this.accepteddate = data.accepteddate ? dbo.helpers.mysql2date( data.accepteddate ) : null; + this.acceptance_chance = data.acceptance_chance ? data.acceptance_chance : 0; + this.archive = data.archive; + } +}; \ No newline at end of file