diff --git a/application/controllers/dashboard/DashboardController.php b/application/controllers/dashboard/DashboardController.php new file mode 100644 index 0000000..baefb07 --- /dev/null +++ b/application/controllers/dashboard/DashboardController.php @@ -0,0 +1,54 @@ +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 + ] ); + } + +} diff --git a/application/models/eloquent/Projectemployee.php b/application/models/eloquent/Projectemployee.php index d2d1579..48b7372 100644 --- a/application/models/eloquent/Projectemployee.php +++ b/application/models/eloquent/Projectemployee.php @@ -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(); } -} \ No newline at end of file +} +======= + 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 diff --git a/application/views/pages/dashboard_view.php b/application/views/pages/dashboard_view.php index 9a9b30b..1aaead2 100644 --- a/application/views/pages/dashboard_view.php +++ b/application/views/pages/dashboard_view.php @@ -1 +1,46 @@ -

DASHBOARD

\ No newline at end of file +
+
+
+
+

+ Onderhanden werkpositie +

+
+
+
+

+ Onderhanden werkpositie huidig jaar: + +

+

+ Onderhanden werkpositie volgend jaar: + +

+

+ Totaal: + +

+
+
+
+
+
+
+

+ Omzet +

+
+
+
+

+ Omzet komende jaar: + +

+

+ Omzet totaal gerealiseerd lopend jaar: + +

+
+
+
+
diff --git a/application/views/partials/_js.php b/application/views/partials/_js.php index b0e8c21..fca3121 100644 --- a/application/views/partials/_js.php +++ b/application/views/partials/_js.php @@ -33,7 +33,27 @@ + + + + + + + + + + + + + + + + + + + + @@ -62,25 +82,6 @@ - - - - - - - - - - - - - - - - - - - diff --git a/public/js/lib/dataservices/dashboardDataservice.js b/public/js/lib/dataservices/dashboardDataservice.js new file mode 100644 index 0000000..6502456 --- /dev/null +++ b/public/js/lib/dataservices/dashboardDataservice.js @@ -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); + }); + } + + + +}; diff --git a/public/js/lib/modules/dashboard/dashboardModule.js b/public/js/lib/modules/dashboard/dashboardModule.js new file mode 100644 index 0000000..aa99df7 --- /dev/null +++ b/public/js/lib/modules/dashboard/dashboardModule.js @@ -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' ) ); + } +}; diff --git a/public/js/lib/modules/menuModule.js b/public/js/lib/modules/menuModule.js index 7d8e0ce..e52458a 100644 --- a/public/js/lib/modules/menuModule.js +++ b/public/js/lib/modules/menuModule.js @@ -31,6 +31,8 @@ $( function () { ko.applyBindings( dbo.menuModel, document.getElementById( "dbois-app" ) ); + window.dbo['dashboardInit'](); + vm.initialized( true ); } ); },