mirror of
https://github.com/KeymonSoft/Lanterna_H.git
synced 2026-04-17 21:06:16 +00:00
- Commit inicial
This commit is contained in:
354
Lanterna2.b4a
Normal file
354
Lanterna2.b4a
Normal file
@@ -0,0 +1,354 @@
|
||||
Build1=Default,lanterna2.keymon.lat,HU2_PUBLIC
|
||||
File1=candado.png
|
||||
File10=logoLanter2.bmp
|
||||
File11=logoLanterNegro.bmp
|
||||
File12=logoLanterNegro.png
|
||||
File13=logoLanterNegro2.bmp
|
||||
File14=principal.bal
|
||||
File15=proditem.bal
|
||||
File16=usuario.png
|
||||
File2=durakelo.png
|
||||
File3=engrane.png
|
||||
File4=engranes.png
|
||||
File5=Layout.bal
|
||||
File6=login.bal
|
||||
File7=logo.png
|
||||
File8=logoLanter.png
|
||||
File9=logoLanter_192x192.png
|
||||
FileGroup1=Default Group
|
||||
FileGroup10=Default Group
|
||||
FileGroup11=Default Group
|
||||
FileGroup12=Default Group
|
||||
FileGroup13=Default Group
|
||||
FileGroup14=Default Group
|
||||
FileGroup15=Default Group
|
||||
FileGroup16=Default Group
|
||||
FileGroup2=Default Group
|
||||
FileGroup3=Default Group
|
||||
FileGroup4=Default Group
|
||||
FileGroup5=Default Group
|
||||
FileGroup6=Default Group
|
||||
FileGroup7=Default Group
|
||||
FileGroup8=Default Group
|
||||
FileGroup9=Default Group
|
||||
Group=Default Group
|
||||
Library1=appupdating
|
||||
Library10=randomaccessfile
|
||||
Library11=runtimepermissions
|
||||
Library12=scrollview2d
|
||||
Library13=serial
|
||||
Library14=sql
|
||||
Library15=stringutils
|
||||
Library16=wobblemenu
|
||||
Library17=xui
|
||||
Library18=b4xtable
|
||||
Library2=byteconverter
|
||||
Library3=compressstrings
|
||||
Library4=core
|
||||
Library5=fileprovider
|
||||
Library6=javaobject
|
||||
Library7=json
|
||||
Library8=okhttputils2
|
||||
Library9=preoptimizedclv
|
||||
ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true" ~\n~ android:smallScreens="true" ~\n~ android:anyDensity="true"/>)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~SetApplicationAttribute(android:exported, "true")~\n~~\n~AddApplicationText(<provider android:name="android.support.v4.content.FileProvider"~\n~ android:authorities="$PACKAGE$.provider" android:exported="false"~\n~ android:grantUriPermissions="true"><meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/>~\n~ </provider>)~\n~CreateResource(xml, provider_paths,~\n~ <paths><external-files-path name="name" path="" /><files-path name="name" path="" /><files-path name="name" path="shared" /></paths>~\n~)
|
||||
Module1=DBRequestManager
|
||||
Module2=errorManager
|
||||
Module3=EscPosPrinter
|
||||
Module4=numeroATexto
|
||||
Module5=Principal
|
||||
Module6=Starter
|
||||
Module7=Subs
|
||||
NumberOfFiles=16
|
||||
NumberOfLibraries=18
|
||||
NumberOfModules=7
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
#Region Project Attributes
|
||||
#ApplicationLabel: Lanterna
|
||||
#VersionCode: 1
|
||||
#VersionName: 4.04.18
|
||||
'SupportedOrientations possible values: unspecified, landscape or portrait.
|
||||
#SupportedOrientations: landscape
|
||||
#CanInstallToExternalStorage: False
|
||||
'###########################################################################################################
|
||||
'###################### PULL #############################################################
|
||||
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
|
||||
'###########################################################################################################
|
||||
'###################### PUSH #############################################################
|
||||
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
|
||||
'###########################################################################################################
|
||||
'###################### PUSH TORTOISE GIT #########################################################
|
||||
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../"&Args=/closeonend:2
|
||||
'###########################################################################################################
|
||||
#End Region
|
||||
|
||||
#Region Activity Attributes
|
||||
#FullScreen: False
|
||||
#IncludeTitle: False
|
||||
#End Region
|
||||
|
||||
Sub Process_Globals
|
||||
'These global variables will be declared once when the application starts.
|
||||
'These variables can be accessed from all modules.
|
||||
Private xui As XUI
|
||||
Private xui As XUI
|
||||
Public Provider As FileProvider
|
||||
End Sub
|
||||
|
||||
Sub Globals
|
||||
'These global variables will be redeclared each time the activity is created.
|
||||
Private i_logo As ImageView
|
||||
Private p_configuracion As Panel
|
||||
Private p_login As Panel
|
||||
Private b_regresar As Button
|
||||
Private b_entrar As Button
|
||||
Private b_envioBD As Button
|
||||
Private b_server As Button
|
||||
Private ImageView4 As ImageView
|
||||
Private ImageView2 As ImageView
|
||||
Private Panel3 As Panel
|
||||
Private Label1 As Label
|
||||
Private i_conf As ImageView
|
||||
Private b_cargaProductos As Button
|
||||
Private ListView1 As ListView
|
||||
Private E_SERVER As EditText
|
||||
Dim reqManager As DBRequestManager
|
||||
Private l_version As Label
|
||||
Private p_botones As Panel
|
||||
Private Label3 As Label
|
||||
Private p_server As Panel
|
||||
Private cb_impresionActiva As CheckBox
|
||||
Private CheckBox1 As CheckBox
|
||||
Private b_leyendaDescuento As Button
|
||||
Private p_leyendaDescuento As Panel
|
||||
End Sub
|
||||
|
||||
Sub Activity_Create(FirstTime As Boolean)
|
||||
Activity.LoadLayout("login")
|
||||
Subs.revisaBD
|
||||
p_login.Width = Activity.Width
|
||||
p_login.Height = Activity.Height
|
||||
Subs.agregaColumna("cat_gunaprod", "CAT_PT_DESC", "TEXT")
|
||||
Subs.agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT")
|
||||
Subs.agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT")
|
||||
Subs.agregaColumna("cat_gunaprod", "CAT_GP_FECHA", "TEXT")
|
||||
Subs.agregaColumna("cat_gunaprod", "CAT_GP_FECHA_MOD", "TEXT")
|
||||
Starter.skmt.ExecNonQuery("delete from cuentaa")
|
||||
Starter.skmt.ExecNonQuery("insert into cuentaa (cuenta) values ('123456')")
|
||||
Starter.skmt.ExecNonQuery("delete from cat_almacen")
|
||||
Starter.skmt.ExecNonQuery("insert into cat_almacen (id_almacen) values ('1')")
|
||||
l_version.Text = Application.VersionName
|
||||
p_configuracion.Height = Activity.Height : p_configuracion.width = Activity.width
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
Subs.centraEtiqueta(Label3, p_configuracion.Width)
|
||||
Subs.centraPanel(p_server, p_configuracion.Width)
|
||||
Subs.centraPanel(p_botones, p_configuracion.Width)
|
||||
i_logo.Left = (Activity.Width / 2) - (i_logo.Width / 2)
|
||||
Subs.centraPanel(Panel3, p_configuracion.Width)
|
||||
' subs.panelVisible(p_configuracion, 0, 0)
|
||||
Private x As Cursor = Starter.skmt.ExecQuery($"select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DESCUENTO X EFECTIVO'"$)
|
||||
If x.RowCount = 0 Then 'Insertamos el descuento para efectivo por default.
|
||||
' Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DESCUENTO X EFECTIVO"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DESCUENTO X EFECTIVO","10"))
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub Activity_Resume
|
||||
Private z As ResultSet = Starter.skmt.ExecQuery2("select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As String ("IMPRESION_ACTIVA"))
|
||||
Do While z.NextRow
|
||||
Private ia As Boolean = False
|
||||
If z.GetString("CAT_VA_VALOR") = 1 Then ia = True
|
||||
Loop
|
||||
cb_impresionActiva.Checked = ia
|
||||
Starter.imprimirTicket = ia
|
||||
End Sub
|
||||
|
||||
Sub Activity_Pause (UserClosed As Boolean)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub i_logo_Click
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub b_regresar_Click
|
||||
p_configuracion.Visible = False
|
||||
Subs.panelVisible(p_login, 0, 0)
|
||||
End Sub
|
||||
|
||||
Private Sub b_entrar_Click
|
||||
StartActivity(Principal)
|
||||
End Sub
|
||||
|
||||
Private Sub b_server_Click
|
||||
If E_SERVER.Text <> "" Then
|
||||
Starter.DBReqServer = E_SERVER.text
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.DBReqServer))
|
||||
p_configuracion.Visible = False
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
Starter.reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
' Log(E_SERVER.text)
|
||||
Else
|
||||
ToastMessageShow("Por favor ingrese la direccion del servidor", True)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'Enviamos la base de datos por correo o Whatsapp.
|
||||
Private Sub b_envioBD_Click
|
||||
'Hay que agregar las siguientes lineas al manifiesto:
|
||||
'AddApplicationText(<Provider android:name="android.support.v4.content.FileProvider"
|
||||
' android:authorities="$PACKAGE$.provider" android:exported="false"
|
||||
' android:grantUriPermissions="true"><meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/>
|
||||
' </Provider>)
|
||||
'CreateResource(xml, provider_paths,
|
||||
' <paths><external-files-path name="name" path="" /><files-path name="name" path="" /><files-path name="name" path="shared" /></paths>
|
||||
')
|
||||
Dim Provider As FileProvider
|
||||
Provider.Initialize
|
||||
Dim FileName As String = "kmt.db"
|
||||
'copy the shared file to the shared folder
|
||||
Log("xxxxxx:"&Provider.SharedFolder)
|
||||
Sleep(1000)
|
||||
File.Copy(File.DirInternal, FileName, Provider.SharedFolder, FileName)
|
||||
Dim email As Email
|
||||
email.To.Add("soporte@keymonsoft.com")
|
||||
email.Subject = "Envio Base de datos Mariana Censos"
|
||||
email.Attachments.Add(Provider.GetFileUri(FileName))
|
||||
' email.Attachments.Add(Provider.GetFileUri(FileName)) 'second attachment
|
||||
Dim in As Intent = email.GetIntent
|
||||
in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION
|
||||
StartActivity(in)
|
||||
End Sub
|
||||
|
||||
Private Sub i_conf_Click
|
||||
ListView1.Clear
|
||||
Dim Label1 As Label
|
||||
Label1 = ListView1.SingleLineLayout.Label
|
||||
Label1.TextSize = 20
|
||||
Label1.TextColor = Colors.Black
|
||||
' If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://10.0.0.205:1781")
|
||||
ListView1.AddSingleLine("http://keymon.lat:1782")
|
||||
p_configuracion.Width = Activity.Width
|
||||
p_configuracion.Height = Activity.Height
|
||||
p_configuracion.BringToFront
|
||||
Subs.panelVisible(p_configuracion, 0, 0)
|
||||
End Sub
|
||||
|
||||
Private Sub b_cargaProductos_Click
|
||||
Log(Starter.DBReqServer)
|
||||
' Dim cmd As DBCommand
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "select_cat_gunaprod_GV2"
|
||||
' cmd.Parameters = Array As Object(1)
|
||||
' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "gunaprod")
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "selectProds_Lanter"
|
||||
reqManager.ExecuteQuery(cmd , 0, "selectProds")
|
||||
cmd.Initialize
|
||||
|
||||
cmd.Name = "selectMesas_Lanter"
|
||||
reqManager.ExecuteQuery(cmd , 0, "selectMesas")
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "selectMeseros_Lanter"
|
||||
reqManager.ExecuteQuery(cmd , 0, "selectMeseros")
|
||||
End Sub
|
||||
|
||||
Private Sub ListView1_ItemClick (Position As Int, Value As Object)
|
||||
Starter.DBReqServer = Value
|
||||
E_SERVER.Text = Value
|
||||
' Log(Starter.DBReqServer)
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
Log("JOBDONE MAINPAGE")
|
||||
If Job.Tag.As(String).StartsWith("_KMS_") Then Job.tag = Job.Tag.As(String).SubString(16)
|
||||
If Job.Success = False Then
|
||||
ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||
Else
|
||||
If Starter.Logger Then LogColor("JobDone: '" & Starter.reqManager.HandleJob(Job).tag & "' - Registros: " & Starter.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim result As DBResult = Starter.reqManager.HandleJob(Job)
|
||||
If result.Tag = "selectProds" Then 'query tag
|
||||
' If Starter.Logger Then Subs.logJobDoneResultados(result)
|
||||
Starter.skmt.ExecNonQuery("delete from cat_gunaprod")
|
||||
Starter.skmt.BeginTransaction
|
||||
For Each records() As Object In result.Rows
|
||||
' Log($"ID: ${records(result.Columns.Get("CAT_GP_ID"))}, NOM: ${records(result.Columns.Get("CAT_GP_NOMBRE"))}"$)
|
||||
Dim CAT_GP_ID As String = records(result.Columns.Get("CAT_GP_ID"))
|
||||
Dim CAT_GP_NOMBRE As String = records(result.Columns.Get("CAT_GP_NOMBRE"))
|
||||
Dim CAT_GP_PRECIO As String = records(result.Columns.Get("CAT_GP_PRECIO"))
|
||||
Dim CAT_GP_ALMACEN As String = 10000 'records(result.Columns.Get("CAT_GP_ALMACEN"))
|
||||
Dim CAT_GP_IMG() As Byte = records(result.Columns.Get("CAT_GP_IMG"))
|
||||
Dim CAT_GP_FECHA As String = records(result.Columns.Get("CAT_GP_FECHA"))
|
||||
Dim CAT_GP_FECHA_MOD As String = records(result.Columns.Get("CAT_GP_FECHA_MOD"))
|
||||
Dim CAT_GP_CLASIF As String = records(result.Columns.Get("CAT_GP_CLASIF"))
|
||||
Dim CAT_GP_TIPO As String = records(result.Columns.Get("CAT_GP_TIPO"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD,CAT_GP_CLASIF,CAT_GP_TIPO))
|
||||
Next
|
||||
For v = 1 To 20 'Agregamos productos varios (editables)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object ($"AVAR${NumberFormat2(v, 2, 0, 0, False)}"$,$"Alimentos Varios ${NumberFormat2(v, 2, 0, 0, False)}"$,"1","10000",Null,"2024-02-04 17:00:00","2024-02-04 17:00:00","VARIOS","ALIMENTOS"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF, CAT_GP_TIPO) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object ($"VVAR${NumberFormat2(v, 2, 0, 0, False)}"$,$"Bebidas Varias ${NumberFormat2(v, 2, 0, 0, False)}"$,"1","10000",Null,"2024-02-04 17:00:00","2024-02-04 17:00:00","VARIOS","VINOS Y LICORES"))
|
||||
Next
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
Starter.skmt.EndTransaction
|
||||
End If
|
||||
|
||||
If result.Tag = "selectMesas" Then 'query tag
|
||||
' If Starter.Logger Then Subs.logJobDoneResultados(result)
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_MESAS")
|
||||
Starter.skmt.BeginTransaction
|
||||
For Each records() As Object In result.Rows
|
||||
' Log($"ID: ${records(result.Columns.Get("M_ID"))}, NOM: ${records(result.Columns.Get("M_NOMBRE"))}"$)
|
||||
Dim M_ID As String = records(result.Columns.Get("M_ID"))
|
||||
Dim M_NOMBRE As String = records(result.Columns.Get("M_NOMBRE"))
|
||||
Dim M_NUMERO As String = records(result.Columns.Get("M_NUMERO"))
|
||||
Dim M_ZONA As String = records(result.Columns.Get("M_ZONA"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_MESAS(M_ID, M_NUMERO, M_NOMBRE, M_ZONA) VALUES (?,?,?,?)", Array As Object (M_ID, M_NUMERO, M_NOMBRE, M_ZONA))
|
||||
Next
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
Starter.skmt.EndTransaction
|
||||
End If
|
||||
|
||||
If result.Tag = "selectMeseros" Then 'query tag
|
||||
' If Starter.Logger Then Subs.logJobDoneResultados(result)
|
||||
Starter.skmt.ExecNonQuery("delete from CAT_MESEROS")
|
||||
Starter.skmt.BeginTransaction
|
||||
For Each records() As Object In result.Rows
|
||||
' Log($"ID: ${records(result.Columns.Get("MS_ID"))}, NOM: ${records(result.Columns.Get("MS_NOMBRE"))}"$)
|
||||
Dim MS_ID As String = records(result.Columns.Get("MS_ID"))
|
||||
Dim MS_NOMBRE As String = records(result.Columns.Get("MS_NOMBRE"))
|
||||
Dim MS_MESAS_ASIGNADAS As String = records(result.Columns.Get("MS_MESAS_ASIGNADAS"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_MESEROS(MS_ID, MS_NOMBRE, MS_MESAS_ASIGNADAS) VALUES (?,?,?)", Array As Object (MS_ID, MS_NOMBRE, MS_MESAS_ASIGNADAS))
|
||||
Next
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
Starter.skmt.EndTransaction
|
||||
' If Principal.cb_mesero.IsInitialized Then Principal.cb_mesero.SetItems(Subs.traeMeserosLista)
|
||||
Starter.cargaMeseros = true
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
ToastMessageShow("¡Información cargada!", False)
|
||||
Job.Release
|
||||
End Sub
|
||||
|
||||
Private Sub b_entrar_LongClick
|
||||
' Dim a As Int = "a"
|
||||
' Subs.alineaDerecha(NumberFormat2(1450, 1, 2, 2, True), 30, ".")
|
||||
End Sub
|
||||
|
||||
Private Sub user_TextChanged (Old As String, New As String)
|
||||
If New.Trim = "KMTS1" Then i_conf.Visible = True Else i_conf.Visible = False
|
||||
End Sub
|
||||
|
||||
Private Sub cb_impresionActiva_CheckedChange(Checked As Boolean)
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("IMPRESION_ACTIVA"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("IMPRESION_ACTIVA", Checked))
|
||||
End Sub
|
||||
|
||||
Private Sub b_leyendaDescuento_Click
|
||||
|
||||
End Sub
|
||||
Reference in New Issue
Block a user