public ActionResult MoveInWaitlist(string clientID, string direction, MoveInWaitlistViewModel vm)
        {
            string sql = null;
            // Get the logged in Site ID from the session
            int?SiteID = Session["SiteID"] as int?;

            // if there is none, they can't do anything so redirect to the login page
            if (!SiteID.HasValue)
            {
                return(RedirectToAction("Login", "Account"));
            }

            foreach (Waitlist entry in vm.WaitlistList)
            {
                sql = String.Format("UPDATE waitlist SET Ranking = {0} WHERE ClientID = {1} AND SiteID = {2}", entry.Ranking, entry.ClientID, vm.SiteID);
                SqlHelper.ExecuteNonQuery(sql);
            }

            vm.StatusMessage = "Waitlist successfully updated";
            return(View(vm));
        }
        public ActionResult MoveInWaitlist(string clientID, string direction)
        {
            // Get the logged in Site ID from the session
            int?SiteID = Session["SiteID"] as int?;

            // if there is none, they can't do anything so redirect to the login page
            if (!SiteID.HasValue)
            {
                return(RedirectToAction("Login", "Account"));
            }

            MoveInWaitlistViewModel vm = new MoveInWaitlistViewModel();

            vm.ClientID = int.Parse(clientID);
            vm.SiteID   = int.Parse(SiteID.ToString());

            // Get Client and ranking list for site's waitlist for later modification
            string sql = String.Format(
                "SELECT ClientID, Ranking " +
                "FROM waitlist WHERE SiteID = {0} ORDER BY RANKING ASC", vm.SiteID);

            // run the sql against the db
            List <object[]> result           = SqlHelper.ExecuteMultiSelect(sql, 2);
            List <Waitlist> current_Waitlist = GetWaitListFromQueryResponse(result);

            // Get ranking for selected client
            sql = String.Format("SELECT Ranking FROM waitlist WHERE ClientID = {0} AND SiteID = {1}", vm.ClientID, vm.SiteID);
            object result2 = SqlHelper.ExecuteScalar(sql);
            int    ranking = int.Parse(result2.ToString());

            int count = 0;

            // Shuffle around ranking based on direction that client is desired to go (up/down)
            foreach (Waitlist entry in current_Waitlist)
            {
                current_Waitlist[count].oldRanking = current_Waitlist[count].Ranking;
                if (direction == "up")
                {
                    if (entry.Ranking == ranking - 1)
                    {
                        current_Waitlist[count].Ranking += 1;
                    }
                    else if (entry.Ranking == ranking)
                    {
                        current_Waitlist[count].Ranking -= 1;
                    }
                }
                else if (direction == "down")
                {
                    if (entry.Ranking == ranking + 1)
                    {
                        current_Waitlist[count].Ranking -= 1;
                    }
                    else if (entry.Ranking == ranking)
                    {
                        current_Waitlist[count].Ranking += 1;
                    }
                }
                // Update to new ranking for every client
                sql = String.Format("UPDATE waitlist SET Ranking = {0} WHERE ClientID = {1} AND SiteID = {2}", entry.Ranking, entry.ClientID, vm.SiteID);
                SqlHelper.ExecuteNonQuery(sql);
                count += 1;
            }
            List <Waitlist> SortedList = current_Waitlist.OrderBy(o => o.Ranking).ToList();

            vm.WaitlistList = SortedList;


            return(View(vm));
        }