public static sysGlobalClass.CResutlWebMethod SaveData(CSaveData data)
    {
        sysGlobalClass.CResutlWebMethod result = new sysGlobalClass.CResutlWebMethod();
        PTTGC_EPIEntities db = new PTTGC_EPIEntities();

        if (UserAcc.UserExpired())
        {
            result.Status = SystemFunction.process_SessionExpired;
        }
        else
        {
            Func <string, int?, bool> CheckDuplicateName = (name, id) =>
            {
                bool Isdup = false;
                var  q     = db.mTUser.Where(w => (id.HasValue ? w.ID != id : true) && w.Username == name);
                Isdup = q.Any();
                return(Isdup);
            };

            if (!string.IsNullOrEmpty(data.sUserID))
            {
                int nUserID = data.sUserID.toIntNullToZero();

                var query = db.mTUser.FirstOrDefault(w => w.ID == nUserID);
                if (query != null)
                {
                    if (query.cUserType == "0") //Employee_GC
                    {
                        if (!CheckDuplicateName(data.sUserCode, nUserID))
                        {
                            query.Firstname = data.sName.Trim();
                            query.Email     = data.sEmail.Trim();
                            query.Company   = data.sOrg.Trim();
                            //query.sUserCode = data.sUserCode.Trim();
                            //query.Username = data.sUserCode.Trim();
                        }
                        else
                        {
                            result.Msg    = "Duplicate Employee Code !";
                            result.Status = SystemFunction.process_Failed;
                            return(result);
                        }
                    }
                    else //Employee_Other
                    {
                        if (!CheckDuplicateName(data.sUsername, nUserID))
                        {
                            query.Username  = data.sUsername.Trim();
                            query.Email     = data.sEmail.Trim();
                            query.Company   = data.sOrg.Trim();
                            query.Firstname = data.sName.Trim();
                            query.Lastname  = data.sSurName.Trim();
                            if (!string.IsNullOrEmpty(data.sPassword))
                            {
                                query.Password        = STCrypt.encryptMD5(data.sPassword.Trim());
                                query.PasswordEncrypt = STCrypt.Encrypt(data.sPassword.Trim());
                            }
                        }
                        else
                        {
                            result.Msg    = "Duplicate Username !";
                            result.Status = SystemFunction.process_Failed;
                            return(result);
                        }
                    }
                    query.nUpdateID = UserAcc.GetObjUser().nUserID;
                    query.dUpdate   = DateTime.Now;

                    db.SaveChanges();
                    result.Status = SystemFunction.process_Success;
                }
            }
            else
            {
                result.Status = SystemFunction.process_Failed;
                result.Msg    = "Not found data !";
                return(result);
            }
        }

        return(result);
    }