EXG
This commit is contained in:
@@ -25,6 +25,8 @@ Public Class frmProgDetails
|
|||||||
If codename = "MAIL_SENDER" Then picIcon.Image = My.Resources.admin_monitoring
|
If codename = "MAIL_SENDER" Then picIcon.Image = My.Resources.admin_monitoring
|
||||||
If codename = "DOKU" Then picIcon.Image = My.Resources.doku_sym
|
If codename = "DOKU" Then picIcon.Image = My.Resources.doku_sym
|
||||||
If codename = "RKSV_DE" Then picIcon.Image = My.Resources.admin_monitoring
|
If codename = "RKSV_DE" Then picIcon.Image = My.Resources.admin_monitoring
|
||||||
|
If codename = "VERAG_OCR" Then picIcon.Image = My.Resources.admin_monitoring
|
||||||
|
If codename = "VERAGCallAssist" Then picIcon.Image = My.Resources.admin_monitoring
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
80
UID/Programme/usrCntlProgramme.Designer.vb
generated
80
UID/Programme/usrCntlProgramme.Designer.vb
generated
@@ -103,6 +103,12 @@ Partial Class usrCntlProgramme
|
|||||||
Me.Button12 = New System.Windows.Forms.Button()
|
Me.Button12 = New System.Windows.Forms.Button()
|
||||||
Me.btn_sprache_sdl = New System.Windows.Forms.Button()
|
Me.btn_sprache_sdl = New System.Windows.Forms.Button()
|
||||||
Me.btn_sprache_aviso = New System.Windows.Forms.Button()
|
Me.btn_sprache_aviso = New System.Windows.Forms.Button()
|
||||||
|
Me.Button13 = New System.Windows.Forms.Button()
|
||||||
|
Me.Label20 = New System.Windows.Forms.Label()
|
||||||
|
Me.PictureBox15 = New System.Windows.Forms.PictureBox()
|
||||||
|
Me.Button14 = New System.Windows.Forms.Button()
|
||||||
|
Me.Label25 = New System.Windows.Forms.Label()
|
||||||
|
Me.PictureBox16 = New System.Windows.Forms.PictureBox()
|
||||||
CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.PictureBox4, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.PictureBox3, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
@@ -117,6 +123,8 @@ Partial Class usrCntlProgramme
|
|||||||
CType(Me.PictureBox12, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.PictureBox12, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
|
CType(Me.PictureBox15, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
|
CType(Me.PictureBox16, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
Me.SuspendLayout()
|
Me.SuspendLayout()
|
||||||
'
|
'
|
||||||
'Label1
|
'Label1
|
||||||
@@ -846,11 +854,75 @@ Partial Class usrCntlProgramme
|
|||||||
Me.btn_sprache_aviso.Text = "Sprachen"
|
Me.btn_sprache_aviso.Text = "Sprachen"
|
||||||
Me.btn_sprache_aviso.UseVisualStyleBackColor = True
|
Me.btn_sprache_aviso.UseVisualStyleBackColor = True
|
||||||
'
|
'
|
||||||
|
'Button13
|
||||||
|
'
|
||||||
|
Me.Button13.Location = New System.Drawing.Point(754, 309)
|
||||||
|
Me.Button13.Name = "Button13"
|
||||||
|
Me.Button13.Size = New System.Drawing.Size(100, 39)
|
||||||
|
Me.Button13.TabIndex = 114
|
||||||
|
Me.Button13.Text = "Details"
|
||||||
|
Me.Button13.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
|
'Label20
|
||||||
|
'
|
||||||
|
Me.Label20.AutoSize = True
|
||||||
|
Me.Label20.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.Label20.Location = New System.Drawing.Point(766, 292)
|
||||||
|
Me.Label20.Name = "Label20"
|
||||||
|
Me.Label20.Size = New System.Drawing.Size(79, 13)
|
||||||
|
Me.Label20.TabIndex = 113
|
||||||
|
Me.Label20.Text = "VERAG OCR"
|
||||||
|
'
|
||||||
|
'PictureBox15
|
||||||
|
'
|
||||||
|
Me.PictureBox15.Image = Global.ADMIN.My.Resources.Resources.admin_monitoring
|
||||||
|
Me.PictureBox15.Location = New System.Drawing.Point(789, 256)
|
||||||
|
Me.PictureBox15.Name = "PictureBox15"
|
||||||
|
Me.PictureBox15.Size = New System.Drawing.Size(34, 33)
|
||||||
|
Me.PictureBox15.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||||
|
Me.PictureBox15.TabIndex = 112
|
||||||
|
Me.PictureBox15.TabStop = False
|
||||||
|
'
|
||||||
|
'Button14
|
||||||
|
'
|
||||||
|
Me.Button14.Location = New System.Drawing.Point(754, 417)
|
||||||
|
Me.Button14.Name = "Button14"
|
||||||
|
Me.Button14.Size = New System.Drawing.Size(100, 39)
|
||||||
|
Me.Button14.TabIndex = 117
|
||||||
|
Me.Button14.Text = "Details"
|
||||||
|
Me.Button14.UseVisualStyleBackColor = True
|
||||||
|
'
|
||||||
|
'Label25
|
||||||
|
'
|
||||||
|
Me.Label25.AutoSize = True
|
||||||
|
Me.Label25.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||||
|
Me.Label25.Location = New System.Drawing.Point(766, 400)
|
||||||
|
Me.Label25.Name = "Label25"
|
||||||
|
Me.Label25.Size = New System.Drawing.Size(107, 13)
|
||||||
|
Me.Label25.TabIndex = 116
|
||||||
|
Me.Label25.Text = "VERAG CallAssist"
|
||||||
|
'
|
||||||
|
'PictureBox16
|
||||||
|
'
|
||||||
|
Me.PictureBox16.Image = Global.ADMIN.My.Resources.Resources.admin_monitoring
|
||||||
|
Me.PictureBox16.Location = New System.Drawing.Point(789, 364)
|
||||||
|
Me.PictureBox16.Name = "PictureBox16"
|
||||||
|
Me.PictureBox16.Size = New System.Drawing.Size(34, 33)
|
||||||
|
Me.PictureBox16.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||||
|
Me.PictureBox16.TabIndex = 115
|
||||||
|
Me.PictureBox16.TabStop = False
|
||||||
|
'
|
||||||
'usrCntlProgramme
|
'usrCntlProgramme
|
||||||
'
|
'
|
||||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||||
Me.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
Me.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||||
|
Me.Controls.Add(Me.Button14)
|
||||||
|
Me.Controls.Add(Me.Label25)
|
||||||
|
Me.Controls.Add(Me.PictureBox16)
|
||||||
|
Me.Controls.Add(Me.Button13)
|
||||||
|
Me.Controls.Add(Me.Label20)
|
||||||
|
Me.Controls.Add(Me.PictureBox15)
|
||||||
Me.Controls.Add(Me.btn_sprache_aviso)
|
Me.Controls.Add(Me.btn_sprache_aviso)
|
||||||
Me.Controls.Add(Me.btn_sprache_sdl)
|
Me.Controls.Add(Me.btn_sprache_sdl)
|
||||||
Me.Controls.Add(Me.Button12)
|
Me.Controls.Add(Me.Button12)
|
||||||
@@ -947,6 +1019,8 @@ Partial Class usrCntlProgramme
|
|||||||
CType(Me.PictureBox12, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.PictureBox12, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
|
CType(Me.PictureBox15, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
|
CType(Me.PictureBox16, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
Me.ResumeLayout(False)
|
Me.ResumeLayout(False)
|
||||||
Me.PerformLayout()
|
Me.PerformLayout()
|
||||||
|
|
||||||
@@ -1031,4 +1105,10 @@ Partial Class usrCntlProgramme
|
|||||||
Friend WithEvents Button12 As Button
|
Friend WithEvents Button12 As Button
|
||||||
Friend WithEvents btn_sprache_sdl As Button
|
Friend WithEvents btn_sprache_sdl As Button
|
||||||
Friend WithEvents btn_sprache_aviso As Button
|
Friend WithEvents btn_sprache_aviso As Button
|
||||||
|
Friend WithEvents Button13 As Button
|
||||||
|
Friend WithEvents Label20 As Label
|
||||||
|
Friend WithEvents PictureBox15 As PictureBox
|
||||||
|
Friend WithEvents Button14 As Button
|
||||||
|
Friend WithEvents Label25 As Label
|
||||||
|
Friend WithEvents PictureBox16 As PictureBox
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -121,7 +121,7 @@
|
|||||||
<data name="PictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="PictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
wAAADsABataJCQAAAhBJREFUWEftlbFKA1EQRQP5FyG1fyBp/ANT2KYxWNkm+AExtYipLASDlYVpRBSC
|
vwAADr8BOAVTJAAAAhBJREFUWEftlbFKA1EQRQP5FyG1fyBp/ANT2KYxWNkm+AExtYipLASDlYVpRBSC
|
||||||
RRoDQbBYEItAFLQwksJi9Qy5j8ljG5vdZgdmd959M3fuzEaspAVbKaAUUApYE/CzWJjH9h/cn+M46y4I
|
RRoDQbBYEItAFLQwksJi9Qy5j8ljG5vdZgdmd959M3fuzEaspAVbKaAUUApYE/CzWJjH9h/cn+M46y4I
|
||||||
eBuN0ptq1XzcaKzQ1GLhD/V6OhsODectnFoI72u1UM85jpWrWvAgYNrphCSIMBXS+LnXMxwHT/r9kP86
|
eBuN0ptq1XzcaKzQ1GLhD/V6OhsODectnFoI72u1UM85jpWrWvAgYNrphCSIMBXS+LnXMxwHT/r9kP86
|
||||||
GKyd4dJAPtaZXA1pApbzuV1Crolp8pUkFj+2WpaMCM4QkocwzhKnM4LwOOZePRCCmQCp50ICPieTsCru
|
GKyd4dJAPtaZXA1pApbzuV1Crolp8pUkFj+2WpaMCM4QkocwzhKnM4LwOOZePRCCmQCp50ICPieTsCru
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
<data name="PictureBox8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="PictureBox8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
wAAADsABataJCQAAD6VJREFUeF7tXWusFdUVpvVRUIOJiiEm0B8CSlR8AD4aJaZiSSk/MBIjP6r+0FYr
|
vwAADr8BOAVTJAAAD6VJREFUeF7tXWusFdUVpvVRUIOJiiEm0B8CSlR8AD4aJaZiSSk/MBIjP6r+0FYr
|
||||||
amKJLZFXmhgTIyaoiZVgjBIlQVETEsXEcr0Xedx7FbgUVB63pSKPi8gtD6G87u79hlmXddZZe2bPOTPn
|
amKJLZFXmhgTIyaoiZVgjBIlQVETEsXEcr0Xedx7FbgUVB63pSKPi8gtD6G87u79hlmXddZZe2bPOTPn
|
||||||
NftLvnDPzJ691+Pba8+ZmTP0Mx65hhdAzuEFkHN4AeQcjSmAnh7z09at5sCKFWbPO++YnS+/bDpnzTJb
|
NftLvnDPzJ691+Pba8+ZmTP0Mx65hhdAzuEFkHN4AeQcjSmAnh7z09at5sCKFWbPO++YnS+/bDpnzTJb
|
||||||
nnrKfPPII+brhx8O/sVnbMf+ve++G7THcTg+L2gIAfScOGEOrl1rdjz/vPnnffeZtptvNi2XX27+cc45
|
nnrKfPPII+brhx8O/sVnbMf+ve++G7THcTg+L2gIAfScOGEOrl1rdjz/vPnnffeZtptvNi2XX27+cc45
|
||||||
|
|||||||
@@ -215,4 +215,16 @@
|
|||||||
Dim f As New frmSprachen("tblTranslate", "FMZOLL", ADMIN.SDL_ID)
|
Dim f As New frmSprachen("tblTranslate", "FMZOLL", ADMIN.SDL_ID)
|
||||||
f.Show(Me)
|
f.Show(Me)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
|
||||||
|
frmProgDetails.codename = "VERAG_OCR"
|
||||||
|
|
||||||
|
frmProgDetails.Show()
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
|
||||||
|
frmProgDetails.codename = "VERAGCallAssist"
|
||||||
|
frmProgDetails.Show()
|
||||||
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ Public Class cGetMsgType
|
|||||||
Return False
|
Return False
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Shared Function isEZA_DatenZumAusgang(doc As XmlDocument, ByRef VERSION As String) As Boolean
|
Shared Function isAES_DatenZumAusgang(doc As XmlDocument, ByRef VERSION As String) As Boolean
|
||||||
If doc.HasChildNodes Then
|
If doc.HasChildNodes Then
|
||||||
If doc.GetElementsByTagName("DataEXITDE").Count > 0 Then
|
If doc.GetElementsByTagName("DataEXITDE").Count > 0 Then
|
||||||
If doc.GetElementsByTagName("Version").Count > 0 Then
|
If doc.GetElementsByTagName("Version").Count > 0 Then
|
||||||
@@ -327,6 +327,17 @@ Public Class cGetMsgType
|
|||||||
End If
|
End If
|
||||||
Return False
|
Return False
|
||||||
End Function
|
End Function
|
||||||
|
Shared Function isAES_E_EXT_DAT(doc As XmlDocument) As Boolean
|
||||||
|
If doc.HasChildNodes Then
|
||||||
|
If doc.GetElementsByTagName("E_EXT_DAT").Count > 0 Then
|
||||||
|
'If doc.GetElementsByTagName("Version").Count > 0 Then
|
||||||
|
' VERSION = doc.GetElementsByTagName("Version")(0).InnerText
|
||||||
|
'End If
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Function
|
||||||
|
|
||||||
Shared Function isEZA_SumAErledigungsinformationCDXWare(doc As XmlDocument, ByRef VERSION As String) As Boolean
|
Shared Function isEZA_SumAErledigungsinformationCDXWare(doc As XmlDocument, ByRef VERSION As String) As Boolean
|
||||||
If doc.HasChildNodes Then
|
If doc.HasChildNodes Then
|
||||||
|
|||||||
@@ -76,13 +76,16 @@ Public Class cWorker_AES_EXG
|
|||||||
|
|
||||||
If generateInformationenZumAusgang003(MRN, readEZA_DatenZumAusgang_DataEXITDE_005, saveFile, DY_ACTIONS, IOPARTNER, DIVISION3, DAKOSY_SB) Then
|
If generateInformationenZumAusgang003(MRN, readEZA_DatenZumAusgang_DataEXITDE_005, saveFile, DY_ACTIONS, IOPARTNER, DIVISION3, DAKOSY_SB) Then
|
||||||
If saveFile <> "" Then
|
If saveFile <> "" Then
|
||||||
If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, readEZA_DatenZumAusgang_DataEXITDE_005, -1, IOPARTNER) Then
|
frmStartOptions.copyFile(saveFile, "\\datenarchiv\Datenarchiv\DAKOSY\ECHTSYSTEM\EXG\upl\")
|
||||||
'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
|
|
||||||
Return True
|
'NOCH NCIHT!!!!!!
|
||||||
Else
|
'If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, readEZA_DatenZumAusgang_DataEXITDE_005, -1, IOPARTNER) Then
|
||||||
'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
|
' 'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
|
||||||
Return False
|
' Return True
|
||||||
End If
|
'Else
|
||||||
|
' 'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
|
||||||
|
' Return False
|
||||||
|
'End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|||||||
@@ -420,26 +420,38 @@ Public Class frmDYNachrichtenVerarbeitung
|
|||||||
|
|
||||||
|
|
||||||
'VW: SumAErledigungsinformationCDXWare
|
'VW: SumAErledigungsinformationCDXWare
|
||||||
If Not found And cGetMsgType.isEZA_DatenZumAusgang(doc, VERSION) Then
|
If Not found And cGetMsgType.isEZA_SumAErledigungsinformationCDXWare(doc, VERSION) Then
|
||||||
Select Case VERSION
|
Select Case VERSION
|
||||||
Case False
|
Case False
|
||||||
Case Else : If cWorker_AES_EXG.readEZA_DatenZumAusgang_DataEXITDE_005(Me, d, saveVerwahrung) <> "" Then found = True
|
Case Else : If cWorker_Verwahrung.readEZA_SumAErledigungsinformationCDXWare007(Me, d, saveVerwahrung) <> "" Then found = True
|
||||||
End Select
|
End Select
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
'------------------------------------------
|
'------------------------------------------
|
||||||
'------------------ EXPORT / Gestellung (AES) ------------------
|
'------------------ EXPORT / Gestellung (AES) ------------------
|
||||||
'------------------------------------------
|
'------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
'VW: UngueltigkeitSicherheitenNCTSDE
|
'AES: UngueltigkeitSicherheitenNCTSDE
|
||||||
If Not found And cGetMsgType.isNCTS_SumAVerwahrungsinfo(doc, VERSION) Then
|
If Not found And cGetMsgType.isAES_DatenZumAusgang(doc, VERSION) Then
|
||||||
|
frmStartOptions.copyFile(d, "\\datenarchiv\Datenarchiv\DAKOSY\ECHTSYSTEM\EXG\")
|
||||||
Select Case VERSION
|
Select Case VERSION
|
||||||
Case False
|
Case False
|
||||||
Case Else : If cWorker_Verwahrung.readVW_SumAVerwahrungsinfo(Me, d, saveVerwahrung) <> "" Then found = True
|
Case Else : If cWorker_AES_EXG.readEZA_DatenZumAusgang_DataEXITDE_005(Me, d, saveVerwahrung) <> "" Then found = True
|
||||||
End Select
|
End Select
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
'AES: Zoll Nachricht
|
||||||
|
If Not found And cGetMsgType.isAES_E_EXT_DAT(doc) Then
|
||||||
|
frmStartOptions.copyFile(d, "\\datenarchiv\Datenarchiv\DAKOSY\ECHTSYSTEM\EXG\")
|
||||||
|
'Select Case VERSION
|
||||||
|
' Case False
|
||||||
|
' Case Else : If cWorker_AES_EXG.readEZA_DatenZumAusgang_DataEXITDE_005(Me, d, saveVerwahrung) <> "" Then found = True
|
||||||
|
'End Select
|
||||||
|
End If
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
'------------------------------------------
|
'------------------------------------------
|
||||||
'------------------ EZA ------------------
|
'------------------ EZA ------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user