From 90891fa77a225dcda52d7acd7740512549ba74ea Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Fri, 10 Sep 2021 12:31:27 +0200 Subject: [PATCH] Zeiterfassung --- appinfo/routes.php | 2 + js/tm.js | 128 +++++++++++++++++++++++++++--- lib/Controller/PageController.php | 48 ++++++++++- 3 files changed, 164 insertions(+), 14 deletions(-) diff --git a/appinfo/routes.php b/appinfo/routes.php index ce83ba1..9b6bf00 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -12,6 +12,8 @@ return [ # TIME MANAGEMENT ['name' => 'page#startWorkDay', 'url' => '/startday', 'verb' => 'GET'], ['name' => 'page#endWorkDay', 'url' => '/endday', 'verb' => 'GET'], + ['name' => 'page#startBreak', 'url' => '/startbreak', 'verb' => 'GET'], + ['name' => 'page#endBreak', 'url' => '/endbreak', 'verb' => 'GET'], ['name' => 'page#loadTime', 'url' => '/loadtime', 'verb' => 'GET'], # AGENCY ['name' => 'agency#show', 'url' => '/getagencydata', 'verb' => 'GET'], diff --git a/js/tm.js b/js/tm.js index ce60597..38a23eb 100644 --- a/js/tm.js +++ b/js/tm.js @@ -6,8 +6,8 @@ var isbreak = false; var breaktime = 0; function loadTMIcon(){ - var baseUrl = OC.generateUrl('/svg/core/actions/user-admin'); - icon = $(''); + var iconBaseUrl = OC.generateUrl('/svg/core/actions/user-admin'); + icon = $(''); $('.header-right').prepend(icon); } @@ -22,7 +22,7 @@ function addTMDiv(){ realtimediv = $("
"); realtimediv.html(html_content); realtimediv.css("width", "300px"); - realtimediv.css("height", "250px"); + realtimediv.css("height", "125px"); realtimediv.css("right", "50px"); realtimediv.css("position", "fixed"); realtimediv.css("overflow", "hidden"); @@ -31,22 +31,37 @@ function addTMDiv(){ $('.header-right').append(realtimediv); // Adding Listener + // Start WorkDay $("#startWorkDay").click(function(){ startWorkDay(); $("#activeDay").show(); $("#start_workday").hide(); }) + // End WorkDay $("#end_workday").click(function(){ endWorkDay(); }) + // Start Break + $("#start_break").click(function(){ + startBreak(); + }) + + // Start Break + $("#end_break").click(function(){ + endBreak(); + }) + // ACTUAL TIME INFO // Load Time $.ajax({ url: "/apps/da_agency/loadtime", type: 'GET', }).success(function (response) { + $("#td_content").show(); + $("#loader").hide(); + responsedata = JSON.parse(response); $("#actualTime").html(responsedata['actualtime']); // No workday found @@ -56,18 +71,36 @@ function addTMDiv(){ isbreak = false; breaktime = 0; $("#breaksum").html("00:00:00"); + $("#activeDay").hide(); } // Workday found else{ - isbreak = false; - start = responsedata['workdaydata_workday']; - startbreaktime_view = 0; - starttime_view = parseDate(responsedata['workdaydata_workday']); - console.log(starttime_view); - $("#start_workday").hide(); - $("#activeDay").show(); - $("#starttime").html(responsedata['workdaydata_starttime']); - + realtimediv.css("height", "250px"); + $("#breaksum").html(convertMS(responsedata['breaksum'])); + var breaktime = responsedata['breaksum']; + // Break found + if(responsedata['breakstatus']){ + isbreak = true; + startbreaktime_view = responsedata['breaktimer']; + starttime_view = Date.parse(responsedata['workdaydata_workday']); + $("#start_workday").hide(); + $("#activeDay").show(); + $("#worktime").hide(); + $("#breaktimeclock").show(); + $("#end_break").show(); + $("#start_break").hide(); + $("#starttime").html(responsedata['workdaydata_starttime']); + } + // NO BREAK - Day is active + else{ + isbreak = false; + start = responsedata['workdaydata_workday']; + startbreaktime_view = 0; + starttime_view = parseDate(responsedata['workdaydata_workday']); + $("#start_workday").hide(); + $("#activeDay").show(); + $("#starttime").html(responsedata['workdaydata_starttime']); + } } }); @@ -139,10 +172,16 @@ $(document).ready(function(){ addTMDiv(); }) function startWorkDay(){ + realtimediv.css("height", "250px"); + $("#td_content").hide(); + $("#loader").show(); + $.ajax({ url: "/apps/da_agency/startday", type: 'GET', }).success(function (response) { + $("#td_content").show(); + $("#loader").hide(); responsedata = JSON.parse(response); if(responsedata["success"]){ @@ -156,10 +195,15 @@ function startWorkDay(){ } function endWorkDay(){ + $("#td_content").hide(); + $("#loader").show(); $.ajax({ url: "/apps/da_agency/endday", type: 'GET', }).success(function (response) { + realtimediv.css("height", "125px"); + $("#td_content").show(); + $("#loader").hide(); responsedata = JSON.parse(response); if(responsedata["success"]){ $("#breaktimeclock").hide(); @@ -182,4 +226,62 @@ function endWorkDay(){ } -var html_content = '
Arbeitsbeginn: 00:00:00
Arbeitsende: 00:00:00
Pausenzeit: 00:00:00


Gleitzeitkonto: Lade... Stunden
'; \ No newline at end of file +function startBreak(){ + $("#td_content").hide(); + $("#loader").show(); + + $.ajax({ + url: "/apps/da_agency/startbreak", + type: 'GET', + }).success(function (response) { + responsedata = JSON.parse(response); + isbreak = true; + $("#td_content").show(); + $("#loader").hide(); + //$("#timemanagement_clock").click(function(e){ + // e.stopPropagation(); + //}) + $("#breaktimeclock").show(); + $("#realtimeclock").hide(); + $("#end_break").show(); + $("#start_break").hide(); + $("#worktime").hide(); + startbreaktime_view = -1000; + realTimeBreakClock(); + }); +} + +function endBreak(){ + $("#td_content").hide(); + $("#loader").show(); + $.ajax({ + url: "/apps/da_agency/endbreak", + type: 'GET', + }).success(function (response) { + $("#td_content").show(); + $("#loader").hide(); + responsedata = JSON.parse(response); + + isbreak = false; + + $("#breaktimeclock").hide(); + $("#realtimeclock").show(); + $("#end_break").hide(); + $("#start_break").show(); + $("#worktime").show(); + + breaktime = responsedata["actualbreaktime"]; + startbreaktime_view = responsedata["actualbreaktime"]; + starttime_view = Date.parse(responsedata["wdtime"]); + $("#breaksum").html(convertMS(responsedata["actualbreaktime"])); + + }); +} + +function realTimeBreakClock(){ + breaktime = startbreaktime_view + 1000; + startbreaktime_view = startbreaktime_view + 1000; + $("#realtimeclock_break").html(convertMS(startbreaktime_view)); +} + +var html_content = '
'; \ No newline at end of file diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 9ee5087..2811511 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -64,7 +64,7 @@ class PageController extends Controller { return new DataResponse($file); } - /** + /** * @NoCSRFRequired * * Beendet einen Arbeitstag @@ -87,6 +87,52 @@ class PageController extends Controller { return new DataResponse($file); } + /** + * @NoCSRFRequired + * + * Beendet einen Arbeitstag + */ + public function startBreak() { + $opts = [ + "http" => array( + "method" => "GET", + "header" => "" + ), + "ssl"=> array( + "verify_peer"=>false, + "verify_peer_name"=>false, + ), + ]; + $context = stream_context_create($opts); + + $file = file_get_contents($this->nclink.'/api/tm/startbreak/'.$this->userSession->getUser()->getUId().'/87zuhjk87GHJ546tzgvhas76aaskbdhr45edfVHAKia87s6gbAVGFGSR3451627gBHAKJBN', false, $context); + #$response = new TemplateResponse('da_agency', 'realtimeclock', ['userId' => $this->userSession->getUser()->getUID(), 'data' => "none"]); + return new DataResponse($file); + } + + /** + * @NoCSRFRequired + * + * Beendet einen Arbeitstag + */ + public function endBreak() { + $opts = [ + "http" => array( + "method" => "GET", + "header" => "" + ), + "ssl"=> array( + "verify_peer"=>false, + "verify_peer_name"=>false, + ), + ]; + $context = stream_context_create($opts); + + $file = file_get_contents($this->nclink.'/api/tm/endbreak/'.$this->userSession->getUser()->getUId().'/87zuhjk87GHJ546tzgvhas76aaskbdhr45edfVHAKia87s6gbAVGFGSR3451627gBHAKJBN', false, $context); + #$response = new TemplateResponse('da_agency', 'realtimeclock', ['userId' => $this->userSession->getUser()->getUID(), 'data' => "none"]); + return new DataResponse($file); + } + /** * @NoCSRFRequired