projecten
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by Pensare Software.
|
||||
* User: Theo Weijmer
|
||||
* Date: 17/01/2018
|
||||
* Time: 10:25
|
||||
*/
|
||||
|
||||
class Projectemployee extends BaseModel {
|
||||
|
||||
public function project()
|
||||
{
|
||||
return $this->belongsTo( 'Project' );
|
||||
}
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo( 'User' );
|
||||
}
|
||||
|
||||
public static function createProjectEmployee( $projectID )
|
||||
{
|
||||
$projectemployee = Projectemployee::create( [
|
||||
'project_id' => $projectID
|
||||
] );
|
||||
|
||||
return $projectemployee->id;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
|
||||
<div class="panel panel-bordered panel-primary panel-line panel-project">
|
||||
<div class="panel-heading panel-heading-project">
|
||||
<h3 class="">
|
||||
project medewerkers
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body panel-body-project">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<th class="table-cyanish-header">
|
||||
naam
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
tarief
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
budget
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
start
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
eind
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:projectEmployees">
|
||||
<td>
|
||||
<span data-bind="text:fullname"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:tarif"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:budget"></span> uur
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:startdate"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:enddate"></span>
|
||||
</td>
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editOffer"></i>
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeProject, css:{'whiteish':$root.selectedRowID() == id}"></i>
|
||||
</td>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:addProjectEmployee">
|
||||
nieuwe project medewerker
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,49 @@
|
||||
<div class="panel panel-bordered panel-primary panel-line panel-project">
|
||||
<div class="panel-heading panel-heading-project">
|
||||
<h3 class="">
|
||||
offertes
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body panel-body-project">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<th class="table-cyanish-header">
|
||||
nummer
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
start
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
eigen omzet
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
overig omzet
|
||||
</th>
|
||||
<th class="table-cyanish-header">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
<tbody data-bind="foreach:offers">
|
||||
<tr>
|
||||
<td>
|
||||
<span data-bind="text:offernumber"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:startdate"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:own_revenue"></span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-bind="text:other_revenue"></span>
|
||||
</td>
|
||||
<td>
|
||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editOffer"></i>
|
||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||
data-bind="click:$root.removeProject, css:{'whiteish':$root.selectedRowID() == id}"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,44 +1,77 @@
|
||||
<div class="project-page" id="project-modal" data-bind="visible:showProject()">
|
||||
<!-- <div class="container">-->
|
||||
<!-- <div class="row">-->
|
||||
<!-- <div class="col-xs-12">-->
|
||||
<!-- <div class="project-page-header">-->
|
||||
<!-- <h3>nieuw / wijzigen project-->
|
||||
<!-- <button class="btn btn-default pull-right" data-bind="click:closeProject">x</button>-->
|
||||
<!-- </h3>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="project-page" id="project-modal" data-bind="fadeVisible:showProject()">
|
||||
<div class="container" style="margin-top:50px;">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="panel panel-bordered panel-primary panel-line panel-project">
|
||||
<div class="panel-heading panel-heading-project">
|
||||
<h3 class="">
|
||||
offertes
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body panel-body-project">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<th class="table-indigoish-header">
|
||||
nummer
|
||||
</th>
|
||||
<th class="table-indigoish-header">
|
||||
start
|
||||
</th>
|
||||
<th class="table-indigoish-header">
|
||||
eigen omzet
|
||||
</th>
|
||||
<th class="table-indigoish-header">
|
||||
overig omzet
|
||||
</th>
|
||||
</thead>
|
||||
</table>
|
||||
<div class="col-md-3 form-inline">
|
||||
<div class="form-group row">
|
||||
<label class="col-xs-3 col-form-label">klant</label>
|
||||
<div class="col-xs-9">
|
||||
<select class="form-control form-control-sm"
|
||||
data-bind="options:customers,
|
||||
optionsText:'name',
|
||||
optionsValue: 'id',
|
||||
value:customerID,
|
||||
disable:offers().length > 0,
|
||||
optionsCaption:'selecteer klant',
|
||||
event:{change:saveCustomerID}"></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group row">
|
||||
<label class="col-xs-3 col-form-label">begin project</label>
|
||||
<div class="input-group input-group-icon">
|
||||
<span class="input-group-addon">
|
||||
<i class="icon fa-calendar"></i>
|
||||
</span>
|
||||
<input type="text"
|
||||
placeholder="start project"
|
||||
class="form-control"
|
||||
readonly
|
||||
data-bind="datepicker:{dateFormat: 'dd-mm-yy' }, value:startdate">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 form-inline">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group row">
|
||||
<label class="col-xs-3 col-form-label">eind project</label>
|
||||
<div class="input-group input-group-icon">
|
||||
<span class="input-group-addon">
|
||||
<i class="icon fa-calendar"></i>
|
||||
</span>
|
||||
<input type="text"
|
||||
placeholder="eind project"
|
||||
class="form-control"
|
||||
readonly
|
||||
data-bind="datepicker:{dateFormat: 'dd-mm-yy' }, value:enddate">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-danger" data-bind="click:closeProject">
|
||||
sluit
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="container">-->
|
||||
<!-- <div class="row">-->
|
||||
<!-- <div class="col-xs-12">-->
|
||||
<!-- <div class="project-page-header">-->
|
||||
<!-- <h3>nieuw / wijzigen project-->
|
||||
<!-- <button class="btn btn-default pull-right" data-bind="click:closeProject">x</button>-->
|
||||
<!-- </h3>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="row" data-bind="fadeVisible:customerID()">
|
||||
<div class="col-md-6">
|
||||
<?php $this->load->view( 'modals/partials/_projectoffers' ); ?>
|
||||
</div>
|
||||
<div class="col-md-6" data-bind="fadeVisible:customerID()">
|
||||
<?php $this->load->view( 'modals/partials/_projectemployees' ); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -60,20 +60,29 @@
|
||||
|
||||
<script src="js/lib/main.js"></script>
|
||||
<script src="js/lib/modules/specials/tellmeModule.js"></script>
|
||||
|
||||
|
||||
<!-- ***********MODULES************* -->
|
||||
<script src="js/lib/modules/menuModule.js"></script>
|
||||
<script src="js/lib/modules/beheer/usersModule.js"></script>
|
||||
<script src="js/lib/modules/beheer/customersModule.js"></script>
|
||||
<script src="js/lib/modules/beheer/externalsModule.js"></script>
|
||||
<script src="js/lib/modules/projects/offersModule.js"></script>
|
||||
<script src="js/lib/modules/projects/projectsModule.js"></script>
|
||||
<script src="js/lib/modules/modals/userModal.js"></script>
|
||||
<script src="js/lib/modules/modals/customerModal.js"></script>
|
||||
<script src="js/lib/modules/modals/externalModal.js"></script>
|
||||
<script src="js/lib/modules/modals/offerModal.js"></script>
|
||||
<script src="js/lib/modules/modals/projectModal.js"></script>
|
||||
<script src="js/lib/modules/modals/commentModal.js"></script>
|
||||
|
||||
<!---->
|
||||
<!-- ***********MODALS************* -->
|
||||
<script src="js/lib/modals/userModal.js"></script>
|
||||
<script src="js/lib/modals/customerModal.js"></script>
|
||||
<script src="js/lib/modals/externalModal.js"></script>
|
||||
<script src="js/lib/modals/offerModal.js"></script>
|
||||
<script src="js/lib/modals/projectModal.js"></script>
|
||||
<script src="js/lib/modals/commentModal.js"></script>
|
||||
|
||||
<!-- ***********MODALS************* -->
|
||||
<script src="js/lib/services/offersService.js"></script>
|
||||
|
||||
|
||||
<!-- ***********DATASERVICES************* -->
|
||||
<script src="js/lib/dataservices/pageDataservice.js"></script>
|
||||
<script src="js/lib/dataservices/userDataservice.js"></script>
|
||||
<script src="js/lib/dataservices/customerDataservice.js"></script>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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' )
|
||||
|
||||
@@ -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' ) );
|
||||
} );
|
||||
@@ -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' ) );
|
||||
|
||||
} );
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
},
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user