private void Login()
        {
            try
            {
                // @TrườngNX on 20120905
                // Lựa chọn ngôn ngữ của phiên làm việc
                // Căn cứ vào ngôn ngữ, load file language resources tương ứng
                //this.Cursor = Cursors.Wait;

                //var process = new ZAMainAppProcess();
                string userName = txtUsername.Text;
                string txtMD5   = LSecurity.MD5Encrypt(txtPassword.Password);
                //process.createSession();
                string       responseMessage = "";
                NGON_NGU_DTO ngonNguDTO      = null;
                bool         ret             = process.doLoginWithSession(userName, txtMD5, ref ngonNguDTO, ref responseMessage);

                // Nếu thành công
                if (ret)
                {
                    // Nếu yêu cầu cập nhật phiên bản
                    if (responseMessage != null &&
                        responseMessage.Equals(ApplicationConstant.CommonResponseMessage.M_ResponseMessage_Common_NotLatestVersion.layGiaTri())
                        )
                    {
                        //MessageBoxResult retQuestion = LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Question);
                        //if (retQuestion == MessageBoxResult.Yes)
                        //{
                        //    // Cập nhật phiên bản
                        //}
                        //else
                        //{
                        //}

                        MessageBoxResult retMessage = LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Question);
                        if (retMessage == MessageBoxResult.Yes)
                        {
                            UserControl p             = null;
                            bool        stretchWindow = false;
                            p = new PresentationWPF.QuanTriHeThong.PhienBan.ucPhienBanCapNhat();

                            if (p != null)
                            {
                                Window window = new Window
                                {
                                    Title = LLanguage.SearchResourceByKey("MENU.152_CAP_NHAT_PB"),
                                    WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen,
                                    //Icon = (rmb.ImageSource == null ? this.Icon : rmb.ImageSource),
                                    Width   = (Double.IsNaN(p.Width) ? 1024 : p.Width),
                                    Height  = (Double.IsNaN(p.Height) ? 700 : p.Height),
                                    Content = p,
                                };
                                if (stretchWindow == true)
                                {
                                    window.WindowState = WindowState.Maximized;
                                }
                                window.Width      = 500;
                                window.Height     = 150;
                                window.ResizeMode = ResizeMode.NoResize;

                                //Mouse.OverrideCursor = Cursors.Arrow;
                                this.Close();
                                window.ShowDialog();
                            }
                            else
                            {
                                Mouse.OverrideCursor = Cursors.Arrow;
                                LMessage.ShowMessage("Không tìm thấy chức năng này", LMessage.MessageBoxType.Warning);
                            }
                        }
                    }

                    ClientInformation.NgonNgu = ((RadComboBoxItem)cboLanguage.SelectedItem).Tag.ToString();

                    // @Truonglq set Culture ngôn ngữ cho  Coltrol (telerik)
                    //CultureInfo culture = new CultureInfo(((RadComboBoxItem)cboLanguage.SelectedItem).Tag.ToString());
                    //System.Threading.Thread.CurrentThread.CurrentCulture = culture;
                    //System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
                    InitializeCultures();
                    //InitializeCulturesTelerik();
                    LocalizationManager.Manager = new LocalizationManager()
                    {
                        ResourceManager = LocalizationRadControl.ResourceManager
                    };

                    // Khởi tạo phiên làm việc, chọn đơn vị nghiệp vụ cần thao tác dữ liệu
                    if (!ClientInformation.LoaiNguoiSuDung.Equals(BusinessConstant.LoaiNguoiSuDung.CAP_SA.layGiaTri()))
                    {
                        InitSession initSession = new InitSession(ClientInformation.ListPhongGD);

                        initSession.ResizeMode            = ResizeMode.NoResize;
                        initSession.Height                = 250;
                        initSession.Width                 = 600;
                        initSession.WindowStartupLocation = WindowStartupLocation.CenterScreen;

                        initSession.lblNguoiDungValue.Content = "(" + ClientInformation.TenDangNhap + ") " + ClientInformation.HoTen;
                        initSession.lblChiNhanhValue.Content  = "(" + ClientInformation.MaDonVi + ") " + ClientInformation.TenDonVi;
                        //initSession.ListPhongGD = ClientInformation.ListPhongGD;

                        initSession.Show();
                        this.Cursor = Cursors.Arrow;
                        Close();
                    }
                    else
                    {
                        ClientInformation.TenDonViGiaoDich   = ClientInformation.TenDonVi;
                        ClientInformation.MaDonViGiaoDich    = ClientInformation.MaDonVi;
                        ClientInformation.IdDonViGiaoDich    = ClientInformation.IdDonVi;
                        ClientInformation.PhuongPhapHachToan = null;

                        MainWindow mainwindow = new MainWindow();
                        mainwindow.Show();
                        this.Cursor = Cursors.Arrow;
                        Close();
                    }
                }
                else
                {
                    ImageBehavior.SetAnimatedSource(imgWaiting, null);

                    // Nếu yêu cầu đổi mật khẩu
                    if (responseMessage != null &&
                        (
                            responseMessage.Equals(ApplicationConstant.LoginResponseMessage.M_ResponseMessage_Login_YeuCauDoiMatKhauLanDau.layGiaTri()) ||
                            responseMessage.Equals(ApplicationConstant.LoginResponseMessage.M_ResponseMessage_Login_YeuCauDoiMatKhau.layGiaTri())
                        )
                        )
                    {
                        MessageBoxResult retQuestion = LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Question);
                        if (retQuestion == MessageBoxResult.Yes)
                        {
                            txtPassword.Clear();

                            ChangePassword changePassword = new ChangePassword();
                            Window         window         = new Window();

                            window.ResizeMode            = ResizeMode.NoResize;
                            window.Height                = 180;
                            window.Width                 = 500;
                            window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                            window.Title                 = LLanguage.SearchResourceByKey("U.ZAMainApp.ChangePassword.Title");
                            window.Content               = changePassword;

                            changePassword.userName = userName;
                            window.ShowDialog();
                            //LMessage.ShowMessage("Change pass", LMessage.MessageBoxType.Warning);
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Warning);
                    }
                }
            }
            //else
            catch (Exception ex)
            {
                ImageBehavior.SetAnimatedSource(imgWaiting, null);

                //this.Close();
                //Application.Current.Shutdown();
                this.Cursor = Cursors.Arrow;
                if (ex.GetType() == typeof(CustomException))
                {
                    new frmThongBaoLoi(ex.Message, ex.InnerException).ShowDialog();
                }
                else
                {
                    if (ex.InnerException != null)
                    {
                        if (ex.InnerException.GetType() == typeof(CustomException))
                        {
                            new frmThongBaoLoi(ex.InnerException.Message, ex.InnerException).ShowDialog();
                        }
                        else
                        {
                            new frmThongBaoLoi("M.ResponseMessage.Login.KhongThanhCong", ex).ShowDialog();
                        }
                    }
                    else
                    {
                        new frmThongBaoLoi("M.ResponseMessage.Login.KhongThanhCong", ex).ShowDialog();
                    }
                }
                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, ex);
            }
        }
        private void Login()
        {
            try
            {
                // @TrườngNX on 20120905
                // Lựa chọn ngôn ngữ của phiên làm việc
                // Căn cứ vào ngôn ngữ, load file language resources tương ứng
                //this.Cursor = Cursors.Wait;

                //var process = new ZAMainAppProcess();
                string userName = txtUsername.Text;
                string txtMD5   = LSecurity.MD5Encrypt(txtPassword.Password);
                //process.createSession();
                string       responseMessage = "";
                NGON_NGU_DTO ngonNguDTO      = null;
                bool         ret             = process.doLoginWithSession(userName, txtMD5, ref ngonNguDTO, ref responseMessage);

                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "ret value: " + ret.ToString());
                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "responseMessage value: " + responseMessage);
                // Nếu thành công
                if (ret)
                {
                    // Nếu yêu cầu cập nhật phiên bản
                    if (responseMessage != null &&
                        responseMessage.Equals(ApplicationConstant.CommonResponseMessage.M_ResponseMessage_Common_NotLatestVersion.layGiaTri())
                        )
                    {
                        //MessageBoxResult retQuestion = LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Question);
                        //if (retQuestion == MessageBoxResult.Yes)
                        //{
                        //    // Cập nhật phiên bản
                        //}
                        //else
                        //{
                        //}

                        MessageBoxResult retMessage = LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Question);
                        if (retMessage == MessageBoxResult.Yes)
                        {
                            UserControl p             = null;
                            bool        stretchWindow = false;
                            p = new PresentationWPF.QuanTriHeThong.PhienBan.ucPhienBanCapNhat();

                            if (p != null)
                            {
                                Window window = new Window
                                {
                                    Title = LLanguage.SearchResourceByKey("MENU.152_CAP_NHAT_PB"),
                                    WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen,
                                    //Icon = (rmb.ImageSource == null ? this.Icon : rmb.ImageSource),
                                    Width   = (Double.IsNaN(p.Width) ? 1024 : p.Width),
                                    Height  = (Double.IsNaN(p.Height) ? 700 : p.Height),
                                    Content = p,
                                };
                                if (stretchWindow == true)
                                {
                                    window.WindowState = WindowState.Maximized;
                                }
                                window.Width      = 500;
                                window.Height     = 150;
                                window.ResizeMode = ResizeMode.NoResize;

                                //Mouse.OverrideCursor = Cursors.Arrow;
                                this.Close();
                                window.ShowDialog();
                            }
                            else
                            {
                                Mouse.OverrideCursor = Cursors.Arrow;
                                LMessage.ShowMessage("Không tìm thấy chức năng này", LMessage.MessageBoxType.Warning);
                            }
                        }
                    }


                    #region Ghi ngôn ngữ ra file UIResources
                    if (ngonNguDTO != null)
                    {
                        List <string> lstResource_vi = new List <string>();
                        List <string> lstResource_en = new List <string>();
                        List <string> lstResource_gl = new List <string>();
                        List <string> lstMessage_vi  = new List <string>();
                        List <string> lstMessage_en  = new List <string>();
                        List <string> lstMessage_gl  = new List <string>();

                        string pathFileResource_vi = ClientInformation.LanguagesDir + "\\UIResources_vi.xaml";
                        string pathFileResource_en = ClientInformation.LanguagesDir + "\\UIResources_en.xaml";
                        string pathFileResource_gl = ClientInformation.LanguagesDir + "\\UIResources_gl.xaml";
                        string pathFileMessage_vi  = ClientInformation.LanguagesDir + "\\MessageResources_vi.xaml";
                        string pathFileMessage_en  = ClientInformation.LanguagesDir + "\\MessageResources_en.xaml";
                        string pathFileMessage_gl  = ClientInformation.LanguagesDir + "\\MessageResources_gl.xaml";


                        string begin = "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\""
                                       + "\n                " + "xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\""
                                       + "\n                " + "xmlns:my=\"clr-namespace:System;assembly=mscorlib\">";
                        string end = "\n\n</ResourceDictionary>";



                        if (!ngonNguDTO.checkResource && ngonNguDTO.lstResource != null)
                        {
                            lstResource_vi.Add(begin);
                            lstResource_en.Add(begin);
                            lstResource_gl.Add(begin);

                            foreach (var item in ngonNguDTO.lstResource)
                            {
                                lstResource_vi.Add("\n    <my:String x:Key=\"" + item.MA + "\">" + item.VIET_NAM + "</my:String>");
                                lstResource_en.Add("\n    <my:String x:Key=\"" + item.MA + "\">" + item.ENGLISH + "</my:String>");
                                lstResource_gl.Add("\n    <my:String x:Key=\"" + item.MA + "\">" + item.GLOBAL + "</my:String>");
                            }

                            lstResource_vi.Add(end);
                            lstResource_en.Add(end);
                            lstResource_gl.Add(end);

                            LFile.DeleteFile(pathFileResource_vi);
                            LFile.DeleteFile(pathFileResource_en);
                            LFile.DeleteFile(pathFileResource_gl);

                            LFile.WriteListTextToFile(pathFileResource_vi, true, lstResource_vi);
                            LFile.WriteListTextToFile(pathFileResource_en, true, lstResource_en);
                            LFile.WriteListTextToFile(pathFileResource_gl, true, lstResource_gl);
                        }

                        if (!ngonNguDTO.checkMessage && ngonNguDTO.lstMessage != null)
                        {
                            lstMessage_vi.Add(begin);
                            lstMessage_en.Add(begin);
                            lstMessage_gl.Add(begin);

                            foreach (var item in ngonNguDTO.lstMessage)
                            {
                                lstMessage_vi.Add("\n    <my:String x:Key=\"" + item.MA + "\">" + item.VIET_NAM + "</my:String>");
                                lstMessage_en.Add("\n    <my:String x:Key=\"" + item.MA + "\">" + item.ENGLISH + "</my:String>");
                                lstMessage_gl.Add("\n    <my:String x:Key=\"" + item.MA + "\">" + item.GLOBAL + "</my:String>");
                            }

                            lstMessage_vi.Add(end);
                            lstMessage_en.Add(end);
                            lstMessage_gl.Add(end);

                            LFile.DeleteFile(pathFileMessage_vi);
                            LFile.DeleteFile(pathFileMessage_en);
                            LFile.DeleteFile(pathFileMessage_gl);

                            LFile.WriteListTextToFile(pathFileMessage_vi, true, lstMessage_vi);
                            LFile.WriteListTextToFile(pathFileMessage_en, true, lstMessage_en);
                            LFile.WriteListTextToFile(pathFileMessage_gl, true, lstMessage_gl);
                        }

                        ChangeLanguage();
                    }
                    #endregion


                    ClientInformation.NgonNgu = ((RadComboBoxItem)cboLanguage.SelectedItem).Tag.ToString();

                    // @Truonglq set Culture ngôn ngữ cho  Coltrol (telerik)
                    //CultureInfo culture = new CultureInfo(((RadComboBoxItem)cboLanguage.SelectedItem).Tag.ToString());
                    //System.Threading.Thread.CurrentThread.CurrentCulture = culture;
                    //System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
                    InitializeCultures();
                    //InitializeCulturesTelerik();
                    LocalizationManager.Manager = new LocalizationManager()
                    {
                        ResourceManager = LocalizationRadControl.ResourceManager
                    };

                    // Khởi tạo phiên làm việc, chọn đơn vị nghiệp vụ cần thao tác dữ liệu
                    if (!ClientInformation.LoaiNguoiSuDung.Equals(BusinessConstant.LoaiNguoiSuDung.CAP_SA.layGiaTri()))
                    {
                        LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "BeforeInitSession");
                        InitSession initSession = new InitSession(ClientInformation.ListPhongGD);
                        LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "AfterInitSession");

                        initSession.ResizeMode            = ResizeMode.NoResize;
                        initSession.Height                = 250;
                        initSession.Width                 = 600;
                        initSession.WindowStartupLocation = WindowStartupLocation.CenterScreen;

                        initSession.lblNguoiDungValue.Content = "(" + ClientInformation.TenDangNhap + ") " + ClientInformation.HoTen;
                        initSession.lblChiNhanhValue.Content  = "(" + ClientInformation.MaDonVi + ") " + ClientInformation.TenDonVi;
                        //initSession.ListPhongGD = ClientInformation.ListPhongGD;

                        LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "BeforeInitSession Show");
                        initSession.Show();
                        LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "AfterInitSession Show");
                        this.Cursor = Cursors.Arrow;
                        Close();
                    }
                    else
                    {
                        ClientInformation.TenDonViGiaoDich   = ClientInformation.TenDonVi;
                        ClientInformation.MaDonViGiaoDich    = ClientInformation.MaDonVi;
                        ClientInformation.IdDonViGiaoDich    = ClientInformation.IdDonVi;
                        ClientInformation.PhuongPhapHachToan = null;

                        MainWindow mainwindow = new MainWindow();
                        mainwindow.Show();
                        this.Cursor = Cursors.Arrow;
                        Close();
                    }
                }
                else
                {
                    ImageBehavior.SetAnimatedSource(imgWaiting, null);

                    // Nếu yêu cầu đổi mật khẩu
                    if (responseMessage != null &&
                        (
                            responseMessage.Equals(ApplicationConstant.LoginResponseMessage.M_ResponseMessage_Login_YeuCauDoiMatKhauLanDau.layGiaTri()) ||
                            responseMessage.Equals(ApplicationConstant.LoginResponseMessage.M_ResponseMessage_Login_YeuCauDoiMatKhau.layGiaTri())
                        )
                        )
                    {
                        LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "IF M_ResponseMessage_Login_YeuCauDoiMatKhau");
                        MessageBoxResult retQuestion = LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Question);
                        if (retQuestion == MessageBoxResult.Yes)
                        {
                            txtPassword.Clear();

                            ChangePassword changePassword = new ChangePassword();
                            Window         window         = new Window();

                            window.ResizeMode            = ResizeMode.NoResize;
                            window.Height                = 180;
                            window.Width                 = 500;
                            window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                            window.Title                 = LLanguage.SearchResourceByKey("U.ZAMainApp.ChangePassword.Title");
                            window.Content               = changePassword;

                            changePassword.userName = userName;
                            window.ShowDialog();
                            //LMessage.ShowMessage("Change pass", LMessage.MessageBoxType.Warning);
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "ELSE M_ResponseMessage_Login_YeuCauDoiMatKhau");
                        LMessage.ShowMessage(responseMessage, LMessage.MessageBoxType.Warning);
                    }
                }
            }
            //else
            catch (Exception ex)
            {
                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, "Login() Exception");
                ImageBehavior.SetAnimatedSource(imgWaiting, null);

                //this.Close();
                //Application.Current.Shutdown();
                this.Cursor = Cursors.Arrow;
                if (ex.GetType() == typeof(CustomException))
                {
                    new frmThongBaoLoi(ex.Message, ex.InnerException).ShowDialog();
                }
                else
                {
                    if (ex.InnerException != null)
                    {
                        if (ex.InnerException.GetType() == typeof(CustomException))
                        {
                            new frmThongBaoLoi(ex.InnerException.Message, ex.InnerException).ShowDialog();
                        }
                        else
                        {
                            new frmThongBaoLoi("M.ResponseMessage.Login.KhongThanhCong", ex).ShowDialog();
                        }
                    }
                    else
                    {
                        new frmThongBaoLoi("M.ResponseMessage.Login.KhongThanhCong", ex).ShowDialog();
                    }
                }
                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, ex);
            }
        }