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' );
|
||||
}
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo( 'User' );
|
||||
@@ -98,4 +99,65 @@ class Projectemployee extends BaseModel {
|
||||
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>
|
||||
|
||||
|
||||
<!-- ***********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************* -->
|
||||
<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/beheer/usersModule.js?v=<?= $this->version ?>"></script>
|
||||
<script src="js/lib/modules/beheer/customersModule.js?v=<?= $this->version ?>"></script>
|
||||
@@ -62,25 +82,6 @@
|
||||
<!-- ***********MODALS************* -->
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
@@ -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" ) );
|
||||
|
||||
window.dbo['dashboardInit']();
|
||||
|
||||
vm.initialized( true );
|
||||
} );
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user