Diverse aanpassingen nav gesprek met Peter
This commit is contained in:
@@ -1,19 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
defined( 'BASEPATH' ) OR exit( 'No direct script access allowed' );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Pensare Software.
|
* Created by Pensare Software.
|
||||||
* User: Theo Weijmer
|
* User: Theo Weijmer
|
||||||
* Date: 25/12/2017
|
* Date: 25/12/2017
|
||||||
* Time: 10:11
|
* Time: 10:11
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class usersController extends MY_Controller {
|
class usersController extends MY_Controller {
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
if( AUTHENTICATED == FALSE ) die('NO ACCES');
|
if ( AUTHENTICATED == FALSE ) die( 'NO ACCES' );
|
||||||
|
|
||||||
$models = [];
|
$models = [];
|
||||||
$libraries = [];
|
$libraries = [];
|
||||||
@@ -34,6 +34,13 @@ class usersController extends MY_Controller {
|
|||||||
$this->json( $users );
|
$this->json( $users );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getUser( $userID )
|
||||||
|
{
|
||||||
|
$user = User::find( $userID );
|
||||||
|
|
||||||
|
$this->json( $user );
|
||||||
|
}
|
||||||
|
|
||||||
public function getUniqueprojectEmployees()
|
public function getUniqueprojectEmployees()
|
||||||
{
|
{
|
||||||
$projectEmployees = User::getUniqueProjectUsers();
|
$projectEmployees = User::getUniqueProjectUsers();
|
||||||
|
|||||||
@@ -75,7 +75,11 @@ class ProjectsController extends MY_Controller {
|
|||||||
|
|
||||||
Offer::whereId( $offerID )->update( ['project_id' => $project->id] );
|
Offer::whereId( $offerID )->update( ['project_id' => $project->id] );
|
||||||
|
|
||||||
Projectemployee::create( ['project_id' => $project->id, 'user_id' => $offer->offerleader_id] );
|
Projectemployee::create( [
|
||||||
|
'project_id' => $project->id,
|
||||||
|
'user_id' => $offer->offerleader_id,
|
||||||
|
'tarif' => User::find( $offer->offerleader_id )->hourlyrate
|
||||||
|
] );
|
||||||
|
|
||||||
$this->json( ['success' => TRUE, 'projectnumber' => $projectnumber] );
|
$this->json( ['success' => TRUE, 'projectnumber' => $projectnumber] );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class validation {
|
|||||||
|
|
||||||
public function checkDecimal()
|
public function checkDecimal()
|
||||||
{
|
{
|
||||||
$value = (bool) preg_match( '/^[\-+]?[0-9]+\.[0-9]+$/', $this->fieldValue );
|
$value = is_numeric( $this->fieldValue );
|
||||||
|
|
||||||
if ( ! $value ) $this->errorMessages[] = 'alleen getallen toegestaan';
|
if ( ! $value ) $this->errorMessages[] = 'alleen getallen toegestaan';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ class UserValidation extends BaseValidation {
|
|||||||
'fieldname' => 'username',
|
'fieldname' => 'username',
|
||||||
'model' => 'User_model',
|
'model' => 'User_model',
|
||||||
'field' => 'username'
|
'field' => 'username'
|
||||||
|
],
|
||||||
|
'hourlyrate' =>[
|
||||||
|
'validations' => 'decimal',
|
||||||
|
'fieldname' => 'uurtarief'
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="panel panel-bordered panel-primary panel-line">
|
<div class="panel panel-bordered panel-primary panel-line">
|
||||||
<div class="panel-heading panel-heading-project">
|
<div class="panel-heading panel-heading-project">
|
||||||
<h3 class="">
|
<h3 class="">
|
||||||
facturen
|
uitgaande facturen
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body panel-body-project">
|
<div class="panel-body panel-body-project">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="panel panel-bordered panel-primary panel-line">
|
<div class="panel panel-bordered panel-primary panel-line">
|
||||||
<div class="panel-heading panel-heading-project">
|
<div class="panel-heading panel-heading-project">
|
||||||
<h3 class="">
|
<h3 class="">
|
||||||
kosten
|
inkomende facturen
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body panel-body-project">
|
<div class="panel-body panel-body-project">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="row" form-inline>
|
<div class="row form-inline">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-md-3 col-form-label">klant</label>
|
<label class="col-md-3 col-form-label">klant</label>
|
||||||
@@ -73,6 +73,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row" style="margin-top:10px;">
|
||||||
|
<div class="col-md-5">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-md-3 form-control-label">omschrijving</label>
|
||||||
|
<div class="col-md-9">
|
||||||
|
<input type="text"
|
||||||
|
class="form-control form-control-sm"
|
||||||
|
data-bind="textInput:projectname, event:{keyup:saveProjectname}"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="form-group row">
|
||||||
|
<h4 class="form-control-label">eigenomzet:
|
||||||
|
<i class="icon fa-euro"> </i><span data-bind="text:ownRevenue"></span>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="form-group row">
|
||||||
|
<h4 class="form-control-label">overige omzet:
|
||||||
|
<i class="icon fa-euro"> </i><span data-bind="text:otherRevenue"></span>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<h3>te besteden uren :<span data-bind="text:(totalBudget() - totalHours())"></span></h3>
|
<h3>te besteden uren :<span data-bind="text:(totalBudget() - totalHours())"></span></h3>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
optionsValue:'id',
|
optionsValue:'id',
|
||||||
value:employeeID,
|
value:employeeID,
|
||||||
optionsCaption:'naam',
|
optionsCaption:'naam',
|
||||||
event:{change:$root.saveProjectemployee},
|
event:{change:$root.changeProjectemployee},
|
||||||
visible:inEdit"></select>
|
visible:inEdit"></select>
|
||||||
</td>
|
</td>
|
||||||
<td class="align-right">
|
<td class="align-right">
|
||||||
|
|||||||
@@ -52,9 +52,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="tab-pane animation-slide-top" id="financial">
|
<div class="tab-pane animation-slide-top" id="financial">
|
||||||
<div class="row" data-bind="fadeVisible:customerID()">
|
<div class="row" data-bind="fadeVisible:customerID()">
|
||||||
<div class="col-md-5">
|
<!-- <div class="col-md-5">-->
|
||||||
<?php $this->load->view( 'modals/partials/_projectoffers' ); ?>
|
<!-- --><?php //$this->load->view( 'modals/partials/_projectoffers' ); ?>
|
||||||
</div>
|
<!-- </div>-->
|
||||||
<div class="col-md-7">
|
<div class="col-md-7">
|
||||||
<?php $this->load->view( 'modals/partials/_projectcosts' ); ?>
|
<?php $this->load->view( 'modals/partials/_projectcosts' ); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -111,6 +111,23 @@
|
|||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
uurtarief
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-4">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-euro"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="uurtarief"
|
||||||
|
class="form-control align-right"
|
||||||
|
data-bind="textInput:hourlyRate,
|
||||||
|
event:{keyup:validateNumber.bind($data, 'hourlyRate')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-xl-3"> </div>
|
<div class="col-xl-3"> </div>
|
||||||
<!-- ko foreach:roles -->
|
<!-- ko foreach:roles -->
|
||||||
|
|||||||
@@ -32,7 +32,11 @@ $( function () {
|
|||||||
archive : ko.observable( false ),
|
archive : ko.observable( false ),
|
||||||
startdate : ko.observable( null ),
|
startdate : ko.observable( null ),
|
||||||
enddate : ko.observable( null ),
|
enddate : ko.observable( null ),
|
||||||
|
projectname : ko.observable(),
|
||||||
busy : false,
|
busy : false,
|
||||||
|
ownRevenue : ko.observable(),
|
||||||
|
otherRevenue : ko.observable(),
|
||||||
|
projectname : ko.observable(),
|
||||||
|
|
||||||
init: function () {
|
init: function () {
|
||||||
var vm = dbo.editProjectModal;
|
var vm = dbo.editProjectModal;
|
||||||
@@ -251,6 +255,17 @@ $( function () {
|
|||||||
vm.init();
|
vm.init();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
saveProjectname: function () {
|
||||||
|
var vm = dbo.editProjectModal;
|
||||||
|
if ( timeout ) {
|
||||||
|
clearTimeout( timeout );
|
||||||
|
timeout = null;
|
||||||
|
}
|
||||||
|
timeout = setTimeout( function () {
|
||||||
|
vm.saveProject();
|
||||||
|
}, 700 );
|
||||||
|
},
|
||||||
|
|
||||||
saveProject: function () {
|
saveProject: function () {
|
||||||
var vm = dbo.editProjectModal;
|
var vm = dbo.editProjectModal;
|
||||||
|
|
||||||
@@ -260,6 +275,7 @@ $( function () {
|
|||||||
id : vm.projectID,
|
id : vm.projectID,
|
||||||
customer_id : vm.customerID(),
|
customer_id : vm.customerID(),
|
||||||
projectleader_id: vm.projectleaderID(),
|
projectleader_id: vm.projectleaderID(),
|
||||||
|
projectname : vm.projectname(),
|
||||||
startdate : vm.startdate(),
|
startdate : vm.startdate(),
|
||||||
enddate : vm.enddate()
|
enddate : vm.enddate()
|
||||||
}
|
}
|
||||||
@@ -269,9 +285,19 @@ $( function () {
|
|||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
|
||||||
saveProjectemployee: function () {
|
changeProjectemployee: function () {
|
||||||
var vm = dbo.editProjectModal;
|
var vm = dbo.editProjectModal;
|
||||||
var self = this;
|
var self = this;
|
||||||
|
dbo.userDataService.getUser( this.employeeID(), function ( data ) {
|
||||||
|
self.tarif( data.hourlyrate );
|
||||||
|
|
||||||
|
vm.saveProjectemployee( self );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
saveProjectemployee: function ( self = false ) {
|
||||||
|
var vm = dbo.editProjectModal;
|
||||||
|
if ( !self ) self = this;
|
||||||
|
|
||||||
$.each( vm.users(), function ( i, p ) {
|
$.each( vm.users(), function ( i, p ) {
|
||||||
if ( self.employeeID == p.id ) self.fullname( p.fullname );
|
if ( self.employeeID == p.id ) self.fullname( p.fullname );
|
||||||
@@ -517,6 +543,7 @@ $( function () {
|
|||||||
vm.startdate( dbo.helpers.mysql2date( data.startdate ) );
|
vm.startdate( dbo.helpers.mysql2date( data.startdate ) );
|
||||||
vm.enddate( dbo.helpers.mysql2date( data.enddate ) );
|
vm.enddate( dbo.helpers.mysql2date( data.enddate ) );
|
||||||
vm.projectnumber( data.projectnumber );
|
vm.projectnumber( data.projectnumber );
|
||||||
|
vm.projectname( data.projectname );
|
||||||
|
|
||||||
vm.projectEmployees.removeAll();
|
vm.projectEmployees.removeAll();
|
||||||
vm.projecthours.removeAll();
|
vm.projecthours.removeAll();
|
||||||
@@ -537,8 +564,11 @@ $( function () {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
vm.offers.removeAll();
|
vm.offers.removeAll();
|
||||||
|
|
||||||
$.each( data.offers, function ( i, p ) {
|
$.each( data.offers, function ( i, p ) {
|
||||||
|
if ( i == 0 ) {
|
||||||
|
vm.ownRevenue( p.own_revenue );
|
||||||
|
vm.otherRevenue( p.other_revenue );
|
||||||
|
}
|
||||||
vm.offers.push( new dbo.offersService.Offer( p ) );
|
vm.offers.push( new dbo.offersService.Offer( p ) );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
@@ -560,8 +590,8 @@ $( function () {
|
|||||||
self.id = data.id;
|
self.id = data.id;
|
||||||
self.employeeID = ko.observable( data.user_id );
|
self.employeeID = ko.observable( data.user_id );
|
||||||
self.fullname = ko.observable( data.user ? data.user.fullname : '#NB' );
|
self.fullname = ko.observable( data.user ? data.user.fullname : '#NB' );
|
||||||
self.tarif = ko.observable( data.tarif ? data.tarif.toString().replace( '.', ',' ) : 0 );
|
self.tarif = ko.observable( data.tarif ? data.tarif : 0 );
|
||||||
self.budget = ko.observable( data.budget ? data.budget.toString().replace( '.', ',' ) : 0 );
|
self.budget = ko.observable( data.budget ? data.budget : 0 );
|
||||||
self.inEdit = ko.observable( sessionStorage.editEmployee == data.id );
|
self.inEdit = ko.observable( sessionStorage.editEmployee == data.id );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ $( function () {
|
|||||||
username : ko.observable(),
|
username : ko.observable(),
|
||||||
email : ko.observable(),
|
email : ko.observable(),
|
||||||
role : ko.observable(),
|
role : ko.observable(),
|
||||||
callback : null,
|
hourlyRate: ko.observable(),
|
||||||
|
|
||||||
|
callback: null,
|
||||||
|
|
||||||
init: function () {
|
init: function () {
|
||||||
var vm = dbo.editUserModal;
|
var vm = dbo.editUserModal;
|
||||||
@@ -53,7 +55,8 @@ $( function () {
|
|||||||
lastname : vm.lastname(),
|
lastname : vm.lastname(),
|
||||||
username : vm.username(),
|
username : vm.username(),
|
||||||
email : vm.email(),
|
email : vm.email(),
|
||||||
role : vm.role()
|
role : vm.role(),
|
||||||
|
hourlyrate: vm.hourlyRate()
|
||||||
}
|
}
|
||||||
|
|
||||||
dbo.userDataService.saveUser( submitDATA, function ( data ) {
|
dbo.userDataService.saveUser( submitDATA, function ( data ) {
|
||||||
@@ -62,10 +65,10 @@ $( function () {
|
|||||||
title : 'gebruiker aangemaakt',
|
title : 'gebruiker aangemaakt',
|
||||||
message : 'gebuiker is succesvol opgeslagen',
|
message : 'gebuiker is succesvol opgeslagen',
|
||||||
modalClass: 'modal-success'
|
modalClass: 'modal-success'
|
||||||
}, function(){
|
}, function () {
|
||||||
vm.hideUserModal();
|
vm.hideUserModal();
|
||||||
|
|
||||||
if( typeof(vm.callback) == 'function') vm.callback();
|
if ( typeof(vm.callback) == 'function' ) vm.callback();
|
||||||
} );
|
} );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -97,6 +100,7 @@ $( function () {
|
|||||||
vm.username( user.username || '' );
|
vm.username( user.username || '' );
|
||||||
vm.email( user.email || '' );
|
vm.email( user.email || '' );
|
||||||
vm.role( user.role || null );
|
vm.role( user.role || null );
|
||||||
|
vm.hourlyRate( user.hourlyrate || 0 );
|
||||||
},
|
},
|
||||||
|
|
||||||
showUserModal: function () {
|
showUserModal: function () {
|
||||||
@@ -105,6 +109,11 @@ $( function () {
|
|||||||
|
|
||||||
hideUserModal: function () {
|
hideUserModal: function () {
|
||||||
$( "#user-modal" ).modal( 'hide' );
|
$( "#user-modal" ).modal( 'hide' );
|
||||||
|
},
|
||||||
|
|
||||||
|
validateNumber: function ( field ) {
|
||||||
|
var vm = dbo.editUserModal;
|
||||||
|
vm[field]( dbo.helpers.validateNumber( vm[field](), true ) );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user