From a43450556dd8b53d423d6a950ad4a25502380158 Mon Sep 17 00:00:00 2001 From: Theo Weijmer Date: Tue, 1 Feb 2022 15:56:47 +0100 Subject: [PATCH] save employeehours with uuid --- .../projects/EmployeeHoursController.php | 9 +- application/core/MY_Controller.php | 2 +- application/models/eloquent/Employeehour.php | 11 +- application/models/eloquent/Projecthour.php | 108 +++++++++--------- .../eloquent/queries/EmployeehoursMonthly.php | 3 + public/js/lib/helpers.js | 14 ++- .../modules/projects/employeehoursModule.js | 17 +-- 7 files changed, 91 insertions(+), 73 deletions(-) diff --git a/application/controllers/projects/EmployeeHoursController.php b/application/controllers/projects/EmployeeHoursController.php index 052aac8..c382fba 100644 --- a/application/controllers/projects/EmployeeHoursController.php +++ b/application/controllers/projects/EmployeeHoursController.php @@ -66,7 +66,7 @@ class EmployeeHoursController extends MY_Controller { $data['hourtype_id'] = $data['hourtype_id'] - 8; - $employeehourID = Projecthour::saveProjecthour( $employeehourID, $data ); + $employeehourID = Projecthour::saveProjecthour( $data ); } elseif ( $hourType == 'OFFERS' ) { @@ -74,14 +74,13 @@ class EmployeeHoursController extends MY_Controller { unset( $data['employee_id'] ); $data['hourtype_id'] = $data['hourtype_id'] - 8; - $employeehourID = Projecthour::saveProjecthour( $employeehourID, $data ); + $employeehourID = Projecthour::saveProjecthour( $data ); } else { - $employeehourID = Employeehour::saveEmployeehour( $employeehourID, $data ); + $employeehourID = Employeehour::saveEmployeehour( $data ); } - $this->json( ['employeehourID' => $employeehourID] ); } @@ -101,4 +100,4 @@ class EmployeeHoursController extends MY_Controller { $this->json( ['result' => TRUE] ); } -} \ No newline at end of file +} diff --git a/application/core/MY_Controller.php b/application/core/MY_Controller.php index 3acc3ff..db26019 100644 --- a/application/core/MY_Controller.php +++ b/application/core/MY_Controller.php @@ -16,7 +16,7 @@ class MY_Controller extends CI_Controller { { parent::__construct(); - $this->version = '1.00.8'; + $this->version = '1.00.81'; $this->load->library( 'beheer/session/RetrieveUserSession' ); diff --git a/application/models/eloquent/Employeehour.php b/application/models/eloquent/Employeehour.php index b713fb3..a78c509 100644 --- a/application/models/eloquent/Employeehour.php +++ b/application/models/eloquent/Employeehour.php @@ -41,19 +41,20 @@ class Employeehour extends BaseModel { return $results; } - public static function saveEmployeehour( $employeehourID, $data ) + public static function saveEmployeehour( $data ) { - if ( $employeehourID == 0 ) + $record = Employeehour::whereUuid( $data['uuid'])->first(); + if ( ! $record ) { $employeehour = Employeehour::create( $data ); - $employeehourID = $employeehour->id; } else { - Employeehour::whereId( $employeehourID )->update( $data ); + Employeehour::whereUuid( $data['uuid'] )->update( $data ); + $employeehourID = FALSE; } return $employeehourID; } -} \ No newline at end of file +} diff --git a/application/models/eloquent/Projecthour.php b/application/models/eloquent/Projecthour.php index 25f3dad..f039859 100644 --- a/application/models/eloquent/Projecthour.php +++ b/application/models/eloquent/Projecthour.php @@ -8,74 +8,76 @@ class Projecthour extends BaseModel { - protected $table = "projecthours"; + protected $table = "projecthours"; - public function projectemployee() - { - $this->belongsTo( 'Projectemployee' ); - } + public function projectemployee() + { + $this->belongsTo( 'Projectemployee' ); + } - public static function getUsedYears() - { - $years = Projecthour::selectRaw( "YEAR(hourdate) AS year" ) - ->distinct() - ->orderByRaw( 'YEAR( hourdate )' ) - ->get(); + public static function getUsedYears() + { + $years = Projecthour::selectRaw( "YEAR(hourdate) AS year" ) + ->distinct() + ->orderByRaw( 'YEAR( hourdate )' ) + ->get(); - return $years; - } + return $years; + } - public static function getMonthlyEmployeeHoursPerProject( $employeeID, $year ) - { - $projectHours = ProjecthoursPerEmployeePerMonth::fire( $employeeID, $year ); + public static function getMonthlyEmployeeHoursPerProject( $employeeID, $year ) + { + $projectHours = ProjecthoursPerEmployeePerMonth::fire( $employeeID, $year ); - return $projectHours; - } + return $projectHours; + } - public static function recapProjects() - { - $recaps = QRecapProjects::fire(); + public static function recapProjects() + { + $recaps = QRecapProjects::fire(); - return $recaps; - } + return $recaps; + } - public static function saveProjecthour( $projecthourID, $projecthour ) - { - $projecthour = (array) $projecthour; + public static function saveProjecthour( $projecthour ) + { + $projecthour = (array) $projecthour; + $record = Projecthour::whereUuid( $projecthour['uuid'] )->first(); - if ( $projecthourID == 0 ) - { - $projecthour = Projecthour::create( $projecthour ); - $projecthourID = $projecthour['id']; - } - else - { - Projecthour::whereId( $projecthourID )->update( $projecthour ); - } + if ( ! $record ) + { + $projecthour = Projecthour::create( $projecthour ); + $projecthourID = $projecthour['id']; + } + else + { + Projecthour::whereUuid( $projecthour['uuid'] )->update( $projecthour ); + $projecthourID = FALSE; + } - return $projecthourID; - } + return $projecthourID; + } - public static function removeProjecthour( $projecthourID ) - { - Projecthour::whereId( $projecthourID )->delete(); - } + public static function removeProjecthour( $projecthourID ) + { + Projecthour::whereId( $projecthourID )->delete(); + } - public static function getTotalHoursPerProject( $projectID ) - { - $totalProjecthours = - self::selectRaw( "CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname, + public static function getTotalHoursPerProject( $projectID ) + { + $totalProjecthours = + self::selectRaw( "CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname, SUM(IF(hourtype_id = 1, hours, 0)) AS declarable, SUM(IF(hourtype_id = 1, hours * tarif, 0)) AS revenues, SUM(IF(hourtype_id != 1, hours, 0)) AS nondeclarable" ) - ->join( 'projectemployees AS PRE', 'PRE.id', '=', 'projecthours.projectemployee_id' ) - ->join( 'users AS USR', 'USR.id', '=', 'PRE.user_id' ) - ->groupBy( 'USR.id' ) - ->where( 'PRE.project_id', '=', $projectID ) - ->get(); + ->join( 'projectemployees AS PRE', 'PRE.id', '=', 'projecthours.projectemployee_id' ) + ->join( 'users AS USR', 'USR.id', '=', 'PRE.user_id' ) + ->groupBy( 'USR.id' ) + ->where( 'PRE.project_id', '=', $projectID ) + ->get(); - return $totalProjecthours; - } + return $totalProjecthours; + } -} \ No newline at end of file +} diff --git a/application/models/eloquent/queries/EmployeehoursMonthly.php b/application/models/eloquent/queries/EmployeehoursMonthly.php index 601fe4b..3dc1fa9 100644 --- a/application/models/eloquent/queries/EmployeehoursMonthly.php +++ b/application/models/eloquent/queries/EmployeehoursMonthly.php @@ -17,6 +17,7 @@ class EmployeehoursMonthly { SELECT CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname, hourtype_id, EMH.id, + EMH.uuid, USR.id AS employee_id, hours, DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate, @@ -35,6 +36,7 @@ class EmployeehoursMonthly { SELECT CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname, (hourtype_id + 8) AS hourtype_id, PRH.id, + PRH.uuid, USR.id AS employee_id, hours, DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate, @@ -58,6 +60,7 @@ class EmployeehoursMonthly { SELECT CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname, (hourtype_id + 8) AS hourtype_id, PRH.id, + PRH.uuid, USR.id AS employee_id, hours, DATE_FORMAT(hourdate, '%d-%m-%Y') AS hourdate, diff --git a/public/js/lib/helpers.js b/public/js/lib/helpers.js index 89b1559..23e8ff5 100644 --- a/public/js/lib/helpers.js +++ b/public/js/lib/helpers.js @@ -96,7 +96,17 @@ dbo.helpers = { isNumeric: function ( n ) { return !isNaN( parseFloat( n ) ) && isFinite( n ); - } + }, + + createUUID: function (){ + var dt = new Date().getTime(); + var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (dt + Math.random()*16)%16 | 0; + dt = Math.floor(dt/16); + return (c=='x' ? r :(r&0x3|0x8)).toString(16); + }); + return uuid; +} -} \ No newline at end of file +} diff --git a/public/js/lib/modules/projects/employeehoursModule.js b/public/js/lib/modules/projects/employeehoursModule.js index fb5e706..fbba6dd 100644 --- a/public/js/lib/modules/projects/employeehoursModule.js +++ b/public/js/lib/modules/projects/employeehoursModule.js @@ -69,6 +69,7 @@ dbo.employeehoursInit = function () { var employeehour = { id : 0, + uuid : dbo.helpers.createUUID(), employee_id: employeeID, hourdate : employeeHour ? employeeHour.hourdate() : null, hourtype_id: employeeHour ? employeeHour.hourtype_id() : 9, @@ -108,6 +109,7 @@ dbo.employeehoursInit = function () { var submitDATA = { id : self.id(), + uuid : self.uuid, employee_id: self.employee_id(), hourdate : self.hourdate(), hourtype_id: self.hourtype_id(), @@ -115,16 +117,16 @@ dbo.employeehoursInit = function () { hourType : self.hourType(), project_id : self.projectID() }; - if(timeout) { - clearTimeout(timeout); + if ( timeout ) { + clearTimeout( timeout ); timeout = null; } - timeout = setTimeout(function(){ + timeout = setTimeout( function () { dbo.employeehoursDataService.saveEmployeehour( submitDATA, function ( data ) { - self.id( data.employeehourID ); + if( data.employeehourID ) self.id( data.employeehourID ); self.dirty( false ); } ); - },200); + }, 200 ); }, editEmployeehour: function () { @@ -178,14 +180,14 @@ dbo.employeehoursInit = function () { vm.employeehours.removeAll(); - setTimeout(function(){ + setTimeout( function () { dbo.employeehoursDataService.getEmployeehours( vm.selectedMonth(), vm.selectedYear(), employeeID, function ( data ) { $.each( data, function ( i, p ) { vm.employeehours.push( new vm.Employeehour( p ) ); } ); } ); - }, 1000); + }, 1000 ); }, validateNumber: function ( field ) { @@ -229,6 +231,7 @@ dbo.employeehoursInit = function () { var self = this; self.id = ko.observable( data.id ); + self.uuid = data.uuid; self.employee_id = ko.observable( data.employee_id ); self.hourtype_id = ko.observable( data.hourtype_id ); self.hourdate = ko.observable( data.hourdate );