diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cSession.vb b/VERAG_PROG_ALLGEMEIN/Classes/cSession.vb
index 4292f07e..66b7be71 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cSession.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cSession.vb
@@ -22,6 +22,8 @@ Public Class cSession
Property sess_login As Object = Nothing = Now
Property sess_logout As Object = Nothing
Property sess_lastRm As Object = Nothing
+ Property sess_lastActivity As Object = Nothing
+ Property sess_status As Object = Nothing
Dim SQL As New SQL
@@ -49,6 +51,8 @@ Public Class cSession
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_login", sess_login))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_logout", sess_logout))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastRm", sess_lastRm))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastActivity", sess_lastActivity))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_status", sess_status))
Return list
End Function
@@ -105,7 +109,12 @@ Public Class cSession
sess_lastRm = Now
'list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastRm", sess_lastRm))
- Return SQL.doSQLVarList(" UPDATE [tblSessions] SET sess_lastRm=GETDATE() WHERE sess_Id=@sess_Id ", "ADMIN", , list)
+ sess_lastActivity = Now.AddSeconds(-1 * VERAG_PROG_ALLGEMEIN.cUserActivity.GetLastInputTime_Seconds) ' Letzte UserAktivität
+ 'If DateDiff(DateInterval.Minute, sess_lastActivity, Now) > 10 Then
+ ' sess_status =
+ 'End If
+
+ Return SQL.doSQLVarList(" UPDATE [tblSessions] SET sess_lastRm=GETDATE(),sess_lastActivity='" & sess_lastActivity & "' WHERE sess_Id=@sess_Id ", "ADMIN", , list)
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
@@ -135,6 +144,7 @@ Public Class cSession
Catch ex As Exception
End Try
Me.sess_lastRm = Now
+ Me.sess_lastActivity = Now
Me.sess_progId = Nothing
Me.sess_progName = VERAG_PROG_ALLGEMEIN.cAllgemein.PROGNAME
Me.sess_progVersion = VERAG_PROG_ALLGEMEIN.cAllgemein.PROGVERSION
@@ -148,11 +158,12 @@ Public Class cSession
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_Id", sess_Id, , True))
sess_lastRm = Now
+ sess_lastActivity = Now
' list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastRm", sess_lastRm))
sess_logout = Now
' list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_logout", sess_logout))
- Return SQL.doSQLVarList(" UPDATE [tblSessions] SET sess_lastRm=GETDATE(),sess_logout=GETDATE() WHERE sess_Id=@sess_Id ", "ADMIN", , list)
+ Return SQL.doSQLVarList(" UPDATE [tblSessions] SET sess_lastRm=GETDATE(),sess_logout=GETDATE(),sess_lastActivity=GETDATE() WHERE sess_Id=@sess_Id ", "ADMIN", , list)
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
@@ -201,4 +212,7 @@ Public Class cSession
Return ""
End Function
-End Class
\ No newline at end of file
+End Class
+'Class cSESSION_STATUS
+' Shared ONLINE As String =
+'End Class
\ No newline at end of file
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cUserActivity.vb b/VERAG_PROG_ALLGEMEIN/Classes/cUserActivity.vb
new file mode 100644
index 00000000..1efac774
--- /dev/null
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cUserActivity.vb
@@ -0,0 +1,25 @@
+Imports System.Runtime.InteropServices
+Public Class cUserActivity
+ Declare Function GetLastInputInfo Lib "user32" (ByRef plii As LASTINPUTINFO) As Boolean
+ 'Private WithEvents T As New Timer With {.Interval = 1000, .Enabled = True}
+
+ Structure LASTINPUTINFO
+ Public cbSize As Integer
+ Public dwTime As Integer
+ End Structure
+
+ Shared Function GetLastInputTime_Seconds() As Integer
+ Static LastInput As New LASTINPUTINFO()
+ LastInput.cbSize = Marshal.SizeOf(LastInput)
+ LastInput.dwTime = 0
+ GetLastInputInfo(LastInput)
+ Return (Environment.TickCount - LastInput.dwTime) / 1000
+ End Function
+ Shared Function GetLastInputTime_Minutes() As Integer
+ Return GetLastInputTime_Seconds() / 60
+ End Function
+
+ 'Private Sub T_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles T.Tick
+ ' Me.Text = "Letzte Aktivität vor " & GetLastInputTime() & " Sek."
+ 'End Sub
+End Class
diff --git a/VERAG_PROG_ALLGEMEIN/Messenger/frmMessenger.vb b/VERAG_PROG_ALLGEMEIN/Messenger/frmMessenger.vb
index 1069d4af..e0c0dc9a 100644
--- a/VERAG_PROG_ALLGEMEIN/Messenger/frmMessenger.vb
+++ b/VERAG_PROG_ALLGEMEIN/Messenger/frmMessenger.vb
@@ -487,10 +487,18 @@ Public Class frmMessenger
lblOnlineOffline.Visible = False
Else
lblOnlineOffline.Visible = True
- Dim cntOnline = SQL.getValueTxtBySql("SELECT count(*) FROM [tblMessenger_ChatMembers] inner join tblSessions ON sess_maId=[chatMb_maId] and sess_lastRm > dateadd(MINUTE,-2, getdate()) where chatMb_chatId ='" & CHAT.chat_id & "' and chatMb_maId<>'" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN")
- If cntOnline > 0 Then
- lblOnlineOffline.Text = "ONLINE"
- lblOnlineOffline.BackColor = Color.MediumSeaGreen
+ 'Dim cntOnline = SQL.getValueTxtBySql("SELECT count(*) FROM [tblMessenger_ChatMembers] inner join tblSessions ON sess_maId=[chatMb_maId] and sess_lastRm > dateadd(MINUTE,-2, getdate()) where chatMb_chatId ='" & CHAT.chat_id & "' and chatMb_maId<>'" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN")
+ Dim sess_IdOnline = SQL.getValueTxtBySql("SELECT sess_Id FROM [tblMessenger_ChatMembers] inner join tblSessions ON sess_maId=[chatMb_maId] and sess_lastRm > dateadd(MINUTE,-2, getdate()) where chatMb_chatId ='" & CHAT.chat_id & "' and chatMb_maId<>'" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "' ORDER BY sess_lastActivity DESC,sess_lastRm DESC", "ADMIN",,, -1)
+ If sess_IdOnline > 0 Then
+
+ Dim SESSION As New cSession(sess_IdOnline)
+ If DateDiff(DateInterval.Minute, If(SESSION.sess_lastActivity, Now), Now) > 10 Then
+ lblOnlineOffline.Text = "AFK"
+ lblOnlineOffline.BackColor = Color.Orange
+ Else
+ lblOnlineOffline.Text = "ONLINE"
+ lblOnlineOffline.BackColor = Color.MediumSeaGreen
+ End If
Else
lblOnlineOffline.Text = "OFFLINE"
lblOnlineOffline.BackColor = Color.Red
diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
index 8bf69920..a115abff 100644
--- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
+++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
@@ -363,6 +363,7 @@
+