start reports

This commit is contained in:
2018-02-08 17:01:22 +01:00
parent 74847beb3b
commit 0441ba7b81
10 changed files with 190 additions and 1 deletions
@@ -34,6 +34,13 @@ class usersController extends MY_Controller {
$this->json( $users );
}
public function getUniqueprojectEmployees()
{
$projectEmployees = User::getUniqueProjectUsers();
$this->json( $projectEmployees );
}
public function saveUser()
{
$userValidation = new UserValidation();
@@ -0,0 +1,34 @@
<?php
defined( 'BASEPATH' ) OR exit( 'No direct script access allowed' );
/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 08/02/2018
* Time: 15:16
*/
class EmployeeHoursController extends MY_Controller {
public function __construct()
{
parent::__construct();
if ( AUTHENTICATED == FALSE ) die( 'NO ACCES' );
$models = [];
$libraries = [];
$this->load->model( $models );
$this->load->library( $libraries );
}
public function index()
{
}
public function getMonthlyEmployeeHoursPerProject()
{
}
}
+29 -1
View File
@@ -11,6 +11,16 @@ class User extends BaseModel {
protected $table = "users";
public function projectemployees()
{
return $this->hasMany( 'Projectemployee' );
}
public function projectemployee()
{
return $this->hasOne( 'Projectemployee' );
}
public function role()
{
return $this->belongsTo( 'Role', 'level', 'rolelevel' );
@@ -18,7 +28,7 @@ class User extends BaseModel {
public static function getAllUsers( $archive )
{
$users = User::selectRaw("*, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname")
$users = User::selectRaw( "*, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" )
->orderBy( 'lastname' );
if ( $archive == 'F' ) $users = $users->whereArchive( 'F' );
@@ -68,5 +78,23 @@ class User extends BaseModel {
User::whereId( $userID )->delete();
}
public static function getUniqueProjectUsers()
{
//TODO: date range
$projectusers = User::selectRaw( "
users.id,
CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname,
SUBSTR(MD5(users.id), 1, 6) AS slug" )
->join( 'projectemployees AS PEM', 'PEM.user_id', '=', 'users.id' )
->with( [
'projectemployee.project' => function ( $q ) {
$q->selectRaw( "id, YEAR(startdate) AS instroom, COALESCE(YEAR(enddate), '') AS uitstroom" );
}] )
->distinct()
->get();
return $projectusers;
}
}
@@ -0,0 +1,37 @@
<div class="MONTHLYEMPLOYEEHOURS">
<div class="row">
<div class="col-md-12">
<div class="nav-tabs-horizontal">
<ul class="nav nav-tabs nav-tabs-solid">
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'euro')">
<a class="nav-link" data-bind="css:{'active':sluggy() == 'euro'}">totaal euro's</a>
</li>
<li class="nav-item" data-bind="click:setActivetab.bind($data, 'hours')">
<a class="nav-link" data-bind="css:{'active':sluggy() == 'hours'}">totaal uren</a>
</li>
<!-- ko foreach:uniqueEmployees -->
<li class="nav-item" data-bind="click:$root.setActivetab.bind($data, slug)">
<a class="nav-link" data-bind="text:fullname, css:{'active':$root.sluggy() == slug}"></a>
</li>
<!-- /ko -->
</ul>
<div class="tab-content">
<div class="tab-pane" data-bind="css:{'active':sluggy() == 'euro'}">
<?php $this->load->view('reports/monthlyemployeehours/euro_view'); ?>
</div>
<div class="tab-pane" data-bind="css:{'active':sluggy() == 'hours'}">
<?php $this->load->view('reports/monthlyemployeehours/hours_view'); ?>
</div>
<!-- ko foreach:uniqueEmployees -->
<div class="tab-pane" data-bind="css:{'active':$root.sluggy() == slug}">
<?php $this->load->view('reports/monthlyemployeehours/employee_view'); ?>
</div>
<!-- /ko -->
</div>
</div>
</div>
</div>
</div>
+1
View File
@@ -68,6 +68,7 @@
<script src="js/lib/modules/projects/offersModule.js?version=<?= $this->version ?>"></script>
<script src="js/lib/modules/projects/projectsModule.js?version=<?= $this->version ?>"></script>
<script src="js/lib/modules/projects/employeehoursModule.js?version=<?= $this->version ?>"></script>
<script src="js/lib/modules/reports/monthlyEmployeeHoursModule.js?version=<?= $this->version ?>"></script>
<!-- ***********MODALS************* -->
@@ -0,0 +1,3 @@
<ul data-bind="foreach: myData">
<li data-bind="text:test">text</li>
</ul>
@@ -0,0 +1 @@
<h1>EURO'S</h1>
@@ -0,0 +1 @@
<h1>hours</h1>
@@ -21,6 +21,13 @@ dbo.userDataService = {
} );
},
getUniqueProjectEmployees:function(callback){
$.post('index.php/beheer/usersController/getUniqueprojectEmployees', 'json')
.done(function(data){
callback(data);
});
},
checkUsername: function ( username, callback ) {
$.post( 'index.php/beheer/userController/checkUsername', 'json' )
.done( function ( data ) {
@@ -0,0 +1,70 @@
/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 08/02/2018
* Time: 15:32
*/
dbo.monthlyemployeehoursInit = function () {
if ( dbo.monthlyEmployeeHoursModel !== undefined ) {
dbo.monthlyEmployeeHoursModel.initModule();
} else {
dbo.monthlyEmployeeHoursModel = {
uniqueEmployees: ko.observableArray( [] ),
sluggy : ko.observable( 'euro' ),
init: function () {
var vm = dbo.monthlyEmployeeHoursModel;
vm.initModule();
},
initModule: function () {
var vm = dbo.monthlyEmployeeHoursModel;
dbo.userDataService.getUniqueProjectEmployees( function ( data ) {
vm.uniqueEmployees.removeAll();
$.each( data, function ( i, p ) {
vm.uniqueEmployees.push(new vm.UniqueEmployee(p) )
} );
} );
},
setActivetab: function ( tab ) {
var vm = dbo.monthlyEmployeeHoursModel;
vm.sluggy( tab );
},
UniqueEmployee : function(data){
var vm = dbo.monthlyEmployeeHoursModel;
var self = this;
self.id = data.id;
self.fullname = data.fullname;
self.slug = data.slug;
self.myData = ko.observableArray([]);
for(var i=1; i<5; i++){
self.myData.push( new vm.Detail(data.fullname));
}
},
Detail : function(data){
console.log( data );
this.test = data;
}
};
dbo.monthlyEmployeeHoursModel.init();
ko.applyBindings( dbo.monthlyEmployeeHoursModel, document.getElementById( "MONTHLYEMPLOYEEHOURS" ) );
}
}