Imports System.Security.Cryptography
Imports System.Text
Public Class CreateProject
Public Property AccountAuth As AccountAuth
Private _defalut As Boolean
'''
''' 客户名称
'''
'''
Public Property VerderName As String
Public Property DbConnString2 As String = ""
'''
''' 客户索引
'''
'''
Public Property HotelIndex As String
Public Property RoomIndex As String
'''
''' 客户索引
'''
'''
Public Property VerderIndex As String
Public holtdic As List(Of Dictionary(Of String, String))
Public Userdic As List(Of Dictionary(Of String, String))
Public NStartTime As String = ""
Public AppUser As String = ""
Private Sub CreateProject_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetRefreshHolte_cbo()
Setdepartment_cbo()
layer_cbo.SelectedIndex = 0
'If IsNothing(holtdic) And holtdic.Count = 0 Then
' MsgBox("获取酒店项目信息失败,请查询数据库或联系开发者。")
'Else
' For Each index In holtdic
' Holte_cbo.Items.Add(index.Item("HOTEL_NAME_CN"))
' Next
'End If
'If IsNothing(Userdic) And Userdic.Count = 0 Then
' MsgBox("获取人员信息失败,请查询数据库或联系开发者。")
'Else
' For Each index In Userdic
' ManageUser_cbo .Items.Add(index.Item("UserName"))
' Next
'End If
End Sub
Public department As New Dictionary(Of String, String)
Public Sub Setdepartment_cbo()
Dim sqlstr As String = "SELECT * FROM `tbl_engineerning_department`"
Dim dic = GetSqlTableRowlist(sqlstr)
If IsNothing(dic) AndAlso dic.Count < 1 Then Return
department_cbo.Items.Clear()
department.Clear()
For Each index In dic
If String.IsNullOrEmpty(index.Item("DepartmentName")) Then
Continue For
End If
If department.ContainsKey(index.Item("DepartmentName")) Then Continue For
department_cbo.Items.Add(index.Item("DepartmentName"))
department.Add(index.Item("DepartmentName"), index.Item("id"))
Next
End Sub
Public Sub SetRefreshHolte_cbo()
If IsNothing(AccountAuth) Then Return
If String.IsNullOrEmpty(HotelIndex) Then
_defalut = False
Else
_defalut = True
End If
Holte_cbo.Items.Clear()
Room_cbo.Text = ""
For i As Integer = 0 To AccountAuth.HotelData.Count - 1
Dim group As HotelGroup = AccountAuth.HotelData.Item(i)
'遍历所有酒店组,将酒店组添加到tree view控件中
'node.Nodes.Add(group.HotelGroupsName)
Holte_cbo.Items.Add(group.HotelGroupsName)
If _defalut AndAlso group.HotelGroupsId.Equals(VerderIndex) Then
'Holte_cbo.DroppedDown =True
Holte_cbo.SelectedIndex = i
'Holte_cbo.DroppedDown =False
End If
Next
End Sub
Public Function GetSqlTableRowlist(sqlstr As String) As List(Of Dictionary(Of String, String))
Dim FileMysqlRow As New List(Of Dictionary(Of String, String))
Try
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString2)
db.Open()
dt = db.ExecuteDataTable(sqlstr)
db.Close()
End Using
For Each dtrow As DataRow In dt.Rows
Dim clunm As New Dictionary(Of String, String)
For i As Integer = 0 To dt.Columns.Count - 1
'Console.WriteLine("argRoomTypeNodeIdx = " & dtrow.Item(i))
'If dtrow.Item(i).GetType = "DbNull" Then
' clunm.Add(dt.Columns(i).ColumnName, "")
' Continue For
'End If
clunm.Add(dt.Columns(i).ColumnName, dtrow.Item(i).ToString)
Next
FileMysqlRow.Add(clunm)
Next
Catch ex As Exception
Return Nothing
End Try
Return FileMysqlRow
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sqlval As New Dictionary(Of String, String)
'Console .WriteLine (StartTime_tim .Value .ToString("yyyy-MM-dd HH:mm:ss"))
'Console.WriteLine(stringtoByte(UserControl11.ProjectDescription_rictxt.Rtf).ToString)
If String.IsNullOrEmpty(Title_txt.Text) Then
MsgBox("标题为空!!!")
Return
End If
If String.IsNullOrEmpty(Holte_cbo.Text) Then
MsgBox("项目为空!!!")
Return
End If
If String.IsNullOrEmpty(Room_cbo.Text) Then
MsgBox("房型为空!!!")
Return
End If
If String.IsNullOrEmpty(RoomID_cbo.Text) Then
MsgBox("房间ID为空!!!")
Return
End If
If String.IsNullOrEmpty(StartTime_tim.Text) Then
MsgBox("开始时间为空!!!")
Return
End If
If String.IsNullOrEmpty(StopTime_tim.Text) Then
MsgBox("截止时间为空!!!")
Return
End If
If String.IsNullOrEmpty(layer_cbo.Text) Then
MsgBox("事件类型为空!!!")
Return
End If
If String.IsNullOrEmpty(level_cbo.Text) Then
MsgBox("优先级为空!!!")
Return
End If
If String.IsNullOrEmpty(department_cbo.Text) Then
MsgBox("处理部门为空!!!")
Return
End If
If String.IsNullOrEmpty(ManageUser_cbo.Text) Then
MsgBox("处理人为空!!!")
Return
End If
sqlval.Add("CurrentStatus", 1)
sqlval.Add("DateTime", StartTime_tim.Value.ToString("yyyy-MM-dd HH:mm:ss"))
sqlval.Add("Proposer", AppUser)
sqlval.Add("EventType", layer_cbo.Tag)
sqlval.Add("HotelID", Holte_cbo.Text)
sqlval.Add("RoomTypeId", Room_cbo.Text)
sqlval.Add("RoomID", RoomID_cbo.Tag)
sqlval.Add("EventDesc", Title_txt.Text)
sqlval.Add("Process_Department", department_cbo.Text)
sqlval.Add("Process_Handler", ManageUser_cbo.Text)
sqlval.Add("Process_TargetDateTime", StopTime_tim.Value.ToString("yyyy-MM-dd HH:mm:ss"))
sqlval.Add("RtfTextMd5", GetStringMd5(UserControl11.ProjectDescription_rictxt.Rtf))
'UserControl11.ProjectDescription_rictxt.SaveFile(Application.StartupPath & "log.RTF", RichTextBoxStreamType.RichText)
'Console.WriteLine(UserControl11.ProjectDescription_rictxt.Rtf)
'Dim rtf As String = UserControl11.ProjectDescription_rictxt.Rtf
'UserControl11.ProjectDescription_rictxt.Clear()
'UserControl11.ProjectDescription_rictxt.Rtf = rtf
'stringtoByte(UserControl11.ProjectDescription_rictxt.Rtf)
'Dim filepath As String =Application .StartupPath &"\Rtftest1.rtf"
' UserControl11.ProjectDescription_rictxt.SaveFile (filepath,RichTextBoxStreamType .RichText )
'UserControl11.ProjectDescription_rictxt.p
'
Dim buff() As Byte = System.Text.Encoding.Default.GetBytes(UserControl11.ProjectDescription_rictxt.Rtf)
Dim sb As New StringBuilder
For Each ss In buff
sb.Append(ss)
sb.Append("|")
Next
'Console.WriteLine ("上传:"& ByteToString(buff ))
'Console.WriteLine ("上传:"& sb.ToString)
sqlval.Add("RtfText", sb.ToString)
If InsertIntoSqlTable("tbl_event_lists", sqlval) Then
NStartTime = sqlval.Item("DateTime")
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Else
Return
End If
End Sub
Public Function ByteToString(databuff() As Byte)
Dim strData As String = String.Empty
For i = 0 To databuff.Length - 1
strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}"
Next
Return strData
End Function
Public Function stringtoByte(str As String) As Byte()
Return Encoding.ASCII.GetBytes(str)
End Function
Public Function GetStringMd5(str As String) As String
Dim md5Hasher As New MD5CryptoServiceProvider()
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str))
Dim fileMd5 As New StringBuilder()
Dim i As Integer
For i = 0 To data.Length - 1
fileMd5.Append(data(i).ToString("X2"))
Next
Return fileMd5.ToString()
End Function
Public Function InsertIntoSqlTable(tablename As String, sqlval As Dictionary(Of String, String)) As Boolean
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString2)
db.Open()
dt = db.ExecuteDataTable(db.CmdHelper.Insert(tablename, sqlval))
db.Close()
If IsNothing(dt) Then
MsgBox($"发布事务失败,请查看数据表:{tablename},或联系开发者。")
Return False
End If
Return True
End Using
End Function
Private Sub Holte_cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles Holte_cbo.SelectedValueChanged
If String.IsNullOrEmpty(HotelIndex) Then
_defalut = False
Else
_defalut = True
End If
For Each group As HotelGroup In AccountAuth.HotelData
If group.HotelGroupsName.Equals(Holte_cbo.Text) Then
Room_cbo.Items.Clear()
Room_cbo.Text = ""
For i As Integer = 0 To group.Hotels.Count - 1
Dim hotel As Hotel = group.Hotels.Item(i)
'tmpHotelInfo.HotelId = hotel.HotelId
'tmpHotelInfo.HotelCode = hotel.Code
'tmpHotelInfo.HotelName = hotel.HotelName
Room_cbo.Items.Add(hotel.HotelName)
If _defalut AndAlso hotel.Code.Equals(RoomIndex) Then
Room_cbo.SelectedIndex = i
End If
Next
End If
Next
End Sub
Private Sub department_cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles department_cbo.SelectedValueChanged
department_cbo.Tag = department.Item(department_cbo.Text)
SetManageUser_cbo()
End Sub
Public ManageUser As New Dictionary(Of String, String)
Public Sub SetManageUser_cbo()
Dim sqlstr As String = "SELECT * FROM `tbl_engineerning_teammembers`"
Dim dic = GetSqlTableRowlist(sqlstr)
If IsNothing(dic) AndAlso dic.Count < 1 Then Return
ManageUser_cbo.Items.Clear()
ManageUser.Clear()
For Each index In dic
If String.IsNullOrEmpty(index.Item("UserName")) Then
Continue For
End If
If ManageUser.ContainsKey(index.Item("UserName")) Then Continue For
ManageUser_cbo.Items.Add(index.Item("UserName"))
ManageUser.Add(index.Item("UserName"), index.Item("UserID"))
Next
End Sub
Private Sub ManageUser_cbo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ManageUser_cbo.SelectedIndexChanged
ManageUser_cbo.Tag = ManageUser.Item(ManageUser_cbo.Text)
End Sub
Public Sub Setlayer_cbo()
Dim sqlstr As String = "SELECT * FROM `tbl_eventtype_lists`"
Dim dic = GetSqlTableRowlist(sqlstr)
If IsNothing(dic) AndAlso dic.Count < 1 Then Return
layer_cbo.Items.Clear()
For Each index In dic
If String.IsNullOrEmpty(index.Item("UserName")) Then
Continue For
End If
layer_cbo.Items.Add(index.Item("UserName"))
Next
End Sub
Private Sub layer_cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles layer_cbo.SelectedValueChanged
layer_cbo.Tag = layer_cbo.SelectedIndex + 1
End Sub
End Class