dashboard

This commit is contained in:
2019-11-13 08:09:28 +01:00
parent 92a460f0ff
commit f185d467fb
7 changed files with 244 additions and 21 deletions
@@ -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
+46 -1
View File
@@ -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>
+20 -19
View File
@@ -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' ) );
}
};
+2
View File
@@ -31,6 +31,8 @@ $( function () {
ko.applyBindings( dbo.menuModel, document.getElementById( "dbois-app" ) );
window.dbo['dashboardInit']();
vm.initialized( true );
} );
},