private List <LinkVM> RetrieveAllLinks(string machine)
        {
            var ret     = new List <LinkVM>();
            var mvm     = MachineLink.RetrieveLinks(machine);
            var mvmdict = new Dictionary <string, bool>();

            foreach (var item in mvm)
            {
                mvmdict.Add(item.LinkName, true);
                if (string.Compare(item.Action, LINKACTION.DELETE) != 0)
                {
                    var templink = new LinkVM();
                    templink.LinkName = item.LinkName;
                    templink.Link     = item.Link;
                    templink.Logo     = item.Logo;
                    templink.Comment  = item.Comment;
                    ret.Add(templink);
                }
            }
            var vm = LinkVM.RetrieveLinks();

            foreach (var item in vm)
            {
                if (!mvmdict.ContainsKey(item.LinkName))
                {
                    ret.Add(item);
                }
            }

            return(ret);
        }
        public JsonResult AllData()
        {
            var vm     = new List <LinkVM>();
            var ckdict = CookieUtility.UnpackCookie(this);

            if (!ckdict.ContainsKey("reqmachine"))
            {
                string IP       = Request.UserHostName;
                string compName = DetermineCompName(IP);
                if (!string.IsNullOrEmpty(compName))
                {
                    var tempdict = new Dictionary <string, string>();
                    tempdict.Add("reqmachine", compName);
                    CookieUtility.SetCookie(this, tempdict);
                } //end if
                vm = LinkVM.RetrieveLinks();
            }     //end
            else
            {
                vm = RetrieveAllLinks(ckdict["reqmachine"]);
            }

            var res = new JsonResult();

            res.Data = new { data = vm };
            res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return(res);
        }
        public JsonResult RemoveCustomLink()
        {
            var linkname = Request.Form["link_name"];

            var vm      = new List <LinkVM>();
            var machine = string.Empty;

            var ckdict = CookieUtility.UnpackCookie(this);

            if (!ckdict.ContainsKey("reqmachine"))
            {
                string IP       = Request.UserHostName;
                string compName = DetermineCompName(IP);
                if (!string.IsNullOrEmpty(compName))
                {
                    var tempdict = new Dictionary <string, string>();
                    tempdict.Add("reqmachine", compName);
                    machine = compName;
                    CookieUtility.SetCookie(this, tempdict);
                } //end if
                vm = LinkVM.RetrieveLinks();
            }     //end
            else
            {
                vm      = RetrieveAllLinks(ckdict["reqmachine"]);
                machine = ckdict["reqmachine"];
            }

            var validlink = string.Empty;

            foreach (var item in vm)
            {
                if (string.Compare(linkname, item.LinkName) == 0)
                {
                    validlink = item.Link;
                    if (!string.IsNullOrEmpty(machine))
                    {
                        MachineLink.RemoveCustomLink(item.LinkName, item.Link, item.Logo, item.Comment, machine);
                    }
                    break;
                }
            }

            var res = new JsonResult();

            res.Data = new { success = true };
            return(res);
        }
        public ActionResult RedirectToLink(string linkname)
        {
            var vm      = new List <LinkVM>();
            var machine = string.Empty;

            var ckdict = CookieUtility.UnpackCookie(this);

            if (!ckdict.ContainsKey("reqmachine"))
            {
                string IP       = Request.UserHostName;
                string compName = DetermineCompName(IP);
                if (!string.IsNullOrEmpty(compName))
                {
                    var tempdict = new Dictionary <string, string>();
                    tempdict.Add("reqmachine", compName);
                    machine = compName.ToUpper();
                    CookieUtility.SetCookie(this, tempdict);
                } //end if
                vm = LinkVM.RetrieveLinks();
            }     //end
            else
            {
                vm      = RetrieveAllLinks(ckdict["reqmachine"]);
                machine = ckdict["reqmachine"].ToUpper();
            }


            var validlink = string.Empty;

            foreach (var item in vm)
            {
                if (string.Compare(linkname, item.LinkName) == 0)
                {
                    validlink = item.Link;
                    if (!string.IsNullOrEmpty(machine))
                    {
                        MachineLink.UpdateFrequence(item.LinkName, item.Link, item.Logo, item.Comment, machine);
                    }
                    break;
                }
            }

            if (!string.IsNullOrEmpty(validlink))
            {
                //var logonnames = Request.LogonUserIdentity.Name;
                //if (!string.IsNullOrEmpty(logonnames))
                //{
                //    var splitnames = logonnames.Split(new string[] { "/", "\\" }, StringSplitOptions.RemoveEmptyEntries);
                //    ViewBag.logonname = splitnames[splitnames.Length - 1];
                //    LinkVM.UpdateSmartLinkLog(ViewBag.logonname,machine, validlink);
                //}

                ViewBag.logonname = machine;
                var mudict = MachineUserMap.RetrieveUserMap(machine);
                if (mudict.ContainsKey(machine))
                {
                    ViewBag.logonname = mudict[machine];
                    LinkVM.UpdateSmartLinkLog(ViewBag.logonname, machine, validlink);
                }


                if (validlink.Contains("wux-engsys01"))
                {
                    var now       = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    var timestamp = now + "_joke";
                    using (MD5 md5Hash = MD5.Create())
                    {
                        var smartkey1 = GetMd5Hash(md5Hash, timestamp) + "::" + now;
                        var smartkey2 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(smartkey1));
                        var smartkey  = HttpUtility.UrlEncode(smartkey2);
                        return(Redirect(validlink + "?smartkey=" + smartkey));
                    }
                }
                else
                {
                    return(Redirect(validlink));
                }
            }
            else
            {
                return(RedirectToAction("All", "SmartLinks"));
            }
        }