dashboard
This commit is contained in:
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 31/10/2019
|
||||||
|
* Time: 14:53
|
||||||
|
*/
|
||||||
|
|
||||||
|
class DashboardController extends MY_Controller {
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOwhp()
|
||||||
|
{
|
||||||
|
$recapprojects = new Recapprojects( 'F', FALSE, FALSE );
|
||||||
|
|
||||||
|
$projects = $recapprojects->getProjects();
|
||||||
|
|
||||||
|
$currentFinancialYear = 0;
|
||||||
|
$totalRevenues = 0;
|
||||||
|
$totalOwp = 0;
|
||||||
|
$ownRevenue = 0;
|
||||||
|
$available = 0;
|
||||||
|
foreach ( $projects as $project )
|
||||||
|
{
|
||||||
|
$revenues = 0;
|
||||||
|
foreach ( $project['employees'] as $employee )
|
||||||
|
{
|
||||||
|
$revenues += $employee['revenues'];
|
||||||
|
}
|
||||||
|
$currentFinancialYear += $project['current_financial_year'];
|
||||||
|
|
||||||
|
$owp = $project['own_revenue'] - $revenues;
|
||||||
|
$owp = $owp > 0 ? $owp : 0;
|
||||||
|
$totalOwp += $owp;
|
||||||
|
|
||||||
|
$ownRevenue += $project['own_revenue'];
|
||||||
|
$totalRevenues += $revenues;
|
||||||
|
$available += $project['budgetAvailable'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->json( [
|
||||||
|
'totalOwp' => $totalOwp,
|
||||||
|
'currentFinancialYear' => $currentFinancialYear,
|
||||||
|
'owpNextyear' => $totalOwp - $currentFinancialYear,
|
||||||
|
'revenuesNextyear' => $totalOwp / 0.4,
|
||||||
|
'totalRevenues' => $totalRevenues
|
||||||
|
] );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@ class Projectemployee extends BaseModel {
|
|||||||
return $this->belongsTo( 'Project' );
|
return $this->belongsTo( 'Project' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< Updated upstream
|
||||||
public function user()
|
public function user()
|
||||||
{
|
{
|
||||||
return $this->belongsTo( 'User' );
|
return $this->belongsTo( 'User' );
|
||||||
@@ -98,4 +99,65 @@ class Projectemployee extends BaseModel {
|
|||||||
Projectemployee::whereId( $projectemployeeID )->delete();
|
Projectemployee::whereId( $projectemployeeID )->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
public static function getProjectemployeeDetailsPerProject( $projectID )
|
||||||
|
{
|
||||||
|
$details = Projectemployee::selectRaw( '
|
||||||
|
USR.id, budget, project_id, ROUND(SUM(hours), 0) AS hours, ROUND(SUM(hours * tarif), 0) AS revenues, projectemployees.id AS projectemployeeID' )
|
||||||
|
->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' )
|
||||||
|
->join( 'projecthours AS PRH', 'PRH.projectemployee_id', '=', 'projectemployees.id' )
|
||||||
|
->where( 'PRH.hourtype_id', '=', 1 )
|
||||||
|
// ->where( 'budget', '!=', 0 )
|
||||||
|
->groupBy( 'projectemployees.id' )
|
||||||
|
->havingRaw( 'ROUND(SUM(hours), 0) > 0' );
|
||||||
|
|
||||||
|
if( $projectID)
|
||||||
|
$details = $details->where( 'projectemployees.project_id', '=', $projectID );
|
||||||
|
|
||||||
|
$details = $details->get();
|
||||||
|
|
||||||
|
return $details;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function firstOrCreateProjectemployee( $userID, $projectID )
|
||||||
|
{
|
||||||
|
$projectemployee = self::whereUserId( $userID )->whereProjectId( $projectID );
|
||||||
|
|
||||||
|
if ( $projectemployee->count() > 0 ) return $projectemployee->first();
|
||||||
|
|
||||||
|
$user = User::find( $userID );
|
||||||
|
|
||||||
|
$tarif = $user ? $user->hourlyrate : 0;
|
||||||
|
|
||||||
|
$projectemployee = Projectemployee::create( [
|
||||||
|
'project_id' => $projectID,
|
||||||
|
'user_id' => $userID,
|
||||||
|
'tarif' => $tarif
|
||||||
|
] );
|
||||||
|
|
||||||
|
return $projectemployee;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function createProjectEmployee( $projectID )
|
||||||
|
{
|
||||||
|
$projectemployee = Projectemployee::create( [
|
||||||
|
'project_id' => $projectID
|
||||||
|
] );
|
||||||
|
|
||||||
|
return $projectemployee->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function saveProjectemployee( $projectemployeeID, $projectemployee )
|
||||||
|
{
|
||||||
|
Projectemployee::whereId( $projectemployeeID )
|
||||||
|
->update( $projectemployee );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function removeProjectemployee( $projectemployeeID )
|
||||||
|
{
|
||||||
|
Projectemployee::whereId( $projectemployeeID )->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
>>>>>>> Stashed changes
|
||||||
|
|||||||
@@ -1 +1,46 @@
|
|||||||
<h1>DASHBOARD</h1>
|
<div class="row">
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<div class="panel panel-success">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">
|
||||||
|
Onderhanden werkpositie
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body" data-bind="width:owp">
|
||||||
|
<br>
|
||||||
|
<h4>
|
||||||
|
<span style="width:80%; float:left;">Onderhanden werkpositie huidig jaar:</span>
|
||||||
|
<span><strong data-bind="text:owpThisYear"></strong></span>
|
||||||
|
</h4>
|
||||||
|
<h4>
|
||||||
|
<span style="width:80%; float:left;">Onderhanden werkpositie volgend jaar:</span>
|
||||||
|
<span><strong data-bind="text:owpNextYear"></strong></span>
|
||||||
|
</h4>
|
||||||
|
<h4>
|
||||||
|
<span style="width:80%; float:left;">Totaal:</span>
|
||||||
|
<span><strong data-bind="text:owpTotal"></strong></span>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<div class="panel panel-warning">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">
|
||||||
|
Omzet
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body" data-bind="width:owp">
|
||||||
|
<br>
|
||||||
|
<h4>
|
||||||
|
<span style="width:80%; float:left;">Omzet komende jaar:</span>
|
||||||
|
<span><strong data-bind="text:owpThisYear"></strong></span>
|
||||||
|
</h4>
|
||||||
|
<h4>
|
||||||
|
<span style="width:80%; float:left;">Omzet totaal gerealiseerd lopend jaar:</span>
|
||||||
|
<span><strong data-bind="text:revenuesNextyear"></strong></span>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -33,7 +33,27 @@
|
|||||||
<script src="js/lib/modules/specials/tellmeModule.js?v=<?= $this->version ?>"></script>
|
<script src="js/lib/modules/specials/tellmeModule.js?v=<?= $this->version ?>"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ***********DATASERVICES************* -->
|
||||||
|
<script src="js/lib/dataservices/dashboardDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/pageDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/userDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/customerDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/externalDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/rolesDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/offerDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/commentsDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/documentsDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/projectsDataservice.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/vatDataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/employeehoursDataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/reportsDataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/invoiceDataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/reservationsDataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/employeeTargetDataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
<script src="js/lib/dataservices/authorisationdataService.js?v=<?= $this->version ?>"></script>
|
||||||
|
|
||||||
<!-- ***********MODULES************* -->
|
<!-- ***********MODULES************* -->
|
||||||
|
<script src="js/lib/modules/dashboard/dashboardModule.js?v=<?= $this->version ?>"></script>
|
||||||
<script src="js/lib/modules/menuModule.js?v=<?= $this->version ?>"></script>
|
<script src="js/lib/modules/menuModule.js?v=<?= $this->version ?>"></script>
|
||||||
<script src="js/lib/modules/beheer/usersModule.js?v=<?= $this->version ?>"></script>
|
<script src="js/lib/modules/beheer/usersModule.js?v=<?= $this->version ?>"></script>
|
||||||
<script src="js/lib/modules/beheer/customersModule.js?v=<?= $this->version ?>"></script>
|
<script src="js/lib/modules/beheer/customersModule.js?v=<?= $this->version ?>"></script>
|
||||||
@@ -62,25 +82,6 @@
|
|||||||
<!-- ***********MODALS************* -->
|
<!-- ***********MODALS************* -->
|
||||||
<script src="js/lib/services/offersService.js?v=<?= $this->version ?>"></script>
|
<script src="js/lib/services/offersService.js?v=<?= $this->version ?>"></script>
|
||||||
|
|
||||||
|
|
||||||
<!-- ***********DATASERVICES************* -->
|
|
||||||
<script src="js/lib/dataservices/pageDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/userDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/customerDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/externalDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/rolesDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/offerDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/commentsDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/documentsDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/projectsDataservice.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/vatDataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/employeehoursDataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/reportsDataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/invoiceDataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/reservationsDataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/employeeTargetDataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
<script src="js/lib/dataservices/authorisationdataService.js?v=<?= $this->version ?>"></script>
|
|
||||||
|
|
||||||
<script src="js/lib/services/chartService.js?v=<?= $this->version ?>"></script>
|
<script src="js/lib/services/chartService.js?v=<?= $this->version ?>"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 31/10/2019
|
||||||
|
* Time: 14:44
|
||||||
|
*/
|
||||||
|
|
||||||
|
dbo.dashboardDataservice = {
|
||||||
|
|
||||||
|
getOwhp : function(callback){
|
||||||
|
$.getJSON('index.php/dashboard/dashboardController/getOwhp')
|
||||||
|
.done(function(data){
|
||||||
|
callback(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 31/10/2019
|
||||||
|
* Time: 14:31
|
||||||
|
*/
|
||||||
|
|
||||||
|
dbo.dashboardInit = function () {
|
||||||
|
console.log( dbo.dashboardModel );
|
||||||
|
if ( dbo.dashboardModel !== undefined ) {
|
||||||
|
|
||||||
|
dbo.dashboardModel.init();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
dbo.dashboardModel = {
|
||||||
|
|
||||||
|
|
||||||
|
owpThisYear : ko.observable( null ),
|
||||||
|
owpNextYear : ko.observable( null ),
|
||||||
|
owpTotal : ko.observable( null ),
|
||||||
|
revenuesNextyear: ko.observable( null ),
|
||||||
|
totalRevenues : ko.observable( null ),
|
||||||
|
|
||||||
|
init: function () {
|
||||||
|
var self = dbo.dashboardModel;
|
||||||
|
dbo.dashboardDataservice.getOwhp( function ( data ) {
|
||||||
|
self.owpThisYear( dbo.helpers.thousandSeparator( data.currentFinancialYear ) );
|
||||||
|
self.owpNextYear( dbo.helpers.thousandSeparator( data.owpNextyear ) );
|
||||||
|
self.owpTotal( dbo.helpers.thousandSeparator( data.totalOwp ) );
|
||||||
|
self.revenuesNextyear( dbo.helpers.thousandSeparator( data.revenuesNextyear ) );
|
||||||
|
self.totalRevenues( dbo.helpers.thousandSeparator( data.totalRevenues ) );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
dbo.dashboardModel.init();
|
||||||
|
|
||||||
|
ko.applyBindings( dbo.dashboardModel, document.getElementById( 'DASHBOARD' ) );
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -31,6 +31,8 @@ $( function () {
|
|||||||
|
|
||||||
ko.applyBindings( dbo.menuModel, document.getElementById( "dbois-app" ) );
|
ko.applyBindings( dbo.menuModel, document.getElementById( "dbois-app" ) );
|
||||||
|
|
||||||
|
window.dbo['dashboardInit']();
|
||||||
|
|
||||||
vm.initialized( true );
|
vm.initialized( true );
|
||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user