Imports System.IO
Imports System.Text
Public Class LoginForm1
    Dim IP公, IP測1, IP測2, 印尼測試內網網段, 內網線路, 可登入 As Boolean
    Dim MACKK As String 'MAC碼
    Dim diskId As String '數字ID
    Dim diskSerialNumber As String '硬碟序列
    Dim diskModel As String '磁盘型態
    Private ReadOnly 對話框(15) As String : Dim FFGG As Integer : Dim GGHH As Integer
    Dim Str As String = Application.StartupPath
    Private Sub 語言轉換讀取()
        If 系統語言 = "繁體中文" Then : 語言 = "CH" : ElseIf 系統語言 = "English" Then : 語言 = "EN" : ElseIf 系統語言 = "Indonesian" Then : 語言 = "IN" : End If
        密碼_lb.Text = 系統語言字典("G000-103-" & 語言) : 執行檔版本號_lb.Text = 系統語言字典("G000-102-" & 語言) & " : " & 版本
        資料庫版本號_lb.Text = 系統語言字典("G000-104-" & 語言) & " : " & 資料庫版本 : 系統語言_lb.Text = 系統語言字典("G000-100-" & 語言)
        公司線路_rb.Text = 系統語言字典("H000-100-" & 語言) : 伺服器區域_lb.Text = 系統語言字典("H000-101-" & 語言) : 對話框(5) = 系統語言字典("H000-113-" & 語言)
        使用者名稱_lb.Text = 系統語言字典("H000-104-" & 語言) : 對話框(1) = 系統語言字典("H000-109-" & 語言) : 對話框(7) = 系統語言字典("H000-115-" & 語言)
        測試線路_rb.Text = 系統語言字典("H000-105-" & 語言) : 對話框(3) = 系統語言字典("H000-111-" & 語言) : 對話框(9) = 系統語言字典("H000-108-" & 語言)
        對話框(0) = 系統語言字典("H000-107-" & 語言) : 對話框(2) = 系統語言字典("H000-110-" & 語言) : 對話框(4) = 系統語言字典("H000-112-" & 語言)
        對話框(6) = 系統語言字典("H000-114-" & 語言) : 對話框(8) = 系統語言字典("H000-116-" & 語言) : 對話框(10) = 系統語言字典("H000-106-" & 語言)
        對話框(11) = 系統語言字典("H000-117-" & 語言) : 對話框(12) = 系統語言字典("H000-118-" & 語言) : 對話框(13) = 系統語言字典("H000-119-" & 語言)
        對話框(14) = 系統語言字典("H000-120-" & 語言) : 對話框(15) = 系統語言字典("H000-102-" & 語言)
    End Sub
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 伺服器區域_cb.SelectedIndexChanged
        '-----------------------確認登入伺服器位置-----------------------------------------------------------------------------------------------------------------------------------------
        If 伺服器區域_cb.Text = "公司內網" Then
            IP公 = True
            If IP公 = True Then : 登入人IP = "192.168.1.63,2433" : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
        ElseIf 伺服器區域_cb.Text = "公司雲端" Then
            IP公 = True
            If IP公 = True Then : 登入人IP = PA49 : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
        ElseIf 伺服器區域_cb.Text = "測試雲端" Then
            IP測1 = True
            If IP測1 = True Then : 登入人IP = "106.1.48.106,4567" : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
        ElseIf 伺服器區域_cb.Text = "印尼測試" Then
            If IP測2 = True Then : 登入人IP = "192.168.1.63,2433"
                If SQL_連線狀態模組2.ConnectTest2("192.168.1.63,2433") = True Then : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
            Else : MGB(對話框(11), 1) : Me.Close() : End If
        End If
    End Sub
    Private Sub 登入()
        '-----------------------寫入連線字串-----------------------------------------------------------------------------------------------------------------------------------------------
        If Strings.Left(伺服器區域_cb.Text, 2) = "印尼" Or Strings.Left(伺服器區域_cb.Text, 2) = "公司" Then
            SQL_連線字串_正式() : SQL_連線字串_正式_工程SQL() : SQL_連線字串_正式_管理SQL()
        Else
            SQL_連線字串_測試() : SQL_連線字串_測試_工程SQL() : SQL_連線字串_測試_管理SQL()
        End If
        g_conn_type = 伺服器區域_cb.Text & "伺服器"
        '-----------------------系統版本號寫入-----------------------------------------------------------------------------------------------------------------------------------------------
        SQL_系統版本號驗證()
        If dr.Read() Then : 資料庫版本 = dr("內帳系統") : 版本號 = dr("內帳系統") : End If : conn.Close()

        語言轉換讀取()
        系統語言_cb.Items.Clear() : 系統語言_cb.Items.Add("繁體中文") : 系統語言_cb.Items.Add("Indonesian") : 系統語言_cb.Items.Add("English")
        '-----MAC碼與硬碟資料-------------------------------------------------------------------------------------------------------------------------------------------------------------
        Dim Wmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration")
        For Each WmiObj As Management.ManagementObject In Wmi.Get
            If CBool(WmiObj("IPEnabled")) Then
                MACKK = WmiObj("MACAddress")
            End If
        Next
        Dim cmicWmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
        For Each cmicWmiObj As Management.ManagementObject In cmicWmi.Get
            diskId = cmicWmiObj("size")             'diskId = cmicWmiObj("signature")
            diskSerialNumber = cmicWmiObj("serialnumber")
            diskModel = cmicWmiObj("Model")
            Exit For
        Next
    End Sub
    Private Sub LoginForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        語言轉換讀取()
        Panel1.SendToBack() : 伺服器區域_cb.Text = 計算機.伺服器區域_cb.Text : 系統語言_cb.Text = 系統語言
        低網速模式 = True
        '-----------------------FTP資料夾登入位置宣告--------------------------------------------------------------------------------------------------------------------------------------
        Target = "https://gcm-smart.com/ERP/HX-PGS/"

        If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then
            登入() : 自動更新2()
        Else : End If
    End Sub
    Private Sub LoginForm1_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing
        計算機.Close()
    End Sub
    Private Sub 系統語言_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 系統語言_cb.SelectedIndexChanged
        系統語言 = 系統語言_cb.Text
        Dim strDirName As String : Dim Strs As String = Application.StartupPath
        If File.Exists(Strs & "\LANGUAGE.txt") Then : File.Delete(Strs & "\LANGUAGE.txt") : End If
        strDirName = Strs & "\LANGUAGE.txt"
        Try
            Using fs As New IO.FileStream(strDirName, FileMode.Append)
                Using sw As New StreamWriter(fs, Encoding.Default)
                    Dim stra As String
                    If 系統語言 = "繁體中文" Then : stra = "CHER" : ElseIf 系統語言 = "English" Then : stra = "Engl"
                    ElseIf 系統語言 = "Indonesian" Then : stra = "Indo" : Else : stra = "CHER" : End If
                    sw.WriteLine(stra)   '插入一整行
                    sw.Flush()
                End Using
            End Using
        Catch ex As Exception : End Try : 語言轉換讀取()
    End Sub
    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
        If 系統語言_cb.Text = " " Or 系統語言_cb.Text = "" Then : MGB(對話框(9), 1)
        Else
            '-----電腦綁定判斷-------------------------------------------------------------------------------------------------------------------------------------------------------------
            If 登入綁定_ch.Checked = True Then
                PA1 = MACKK : PA2 = diskId : PA3 = diskSerialNumber : PA4 = diskModel
                SQL_電腦綁定()
                If dr.Read() Then
                    conn.Close() : 登入第一層()
                Else
                    If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then
                        conn.Close() : 登入第一層()
                    Else
                        conn.Close() : MGB(對話框(6), 1) : Me.Close()
                    End If
                End If
            Else
                conn.Close() : 登入第一層()
            End If
        End If
    End Sub
    Private Sub 登入第一層()
        If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then
            If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then
                If 伺服器區域_cb.Text = "測試雲端" Then
                    自動更新2()
                    登入程序() : 判斷重登 = False
                Else
                    MGB(對話框(1), 1)
                    登入程序() : 判斷重登 = False
                End If
            Else
                登入程序() : 判斷重登 = False
            End If
        Else
            If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then
                If 伺服器區域_cb.Text = "測試雲端" Then
                    自動更新2()
                Else
                    MGB(對話框(1), 1)
                End If
            Else
                登入程序() : 判斷重登 = False
            End If
        End If
    End Sub
    Private Sub 登入程序()
        If 帳號_rtb.Text = "" Then : MGB(對話框(2), 1) : ElseIf 帳號_rtb.Text <> "" Then
            If 帳號_rtb.Text = "" Then : MGB(對話框(3), 1) : ElseIf 帳號_rtb.Text <> "" Then
                SQL_使用者級別宣告() : If dr.Read() Then : 登入人級別 = dr("級別").ToString : End If
                SQL_系統預設值()
                If dr.Read() Then
                    密碼時限 = dr("密碼重設天數") : 行政採購簽核級別基數 = dr("行政採購二級") : 建築採購簽核級別基數 = dr("建築採購二級")
                    比例1 = dr("比例1") : 比例2 = dr("比例2") : 比例3 = dr("比例3") : 分母 = dr("圖片伺服器上限") : 工程圖庫限制 = dr("圖片伺服器上限")
                End If
                SQL_使用者權限宣告()
                If dr.Read() Then
                    密碼驗證_tb.Text = dr("密碼").ToString : 密碼日期_tb.Text = dr("密碼日期").ToString
                    gUserName = dr("姓名").ToString : 登入人部門 = dr("部門").ToString : 登入人課別 = dr("課別").ToString
                    登入人組別 = dr("組別").ToString
                    For I As Integer = 1 To 權限數量 : CC(I) = dr.Item(I + 8 - 1) : Next
                    FFGG = DateDiff("d", 密碼日期_tb.Text, Format(Today(), "yyyy/MM/dd"))
                    If CC(45) = True Then : GGHH = 密碼時限 - FFGG
                        If GGHH <= 0 Then
                            MGB(對話框(4), 1) : 個人帳號管理.ShowDialog()
                        Else : 登入第二層() : End If
                    Else : 登入第二層() : End If
                Else : MGB(對話框(15), 1) : End If : dr.Close()
            End If
        End If
        conn.Close()
    End Sub
    Private Sub 登入第二層()
        If 密碼_rtb.Text = 密碼驗證_tb.Text Then
            If 密碼驗證_tb.Text = "" Then : MGB(對話框(5), 1)
            Else
                Me.Hide() : HX_PGS_ERP_SYS.Show() : 密碼_rtb.Text = "" : 帳號_rtb.Text = ""
            End If
        ElseIf 密碼_rtb.Text <> 密碼驗證_tb.Text Then : MGB(對話框(5), 1) : End If
    End Sub
    Private Sub 自動更新2()
        Dim Str As String = Application.StartupPath
        If File.Exists(Str + "\NOTAUTO.txt") Then
            If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then : Else : End If
        Else
            My.Computer.Network.DownloadFile(Target & "Calculator-SYS-UPDATE.exe", Str + "\Calculator-SYS-UPDATE.exe")
            Shell(Str + "\Calculator-SYS-UPDATE.exe", vbNormalFocus) : Me.Close()
        End If
    End Sub
    Private Sub 公司線路_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 公司線路_rb.Click
        If IP公 = False Then : 公司線路_rb.Checked = False : 測試線路_rb.Checked = True : MGB(對話框(12), 1)
        Else : 伺服器區域_cb.Text = "公司雲端" : 公司線路_rb.Checked = True : 測試線路_rb.Checked = False : MGB(對話框(13), 1) : End If
    End Sub
    Private Sub 測試線路_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 測試線路_rb.Click
        公司線路_rb.Checked = False : 測試線路_rb.Checked = True
        If IP測1 = True Or IP測2 = True Then : 伺服器區域_cb.Text = "測試雲端" : ElseIf IP測1 = False And IP測2 = False Then : 伺服器區域_cb.Text = "公司雲端" : MGB(對話框(14), 1) : End If
    End Sub
    Private Sub 帳號_rtb_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles 帳號_rtb.GotFocus
        帳號_rtb.ImeMode = 2
    End Sub
    Private Sub UsernameTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 帳號_rtb.KeyPress
        If e.KeyChar = ChrW(13) Then : Me.OK.PerformClick() : End If
    End Sub
    Private Sub PasswordTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 密碼_rtb.KeyPress
        If e.KeyChar = ChrW(13) Then : Me.OK.PerformClick() : End If
    End Sub
    Private Sub UsernameTextBox_TextChanged(sender As Object, e As EventArgs) Handles 帳號_rtb.TextChanged
        If 刷卡登入_ch.Checked = False Then : Else
            If IsNumeric(帳號_rtb.Text) = True Then
                If 帳號_rtb.Text.Length = 10 Then
                    SQL_刷卡登入()
                    If dr.Read() Then
                        帳號_rtb.Text = dr("帳號").ToString : 密碼_rtb.Text = dr("密碼").ToString : conn.Close()
                    Else
                        帳號_rtb.Text = "" : 密碼_rtb.Text = "" : conn.Close()
                    End If
                    Exit Sub : Me.OK.PerformClick()
                End If
            End If
        End If
    End Sub
    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles 刷卡登入_ch.Click
        帳號_rtb.Focus()
    End Sub
    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
        計算機.Close()
    End Sub
End Class
