private readonly int DEFAULT_PAGE_SIZE = 40;// 100;
        public ActionResult Index(int? page)
        {
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
            string updated = nameValueCollection["u"];

            if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sww.ToString())
            {
                SiteMessage message = new SiteMessage();
                message.MessageType = SiteMessageType.Success;
                message.Message = "Something went wrong. Error sent to developers, please try again later.";
                this.AddMessage(message);
            }
            if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.re.ToString())
            {
                SiteMessage message = new SiteMessage();
                message.MessageType = SiteMessageType.Success;
                message.Message = "Successfully added the Review.";
                this.AddMessage(message);
            }

            var model = new SimpleModPager<StoreItemJson>();
            if (page == null)
                model.CurrentPage = 1;
            else
                model.CurrentPage = page.Value;
            model.NumberOfRecords = SiteCache.GetNumberOfItemsForSale();
            model.NumberOfPages = (int)Math.Ceiling((double)model.NumberOfRecords / DEFAULT_PAGE_SIZE);
            model.PageSize = DEFAULT_PAGE_SIZE;
            var output = FillStoreModel(model);
            return View(output);
        }
        public ActionResult NewLocation(string ownerType, string redirectto, string id)
        {
            Models.Location.NewLocation location = new Models.Location.NewLocation();
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sal.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Added New Location.";
                    this.AddMessage(message);
                }

                location.OwnerId = new Guid(id);
                location.OwnerType = ownerType;
                location.RedirectTo = redirectto;
                var countries = RDN.Library.Classes.Location.LocationFactory.GetCountries();
                location.Countries = new SelectList(countries, "CountryId", "Name");
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return View(location);
        }
 public ActionResult AddContact(string type)
 {
     try
     {
         ContactDisplayBasic con = new ContactDisplayBasic();
         con.ContactType = (ContactTypeEnum)Enum.Parse(typeof(ContactTypeEnum), type);
         var countries = RDN.Library.Classes.Location.LocationFactory.GetCountries();
         ViewBag.Countries = new SelectList(countries, "CountryId", "Name");
         ViewData["ContactTypeForOrg"] = con.ContactTypeForOrg.ToSelectList();
         NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
         string u = nameValueCollection["u"];
         if (u == SiteMessagesEnum.s.ToString())
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Success;
             message.Message = "Successfully Added New Contact.";
             this.AddMessage(message);
         }
         return View(con);
     }
     catch (Exception exception)
     {
         ErrorDatabaseManager.AddException(exception, exception.GetType());
     }
     return Redirect("~/?u=" + SiteMessagesEnum.sww);
 }
        public ActionResult ViewLists()
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "List information updated.";
                    this.AddMessage(message);

                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sac.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "New List Successfully Added.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.de.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Deleted.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.et.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Used.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.cl.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Closed.";
                    this.AddMessage(message);
                }
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                var league = MemberCache.GetLeagueOfMember(memId);
                if (league != null)
                    SetCulture(league.CultureSelected);


                var itemLists = RDN.Library.Classes.League.TaskList.TaskListDA.GetTaskList(league.LeagueId);
                return View(itemLists);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }

            return View();
        }
        public ActionResult Designation()
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Designation Saved.";
                    this.AddMessage(message);

                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sac.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "New Designation Successfully Added.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.de.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Designation Successfully Deleted.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.et.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Designation Successfully Filled.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.cl.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Designation Successfully Closed.";
                    this.AddMessage(message);
                }
                var leagueId = MemberCache.GetLeagueIdOfMember();

                var designationLists = RDN.Library.Classes.League.Organization.GetDesignationList(leagueId);
                return View(designationLists);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }

            return View();
        }
        public ActionResult MerchantSettings()
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sced.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Error;
                    message.Message = "You did not Connect to Stripe. In order to Accept Customer Credit Cards, you should connect to Stripe.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sca.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Stripe Connected Successfully.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sus.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Updated Settings Successfully.";
                    this.AddMessage(message);
                }

                MerchantGateway mg = new MerchantGateway();
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                var merchant = mg.GetMerchantSettings(memId);
                string stripe = "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=" + ServerConfig.STRIPE_CONNECT_LIVE_KEY + "&scope=read_write&state=" + StripeStateReturnCodeEnum.merchant + "-" + merchant.PrivateManagerId.ToString().Replace("-", "");
                
                string u = nameValueCollection["return"];
                if (!String.IsNullOrEmpty(u))
                {
                    merchant.ReturnUrl = u;
                }

                ViewBag.StripeUrl = stripe;
                return View(merchant);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
 protected void AddMessage(SiteMessage message)
 {
     if (TempData.ContainsKey("Messages"))
     {
         var messages = (List<SiteMessage>)TempData["Messages"];
         messages.Add(message);
         TempData["Messages"] = messages;
     }
     else
     {
         var messages = new List<SiteMessage>();
         messages.Add(message);
         TempData["Messages"] = messages;
     }
 }
        //
        // GET: /Games/

        public ActionResult Index()
        {
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
            string updated = nameValueCollection["u"];

            if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.dex.ToString())
            {
                SiteMessage message = new SiteMessage();
                message.MessageType = SiteMessageType.Info;
                message.Message = "Couldn't Find Game.  Was It Published?";
                this.AddMessage(message);
            }
            var games = PublicSiteCache.GetPastGames();

            return View(games);
        }
 public ActionResult ViewTournament(string pid, string id)
 {
     try
     {
         NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
         string u = nameValueCollection["u"];
         if (u == SiteMessagesEnum.s.ToString())
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Success;
             message.Message = "Successfully Updated Tournament.";
             this.AddMessage(message);
         }
         if (u == SiteMessagesEnum.sup.ToString())
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Success;
             message.Message = "Successfully Updated Logo.";
             this.AddMessage(message);
         }
         Guid memId = RDN.Library.Classes.Account.User.GetMemberId();
         var tourny = Tournament.GetTournamentToManage(new Guid(id), new Guid(pid));
         Paywall pw = new Paywall();
         var pws = pw.GetPaywalls(memId);
         Dictionary<int, string> countries = LocationFactory.GetCountriesDictionary();
         var counTemp = countries.Select(item => new SelectListItem { Text = item.Value, Value = item.Key.ToString() }).ToList();
         //ViewData["TournamentClass"] = tourny.TournamentClass.ToSelectListDropDown();
         //var list =    Enum.GetValues(typeof(TournamentTypeEnum)).Cast<TournamentTypeEnum>().ToList();
         MerchantGateway mg = new MerchantGateway();
         tourny.AvailableShops = mg.GetPublicMerchants();
         ViewBag.Countries = new SelectList(counTemp, "Value", "Text", tourny.CountryId);
         ViewBag.PayWalls = new SelectList(pws.Paywalls, "PaywallId", "DescriptionOfPaywall", tourny.PaywallId);
         return View(tourny);
     }
     catch (Exception exception)
     {
         ErrorDatabaseManager.AddException(exception, exception.GetType());
     }
     return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
 }
        public ActionResult PaywallOrder(Guid privId, Guid storeId, Guid invoiceId)
        {
            DisplayInvoice invoice = null;
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Updated.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.ro.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Refunded Order.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sww.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Error;
                    message.Message = "Order Not Refunded. Error Sent to Developers.";
                    this.AddMessage(message);
                }

                var sg = new Paywall();
                invoice = sg.GetInvoiceForManager(storeId, privId, invoiceId);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return View(invoice);
        }
        public ActionResult LeagueBilling(string leagueId)
        {
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
            string updated = nameValueCollection["u"];

            if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.pp.ToString())
            {
                SiteMessage message = new SiteMessage();
                message.MessageType = SiteMessageType.Error;
                message.Message = "Those features require a subscription to RDNation. Please subscribe to Enable those features.";
                this.AddMessage(message);
            }
            else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sc.ToString())
            {
                SiteMessage message = new SiteMessage();
                message.MessageType = SiteMessageType.Info;
                message.Message = "Your subscription has successfully been canceled.";
                this.AddMessage(message);
            }
            var bi = RDN.Library.Classes.Billing.Classes.LeagueBilling.GetCurrentBillingStatus(new Guid(leagueId));

            return View(bi);
        }
        public ActionResult EditContact(string type, Guid contactId)
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string u = nameValueCollection["u"];
                if (u == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Edited Contact.";
                    this.AddMessage(message);
                }

                Dictionary<int, string> countries = RDN.Library.Classes.Location.LocationFactory.GetCountriesDictionary();
                var counTemp = countries.Select(item => new SelectListItem { Text = item.Value, Value = item.Key.ToString() }).ToList();

                if (type == ContactTypeEnum.league.ToString())
                {
                    var memId = RDN.Library.Classes.Account.User.GetMemberId();
                    var league = MemberCache.GetLeagueOfMember(memId);
                    ContactDisplayBasic con = league.Contacts.Where(x => x.ContactId == contactId).FirstOrDefault();
                    ViewBag.Countries = new SelectList(counTemp, "Value", "Text", con.CountryId);
                    ViewData["ContactTypeForOrg"] = con.ContactTypeForOrg.ToSelectList();

                    return View(con);
                }


            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect("~/?u=" + SiteMessagesEnum.sww);
        }
        public ActionResult SubscriptionListDetails(long listId,string listName)
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "information updated.";
                    this.AddMessage(message);

                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sac.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Added.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.de.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Deleted.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.et.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Used.";
                    this.AddMessage(message);
                }
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.cl.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Closed.";
                    this.AddMessage(message);
                }
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                var league = MemberCache.GetLeagueOfMember(memId);
                if (league != null)
                    SetCulture(league.CultureSelected);

                var subscriptionData = RDN.Library.Classes.EmailServer.SubscriptionFactory.GetData(listId);
                ViewBag.SubscriptionType = subscriptionData.SubscriberTypeEnum;
                ViewBag.listId = listId;
                ViewBag.Name = listName;
                var itemLists = RDN.Library.Classes.EmailServer.SubscriptionFactory.GetSubscriberDetails(listId);
               
                return View(itemLists);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }

            return View();

        }
