Session / UserActivity
CHAT --> AFK-Erkennung
This commit is contained in:
@@ -22,6 +22,8 @@ Public Class cSession
|
|||||||
Property sess_login As Object = Nothing = Now
|
Property sess_login As Object = Nothing = Now
|
||||||
Property sess_logout As Object = Nothing
|
Property sess_logout As Object = Nothing
|
||||||
Property sess_lastRm 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
|
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_login", sess_login))
|
||||||
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_logout", sess_logout))
|
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_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
|
Return list
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
@@ -105,7 +109,12 @@ Public Class cSession
|
|||||||
sess_lastRm = Now
|
sess_lastRm = Now
|
||||||
'list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastRm", sess_lastRm))
|
'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
|
Catch ex As Exception
|
||||||
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
|
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
|
Catch ex As Exception
|
||||||
End Try
|
End Try
|
||||||
Me.sess_lastRm = Now
|
Me.sess_lastRm = Now
|
||||||
|
Me.sess_lastActivity = Now
|
||||||
Me.sess_progId = Nothing
|
Me.sess_progId = Nothing
|
||||||
Me.sess_progName = VERAG_PROG_ALLGEMEIN.cAllgemein.PROGNAME
|
Me.sess_progName = VERAG_PROG_ALLGEMEIN.cAllgemein.PROGNAME
|
||||||
Me.sess_progVersion = VERAG_PROG_ALLGEMEIN.cAllgemein.PROGVERSION
|
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))
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_Id", sess_Id, , True))
|
||||||
sess_lastRm = Now
|
sess_lastRm = Now
|
||||||
|
sess_lastActivity = Now
|
||||||
' list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastRm", sess_lastRm))
|
' list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_lastRm", sess_lastRm))
|
||||||
sess_logout = Now
|
sess_logout = Now
|
||||||
' list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sess_logout", sess_logout))
|
' 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
|
Catch ex As Exception
|
||||||
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
|
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 ""
|
Return ""
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
'Class cSESSION_STATUS
|
||||||
|
' Shared ONLINE As String =
|
||||||
|
'End Class
|
||||||
25
VERAG_PROG_ALLGEMEIN/Classes/cUserActivity.vb
Normal file
25
VERAG_PROG_ALLGEMEIN/Classes/cUserActivity.vb
Normal file
@@ -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
|
||||||
@@ -487,10 +487,18 @@ Public Class frmMessenger
|
|||||||
lblOnlineOffline.Visible = False
|
lblOnlineOffline.Visible = False
|
||||||
Else
|
Else
|
||||||
lblOnlineOffline.Visible = True
|
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")
|
'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
|
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)
|
||||||
lblOnlineOffline.Text = "ONLINE"
|
If sess_IdOnline > 0 Then
|
||||||
lblOnlineOffline.BackColor = Color.MediumSeaGreen
|
|
||||||
|
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
|
Else
|
||||||
lblOnlineOffline.Text = "OFFLINE"
|
lblOnlineOffline.Text = "OFFLINE"
|
||||||
lblOnlineOffline.BackColor = Color.Red
|
lblOnlineOffline.BackColor = Color.Red
|
||||||
|
|||||||
@@ -363,6 +363,7 @@
|
|||||||
<Compile Include="Classes\cQSTeam.vb" />
|
<Compile Include="Classes\cQSTeam.vb" />
|
||||||
<Compile Include="Classes\cRechnungsausgang.vb" />
|
<Compile Include="Classes\cRechnungsausgang.vb" />
|
||||||
<Compile Include="Classes\cRechnungsnummern.vb" />
|
<Compile Include="Classes\cRechnungsnummern.vb" />
|
||||||
|
<Compile Include="Classes\cUserActivity.vb" />
|
||||||
<Compile Include="Classes\old_cRKSV_DE.vb" />
|
<Compile Include="Classes\old_cRKSV_DE.vb" />
|
||||||
<Compile Include="Classes\cSDL.vb" />
|
<Compile Include="Classes\cSDL.vb" />
|
||||||
<Compile Include="Classes\cSDL_LKW.vb" />
|
<Compile Include="Classes\cSDL_LKW.vb" />
|
||||||
|
|||||||
Reference in New Issue
Block a user