commen hours

This commit is contained in:
2018-03-21 11:07:32 +01:00
parent 3241cc0c67
commit 0fd25f359b
11 changed files with 282 additions and 95 deletions
@@ -41,6 +41,18 @@ class usersController extends MY_Controller {
$this->json( $user );
}
public function getCurrentUser()
{
$this->json( $this->user );
}
public function getUserWithprojects()
{
$usersWithProjects = User::getUserWithprojects();
$this->json( $usersWithProjects );
}
public function getUniqueprojectEmployees()
{
$projectEmployees = User::getUniqueProjectUsers();
@@ -22,11 +22,15 @@ class EmployeeHoursController extends MY_Controller {
$this->load->library( $libraries );
}
public function getEmployeehours( $month, $year )
public function getEmployeehours( $month, $year, $employeeID )
{
$employeehours = Employeehour::getEmployeehours( $month, $year );
$sql = EmployeehoursMonthly::fire( $month, $year, $employeeID );
$this->json( $employeehours );
$query = $this->db->query( $sql );
$result = $query->result();
$this->json( $result );
}
public function getHourtypes()
@@ -42,11 +46,29 @@ class EmployeeHoursController extends MY_Controller {
$data = $this->input->post();
$employeehourID = $data['id'];
$hourType = $data['hourType'];
$projectID = $data['project_id'];
unset( $data['id'] );
unset( $data['hourType'] );
unset( $data['project_id'] );
$data['hourdate'] = date2mysql( $data['hourdate'] );
$employeehourID = Employeehour::saveEmployeehour( $employeehourID, $data );
if ( $hourType == 'PROJECTS' )
{
$projectemployeeID = Projectemployee::select( 'id' )
->whereUserId( $data['employee_id'] )
->whereprojectId( $projectID )
->first();
$data['projectemployee_id'] = $projectemployeeID;
unset( $data['employee_id'] );
$employeehourID = Projecthour::saveProjecthour( $employeehourID, $data );
}
else
{
$employeehourID = Employeehour::saveEmployeehour( $employeehourID, $data );
}
$this->json( ['employeehourID' => $employeehourID] );
}
+11 -4
View File
@@ -23,15 +23,22 @@ class Employeehour extends BaseModel {
public static function getEmployeehours( $month, $year )
{
$employeehours = Employeehour::whereRaw( "MONTH(hourdate) ={$month} AND YEAR(hourdate) = {$year}" )
$employeehours = Employeehour::whereRaw( "MONTH(hourdate) = " . ( $month + 1 ) . " AND YEAR(hourdate) = {$year}" )
->with( [
'user' => function ( $q ) {
$q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" );
}] )
->with( 'hourtype' )
->get();
->with( 'hourtype' );
return $employeehours;
$projecthours = Employeehour::whereRaw("MONTH(hourdate) = " . ( $month + 1 ) . " AND YEAR(hourdate) = {$year}" )->with( [
'user' => function ( $q ) {
$q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" );
}] )
->with( 'hourtype' );
$results = $employeehours->union($projecthours)->get();
return $results;
}
public static function saveEmployeehour( $employeehourID, $data )
+10
View File
@@ -45,6 +45,16 @@ class User extends BaseModel {
return $userrole;
}
public static function getUserWithprojects()
{
$usersWithProjects =
User::selectRaw( "users.id, CONCAT(users.firstname, ' ', users.middlename, ' ', users.lastname) AS fullname" )
->with( 'projectemployees.project' )
->get();
return $usersWithProjects;
}
public static function checkUsername( $username )
{
$username = strtoupper( $username );
@@ -0,0 +1,53 @@
<?php
/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 15/03/2018
* Time: 10:47
*/
class EmployeehoursMonthly {
public static function fire($month, $year, $employeeID)
{
$month = $month + 1;
$sql = "
SELECT *
FROM (
SELECT CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname,
hourtype_id,
EMH.id,
USR.id AS employee_id,
hours,
DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate,
NULL AS project_id
FROM employeehours EMH
JOIN users USR
ON USR.id = EMH.employee_id
WHERE MONTH(hourdate) = {$month}
AND YEAR(hourdate) = {$year} ";
if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} ";
$sql.="
UNION
SELECT CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname,
(SELECT id FROM hourtypes WHERE `key` = 'PROJECTS' LIMIT 1) AS hourtype_id,
PRH.id,
USR.id AS employee_id,
hours,
DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate,
PEM.project_id
FROM projecthours PRH
JOIN projectemployees PEM
ON PEM.id = PRH.projectemployee_id
JOIN users USR
ON USR.id = PEM.user_id
WHERE MONTH(hourdate) = {$month}
AND YEAR(hourdate) = {$year} ";
if( $employeeID != 0 ) $sql.="AND USR.id = {$employeeID} ";
$sql.="
) Q1
ORDER BY fullname, hourdate ";
return $sql;
}
}
+35 -12
View File
@@ -3,36 +3,46 @@
<div class="col-md-2">
<select class="form-control form-control-sm"
data-bind="options:years,
optionsText:'id',
optionsValue:'id',
optionsText:'year',
optionsValue:'year',
value:selectedYear,
event:{change:refreshEmployeehours}"></select>
</div>
<div class="col-md-2">
<select class="form-control form-control-sm"
data-bind="options:months,
optionsText:'monthName',
optionsValue:'id',
optionsText:'month',
optionsValue:'monthID',
value:selectedMonth,
event:{change:refreshEmployeehours}"></select>
</div>
<div class="col-md-2">
<select class="form-control form-control-sm"
data-bind="options:employees,
optionsText:'fullname',
optionsValue:'id',
value:$root.selectedEmployeeID,
optionsCaption:'alle...',
event:{change:refreshEmployeehours}"></select>
</div>
</div>
<br/>
<div class="row">
<div class="col-xl-8">
<div class="col-xl-10">
<table class="table table-sm">
<thead>
<tr>
<th class="table-tealish-header">medewerker</th>
<th class="table-tealish-header">datum</th>
<th class="table-tealish-header">soort uren</th>
<th class="table-tealish-header">project</th>
<th class="table-tealish-header">uren</th>
<th class="table-tealish-header" width="40px">&nbsp;</th>
</tr>
</thead>
<tbody data-bind="foreach:employeehours">
<tr>
<td>
<td data-bind="css:{'red-line': id == 0}">
<span data-bind="text:dbo.helpers.findArrayElement('id', 'fullname', employee_id(), $root.employees()),
visible: ! inEdit()"></span>
<select class="form-control form-control-sm"
@@ -42,16 +52,16 @@
value:employee_id,
optionsCaption: 'selecteer...',
visible:inEdit(),
event:{change:$root.saveEmployeehours}"></select>
event:{change:$root.changeEmployee}"></select>
</td>
<td>
<td data-bind="css:{'red-line': id == 0}">
<span data-bind="text:hourdate, visible:! inEdit()"></span>
<input class="form-control form-control-sm"
data-bind="datepicker:{dateFormat: 'dd-mm-yy' },
value:hourdate, visible:inEdit(),
event:{change:$root.saveEmployeehour}"
</td>
<td>
<td data-bind="css:{'red-line': id == 0}">
<span data-bind="text:dbo.helpers.findArrayElement('id', 'description', hourtype_id(), $root.hourtypes()),
visible: ! inEdit()"></span>
<select class="form-control form-control-sm"
@@ -63,7 +73,20 @@
visible:inEdit(),
event:{change:$root.saveEmployeehours}"></select>
</td>
<td class="align-right">
<td data-bind="css:{'red-line': id == 0}">
<!-- ko if: hourType() == 'PROJECTS' -->
<span data-bind="text:dbo.helpers.findArrayElement('projectID', 'projectname', projectID(), projects()),
visible: ! inEdit()"></span>
<select class="form-control form-control-sm"
data-bind="options:projects,
optionsText:'projectname',
optionsValue:'projectID',
value:projectID,
optionsCaption:'selecteer...',
visible:inEdit()"></select>
<!-- /ko -->
</td>
<td class="align-right" data-bind="css:{'red-line': id == 0}">
<span data-bind=" visible: ! inEdit()">
<span data-bind="text:hours"></span>
uur
@@ -74,7 +97,7 @@
data-bind="textInput:hours, visible:inEdit,
event:{change:$root.saveEmployeehours,keyup:$root.validateNumber.bind($data, 'hours')}"/>
</td>
<td>
<td data-bind="css:{'red-line': id == 0}">
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editEmployeehour"></i>
<i class="icon fa-trash redish pointer" title="verwijder"
data-bind="click:$root.removeEmployeehour"></i>
@@ -83,7 +106,7 @@
</tbody>
<tfoot>
<tr>
<td colspan="3" class="">
<td colspan="3">
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newEmployeehour">
nieuwe uren
</button>