[RequireHttps] //apply to all actions in controller
#endif
        public ActionResult OrgChart(long id,string leagueId)
        {
            try
            { 
                    NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                    string updated = nameValueCollection["u"];

                    if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.s.ToString())
                    {
                        SiteMessage message = new SiteMessage();
                        message.MessageType = SiteMessageType.Info;
                        message.Message = "chart Saved.";
                        this.AddMessage(message);

                    }
                    if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sac.ToString())
                    {
                        SiteMessage message = new SiteMessage();
                        message.MessageType = SiteMessageType.Info;
                        message.Message = "New position Successfully Added.";
                        this.AddMessage(message);
                    }
                    if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.de.ToString())
                    {
                        SiteMessage message = new SiteMessage();
                        message.MessageType = SiteMessageType.Info;
                        message.Message = "Position Successfully Deleted.";
                        this.AddMessage(message);
                    }
                    if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.et.ToString())
                    {
                        SiteMessage message = new SiteMessage();
                        message.MessageType = SiteMessageType.Info;
                        message.Message = "Position Successfully Filled.";
                        this.AddMessage(message);
                    }
                    if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.cl.ToString())
                    {
                        SiteMessage message = new SiteMessage();
                        message.MessageType = SiteMessageType.Info;
                        message.Message = "Position Successfully Closed.";
                        this.AddMessage(message);
                    }
                    
                //var leagueId = MemberCache.GetLeagueIdOfMember();
                var Designations = RDN.Library.Classes.League.Organization.GetDesignationList(new Guid(leagueId));
                var list = (from a in Designations
                            select new SelectListItem
                            {
                                Text = a.DesigTitle,
                                Value = ((int)a.DesignationId).ToString()
                            });

                ViewBag.DesignagtionList = new SelectList(list, "Value", "Text");  //Designation

                //Member List for Dropdown 
                var Members = RDN.Library.Classes.League.Organization.MemberList(new Guid(leagueId));
                var Memberlist = (from a in Members
                                  select new SelectListItem
                                  {
                                      Text = a.DerbyName,
                                      Value = a.MemberId.ToString()
                                  });
                ViewBag.MemberList = new SelectList(Memberlist, "Value", "Text");
                 
                ViewBag.OrganizationId = id;

            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }

            return View();
        }
        public ActionResult AddSkaterClass(LeagueMemberClass memClass)
        {
            LeagueMemberClass.CreateNewClass(memClass.NameOfClass);
            //SiteCache.UpdateLeagueMemberClasses();
            NameValueCollection nameValueCollection;
            if (Request.UrlReferrer != null)
                nameValueCollection = HttpUtility.ParseQueryString(Request.UrlReferrer.Query);
            else
                nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
            string returnUrl = nameValueCollection["returnUrl"];
            SiteMessage message = new SiteMessage();
            message.MessageType = SiteMessageType.Success;
            message.Message = "Successfully Added New Class.";
            this.AddMessage(message);
            memClass.NameOfClass = "";

            // if a create another was clicked instead of just submitting the event.
            if (Request.Form["addAnother"] != null)
                return View(memClass);

            if (!String.IsNullOrEmpty(returnUrl))
                return Redirect(returnUrl);

            return View(memClass);
        }
 private static string GenerateSuccessMessage(SiteMessage message)
 {
     var output = new StringBuilder();
     output.Append("<div class=\"messages\"><span class=\"mNotify\">Success: </span>");
     output.Append(message.Message + " " + (string.IsNullOrEmpty(message.Link) ? string.Empty : string.Format("<a href=\"{0}\">{1}</a>", message.Link, message.LinkText)));
     output.Append("</div>");
     return output.ToString();
 }
        public ActionResult Index()
        {
            try
            {
                ViewData.Add("tumblr", getBlog());

                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.na.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "You do not have access to that page. Please contact [email protected] if you think this is an error.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sww.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Something went wrong, the error was sent to the developers, please try again later.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.clus.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Error;
                    message.Message = "Changing to that league was unsuccessful.  Are you a member of that league?";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.cls.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Changing leagues was successful.";
                    this.AddMessage(message);
                }
                var memId = RDN.Library.Classes.Account.User.GetMemberId();

                var member = MemberCache.GetMemberDisplay(memId);
                //removes the user and logs them out.
                //because if member is null, they seem like they don't have an account.
                if (member == null)
                {
                    ErrorDatabaseManager.AddException(new Exception("Member Was Null"), GetType(), additionalInformation: memId.ToString());
                    return Redirect("~/account/logout");
                }
                if (member.DefaultPositionType == DefaultPositionEnum.The_Owner_of_a_Federation &&
                    !MemberCache.IsOwnerOfFederation(memId))
                {
                    SiteMessage message = new SiteMessage();
                    message.Link = UrlHelper.GenerateContentUrl("~/Federation/Setup", HttpContext);
                    message.MessageType = SiteMessageType.Info;
                    message.LinkText = "Please Setup Your Federation";
                    this.AddMessage(message);
                }
                else if (member.DefaultPositionType == DefaultPositionEnum.The_Owner_of_a_Team_League &&
           MemberCache.GetLeagueIdOfMember(memId) == new Guid())
                {
                    SiteMessage message = new SiteMessage();
                    message.Link = UrlHelper.GenerateContentUrl("~/League/Setup", HttpContext);
                    message.MessageType = SiteMessageType.Info;
                    message.LinkText = "Please Setup Your League";
                    this.AddMessage(message);
                }
                HomeModel model = new HomeModel();
                bool isAttendanceManagerOrBetter = MemberCache.IsAttendanceManagerOrBetterOfLeague(member.MemberId);
                model.League = MemberCache.GetLeagueOfMember(memId);
                if (model.League != null)
                {

                    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(model.League.CultureSelected);

                    var calId = MemberCache.GetCalendarIdForMemberLeague(memId);
                    model.Calendar = CalendarFactory.GetCalendarEvents(calId, 5, member.MemberId, isAttendanceManagerOrBetter);
                    model.Calendar.Events.AddRange(MemberCache.GetMemberBirthdays(memId, DateTime.UtcNow, DateTime.UtcNow.AddDays(2)));
                    model.Calendar.Events.AddRange(MemberCache.GetMemberStartDates(memId, DateTime.UtcNow, DateTime.UtcNow.AddDays(2)));
                    model.Calendar.OwnerEntity = CalendarOwnerEntityEnum.league;

                    model.Polls = VotingFactory.GetPollsNotVotedOn(model.League.LeagueId, memId);
                    model.ForumId = MemberCache.GetForumIdForMemberLeague(memId);
                    model.Forum = Forum.GetForumTopicsJsonUnread(model.ForumId, 0, memId, 10);
                }
                return View(model);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return View();
        }
        public ActionResult BracketsForTournament(string pid, string id)
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string u = nameValueCollection["u"];
                if (u == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Updated Tournament.";
                    this.AddMessage(message);
                }
                if (u == SiteMessagesEnum.sup.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Updated Logo.";
                    this.AddMessage(message);
                }
                Guid memId = RDN.Library.Classes.Account.User.GetMemberId();
                var tourny = Tournament.GetTournamentToManage(new Guid(id), new Guid(pid));



                return View(tourny);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult DuesManagementByMember(string type, string id)
        {
            try
            {
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sww.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Something went wrong. Error sent to developers, please try again later.";
                    this.AddMessage(message);
                }
                if (!MemberCache.IsMemberApartOfLeague(memId, new Guid(id)))
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                var league = MemberCache.GetLeagueOfMember(memId);
                if (league != null)
                    SetCulture(league.CultureSelected);

                DuesPortableModel dues = new DuesPortableModel();
                dues.LeagueOwnerId = new Guid(id);
                dues.OwnerEntity = type;
                var dues2 = DuesFactory.GetDuesObject(new Guid(id), memId);
                if (dues2.DuesId != new Guid())
                    dues = dues2;
                return View(dues);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));

        }
        public ActionResult TournamentHome(string id, string name)
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string u = nameValueCollection["u"];
                if (u == SiteMessagesEnum.sww.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Error;
                    message.Message = "Something Went Wrong, Problem Sent to the Developers.";
                    this.AddMessage(message);
                }
                var tourny = Tournament.GetPublicTournament(new Guid(id));

                if (!String.IsNullOrEmpty(tourny.Paywall.StripePublishableKey))
                    tourny.StripeKey = "Stripe.setPublishableKey('" + tourny.Paywall.StripePublishableKey + "');";
                else
                    tourny.StripeKey = "Stripe.setPublishableKey('" + ServerConfig.STRIPE_LIVE_KEY + "');";
                ViewData["merchantId"] = tourny.SelectedShop;
                tourny.PensAbbre = (from Scoreboard.Library.Static.Enums.PenaltiesEnum d in Enum.GetValues(typeof(Scoreboard.Library.Static.Enums.PenaltiesEnum))
                                    select new { ID = (int)d, Name = RDN.Utilities.Enums.EnumExt.ToFreindlyName(d), Abbre = Scoreboard.Library.ViewModel.PenaltyViewModel.ToAbbreviation(d) });


                return View(tourny);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }

            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult MessageHome(string type, string idOfGroup)
        {
            RDN.Portable.Classes.Controls.Message.MessageModel mess = new Portable.Classes.Controls.Message.MessageModel();

            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.ms.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Message Sent";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.mns.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Message Not Sent, An error occurred and is being looked into.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.na.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "You do not have access to that page.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.de.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "That message seems to been removed by the owner.";
                    this.AddMessage(message);
                }
                mess = Messages.GetMessagesForOwner((GroupOwnerTypeEnum)Enum.Parse(typeof(GroupOwnerTypeEnum), type.ToLower()), new Guid(idOfGroup), 0, 50);
                MemberCache.ResetMessageCountCache(new Guid(idOfGroup));
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType(), additionalInformation: "ownerID:" + idOfGroup + "/type:" + type);
            }
            return View(mess);
        }
        public ActionResult Polls(string leagueId)
        {
            try
            {
                var mem = RDN.Library.Classes.Account.User.GetMemberId();
                var league = MemberCache.GetLeagueOfMember(mem);
                if (new Guid(leagueId) != league.LeagueId)
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                var polls = VotingFactory.GetPollsV2(new Guid(leagueId), mem);

                polls.Polls = polls.Polls.OrderByDescending(x => x.Created).ToList();
                polls.LeagueName = league.Name;

                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];
                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sv.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "You successfully voted!";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.sag.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "You added a poll.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.pc.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Closed The Poll.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.de.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully Deleted The Poll.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.cl.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Poll is Closed, no more votes are being recorded.";
                    this.AddMessage(message);
                }
                else if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.na.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "You don't have access to that particular poll.";
                    this.AddMessage(message);
                }

                return View(polls);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
 public ActionResult Paywalls()
 {
     try
     {
         NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
         string u = nameValueCollection["u"];
         if (u == SiteMessagesEnum.s.ToString())
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Success;
             message.Message = "Successfully Added New Paywall.";
             this.AddMessage(message);
         }
         if (u == SiteMessagesEnum.su.ToString())
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Success;
             message.Message = "Successfully Updated Paywall.";
             this.AddMessage(message);
         }
         if (u == SiteMessagesEnum.sus.ToString())
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Success;
             message.Message = "Successfully Updated Settings.";
             this.AddMessage(message);
         }
         //DisplayPaywall pw = new DisplayPaywall();
         Paywall pw = new Paywall();
         Guid ownerId = RDN.Library.Classes.Account.User.GetMemberId();
         DisplayPaywall dpw = pw.GetPaywalls(ownerId);
         dpw.InternalReference = ownerId;
         if (!dpw.AcceptPaymentsViaPaypal && !dpw.AcceptPaymentsViaStripe)
         {
             SiteMessage message = new SiteMessage();
             message.MessageType = SiteMessageType.Info;
             message.Message = "Please setup a payment processor under Merchant Settings.";
             this.AddMessage(message);
         }
         dpw.ReturnUrl = Url.Encode(Request.RawUrl);
         return View(dpw);
     }
     catch (Exception exception)
     {
         ErrorDatabaseManager.AddException(exception, exception.GetType());
     }
     return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
 }
        // GET: /Game/
        public ActionResult Index(string id, string gameName, string team1, string team2)
        {
            try
            {
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string u = nameValueCollection["u"];
                if (u == SiteMessagesEnum.sww.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Error;
                    message.Message = "Something Went Wrong, Problem Sent to the Developers.";
                    this.AddMessage(message);
                }


                GameOutModel game = new GameOutModel();
                game.Game = GameServerViewModel.GetGameFromCache(new Guid(id));
                Paywall wall = new Paywall();
                game.Paywall = wall.GetPaywall(game.Game.PaywallId);
                if (game.Paywall == null)
                    game.Paywall = new Paywall();

                ViewData["merchantId"] = game.Game.SelectedShop;
                if (!String.IsNullOrEmpty(game.Paywall.StripePublishableKey))
                    game.StripeKey = "Stripe.setPublishableKey('" + game.Paywall.StripePublishableKey + "');";
                else
                    game.StripeKey = "Stripe.setPublishableKey('" + ServerConfig.STRIPE_LIVE_KEY + "');";
                if (game != null)
                    return View(game);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/roller-derby-games?u=" + SiteMessagesEnum.dex));
        }
        public ActionResult DuesForMember(string leagueId, string memberId)
        {
            try
            {
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                //member must belong to correct league.
                if (!MemberCache.IsMemberApartOfLeague(new Guid(memberId), new Guid(leagueId)))
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));
                //must be a manager or the actual person to access this page.
                if (!MemberCache.IsManagerOrBetterOfLeague(memId) && memId != new Guid(memberId))
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.ppldnc.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Error;
                    message.Message = "League hasn't yet verified their PayPal Account. They have been notified. Please pay another way until they have verified their account with PayPal.";
                    this.AddMessage(message);
                }

                var league = MemberCache.GetLeagueOfMember(memId);
                if (league != null)
                    SetCulture(league.CultureSelected);

                var dues = DuesFactory.GetDuesObject(new Guid(leagueId), new Guid(memberId));
                var mem = MemberCache.GetMemberDisplay(new Guid(memberId));
                dues.CurrentMemberDerbyName = mem.DerbyName;
                dues.CurrentMemberId = mem.MemberId;
                return View(dues);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));

        }
        public ActionResult TournamentHome(Tournament tourny)
        {
            try
            {
                if (!String.IsNullOrEmpty(tourny.Paywall.PasswordForPaywall))
                    tourny.Paywall.PasswordForPaywall = tourny.Paywall.PasswordForPaywall.Trim();
                var tourn = Tournament.GetPublicTournament(tourny.Id);
                bool isPaid = Tournament.CheckTournamentPaywallIsPaid(tourny.Id, tourny.Paywall.PasswordForPaywall);
                tourn.Paywall.IsPaid = isPaid;

                bool isCurrentlyViewing = PaywallViewers.Instance.IsCurrentlyViewingPaywall(tourny.Paywall.PaywallId, tourny.Paywall.PasswordForPaywall);
                if (isCurrentlyViewing)
                {
                    tourn.Paywall.IsPaid = false;
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Warning;
                    message.Message = "You are currently viewing this from another device. You can only view this from one device at a time.";
                    this.AddMessage(message);
                }


                tourny.StripeKey = "Stripe.setPublishableKey('" + ServerConfig.STRIPE_LIVE_KEY + "');";
                return View(tourn);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult DuesSettings(string type, string id, string duesId)
        {
            DuesModel dues = new DuesModel();
            try
            {
                DuesPortableModel due = DuesFactory.GetDuesSettings(new Guid(id), new Guid(duesId));

                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string u = nameValueCollection["u"];

                if (u == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Updated.";
                    this.AddMessage(message);
                }

                dues.DayOfMonthToCollectDefault = due.DayOfMonthToCollectDefault;
                dues.DaysBeforeDeadlineToNotifyDefault = due.DaysBeforeDeadlineToNotifyDefault;
                dues.DuesCost = due.DuesCost;
                dues.DuesCostDisplay = due.DuesCostDisplay;
                dues.DuesFees = due.DuesFees;
                dues.DuesId = due.DuesId;
                dues.LeagueOwnerId = due.LeagueOwnerId;
                dues.LeagueOwnerName = due.LeagueOwnerName;
                dues.OwnerEntity = due.OwnerEntity;
                dues.DuesEmailDisplayText = due.DuesEmailText;
                dues.PayPalEmailAddress = due.PayPalEmailAddress;
                dues.WhoPaysProcessorFeesEnum = due.WhoPaysProcessorFeesEnum;
                dues.AcceptPaymentsOnline = due.AcceptPaymentsOnline;
                dues.LockDownManagementToManagersOnly = due.LockDownManagementToManagersOnly;
                dues.Currency = due.Currency;

                ViewData["whoPaysFeesSelectList"] = WhoPaysProcessorFeesEnum.Sender.ToSelectList();
                dues.ProcessorFeesTotal = (due.DuesCost * .029 + .50).ToString("N2");
                dues.CurrencyList = new SelectList(SiteCache.GetCurrencyExchanges(), "CurrencyAbbrName", "CurrencyNameDisplay", "USD");

                ViewBag.IsSuccessful = false;
                return View(dues);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));

        }
        public ActionResult DuesClassification(string type, string id, string duesManagementId)
        {
            try
            {
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string u = nameValueCollection["u"];

                if (u == SiteMessagesEnum.s.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Added Classification.";
                    this.AddMessage(message);
                }
                else if (u == SiteMessagesEnum.su.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Updated Classification.";
                    this.AddMessage(message);
                }
                else if (u == SiteMessagesEnum.de.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Successfully Deleted Classification.";
                    this.AddMessage(message);
                }
                else if (u == SiteMessagesEnum.sww.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Success;
                    message.Message = "Something went wrong. Please contact [email protected] if this continues not to work.";
                    this.AddMessage(message);
                }
                var classification = FeeClassificationFactory.PullClassifications(new Guid(duesManagementId), memId);


                return View(classification);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult Index(GameOutModel crap)
        {
            try
            {
                if (!String.IsNullOrEmpty(crap.Paywall.PasswordForPaywall))
                    crap.Paywall.PasswordForPaywall = crap.Paywall.PasswordForPaywall.Trim();
                GameOutModel game = new GameOutModel();
                game.Game = GameServerViewModel.GetGameFromCache(crap.Game.GameId);
                Paywall wall = new Paywall();
                game.Paywall = wall.GetPaywall(game.Game.PaywallId);
                if (game.Paywall == null)
                    game.Paywall = new Paywall();

                bool isPaid = GameServerViewModel.CheckGamePaywallIsPaid(game.Game.GameId, crap.Paywall.PasswordForPaywall);
                game.Paywall.IsPaid = isPaid;
                if (PaywallViewers.Instance.Paywalls == null)
                    PaywallViewers.Instance.Paywalls = new List<Paywall>();
                bool isCurrentlyViewing = PaywallViewers.Instance.IsCurrentlyViewingPaywall(crap.Paywall.PaywallId, crap.Paywall.PasswordForPaywall);
                if (isCurrentlyViewing)
                {
                    game.Paywall.IsPaid = false;
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Warning;
                    message.Message = "You are currently viewing this from another device. You can only view this from one device at a time.";
                    this.AddMessage(message);
                }

                ViewData["merchantId"] = game.Game.SelectedShop;
                game.StripeKey = "Stripe.setPublishableKey('" + ServerConfig.STRIPE_LIVE_KEY + "');";
                if (game != null)
                    return View(game);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult PollEditAdmin(string leagueId, string pollid)
        {
            try
            {
                var mem = RDN.Library.Classes.Account.User.GetMemberId();
                var league = MemberCache.GetLeagueOfMember(mem);
                if (new Guid(leagueId) != league.LeagueId)
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                var polls = VotingFactory.GetPollV2(new Guid(leagueId), Convert.ToInt64(pollid), mem);

                NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(Request.Url.Query);
                string updated = nameValueCollection["u"];

                if (!String.IsNullOrEmpty(updated) && updated == SiteMessagesEnum.su.ToString())
                {
                    SiteMessage message = new SiteMessage();
                    message.MessageType = SiteMessageType.Info;
                    message.Message = "Successfully updated the poll.";
                    this.AddMessage(message);
                }

                return View(polls);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }