diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js index 1915297..2a2aa61 100644 --- a/3CX_TAPI.user.js +++ b/3CX_TAPI.user.js @@ -853,8 +853,13 @@ class Availability { return; } var dotClass = entry.loggedIn ? 'tapi-dot-on' : 'tapi-dot-off'; - var mockedTime = '13.04. 08:30'; - indicator.innerHTML = '' + mockedTime + ''; + var time = ''; + if (entry.lastStamp) { + var d = new Date(entry.lastStamp); + var pad = (n) => n.toString().padStart(2, '0'); + time = pad(d.getDate()) + '.' + pad(d.getMonth() + 1) + '. ' + pad(d.getHours()) + ':' + pad(d.getMinutes()); + } + indicator.innerHTML = '' + time + ''; } updateSquare(square) { var extension = square.dataset.tapiExtension; diff --git a/client/src/availability-info.ts b/client/src/availability-info.ts index 06a96ef..93ba93e 100644 --- a/client/src/availability-info.ts +++ b/client/src/availability-info.ts @@ -2,4 +2,5 @@ export class AvailabilityInfo { public user: string; public loggedIn: boolean; public extension: string; + public lastStamp: string; } diff --git a/client/src/availability.ts b/client/src/availability.ts index 275aadd..39cfdb0 100644 --- a/client/src/availability.ts +++ b/client/src/availability.ts @@ -65,8 +65,13 @@ export class Availability { return } var dotClass = entry.loggedIn ? 'tapi-dot-on' : 'tapi-dot-off' - var mockedTime = '13.04. 08:30' - indicator.innerHTML = '' + mockedTime + '' + var time = '' + if (entry.lastStamp) { + var d = new Date(entry.lastStamp) + var pad = (n: number) => n.toString().padStart(2, '0') + time = pad(d.getDate()) + '.' + pad(d.getMonth() + 1) + '. ' + pad(d.getHours()) + ':' + pad(d.getMinutes()) + } + indicator.innerHTML = '' + time + '' } private updateSquare(square: HTMLElement) { diff --git a/server/src/CPATapi.Server/Models/Availability.cs b/server/src/CPATapi.Server/Models/Availability.cs index 73e295c..b8b8beb 100644 --- a/server/src/CPATapi.Server/Models/Availability.cs +++ b/server/src/CPATapi.Server/Models/Availability.cs @@ -11,4 +11,6 @@ public class Availability public bool LOGGED_IN { get; set; } [JsonPropertyName("extension")] public string? US_EXTENSION { get; set; } + [JsonPropertyName("lastStamp")] + public DateTime? LAST_STAMP { get; set; } } diff --git a/server/src/CPATapi.Server/Repository/ZeitConsensRepository.cs b/server/src/CPATapi.Server/Repository/ZeitConsensRepository.cs index 4772d1c..aea63f7 100644 --- a/server/src/CPATapi.Server/Repository/ZeitConsensRepository.cs +++ b/server/src/CPATapi.Server/Repository/ZeitConsensRepository.cs @@ -11,6 +11,7 @@ internal class ZeitConsensRepository(IConfiguration config) : Repository(config) ma.MA_USER_NAME ,bu.LOGGED_IN ,us.US_EXTENSION + ,buLastStamp.LAST_STAMP FROM dbo.MA_DATEN ma INNER JOIN projectmanagement.dbo.CP_USER us on us.US_LOGINNAME = ma.MA_USER_NAME OUTER APPLY ( @@ -20,6 +21,11 @@ internal class ZeitConsensRepository(IConfiguration config) : Repository(config) AND BU_BU >= @from AND BU_BU < @to ) bu + OUTER APPLY ( + SELECT MAX(BU_BU) AS LAST_STAMP + FROM dbo.BU + WHERE bu.BU_MA_NR = ma.MA_NR + ) buLastStamp WHERE ma.MA_USER_AKTIV = 1 """;