private GenericSingleModel<SimpleModPager<SkaterJson>> FillMembersModel(SimpleModPager<SkaterJson> model)
        {
            for (var i = 1; i <= model.NumberOfPages; i++)
                model.Pages.Add(new SelectListItem
                {
                    Text = i.ToString(),
                    Value = i.ToString(),
                    Selected = i == model.CurrentPage
                });
            var output = new GenericSingleModel<SimpleModPager<SkaterJson>> { Model = model };

            output.Model.Items = RDN.Library.Classes.Account.User.GetAllPublicMembers((model.CurrentPage - 1) * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE);
            return output;
        }
        private GenericSingleModel<SimpleModPager<FederationDisplay>> FillFederationModel(SimpleModPager<FederationDisplay> model)
        {
            for (var i = 1; i <= model.NumberOfPages; i++)
                model.Pages.Add(new SelectListItem
                {
                    Text = i.ToString(),
                    Value = i.ToString(),
                    Selected = i == model.CurrentPage
                });
            var output = new GenericSingleModel<SimpleModPager<FederationDisplay>> { Model = model };

            output.Model.Items = RDN.Library.Classes.Federation.Federation.GetFederationsForDisplay();
            return output;
        }
        /// <summary>
        /// converts the large items list into a single model to display on the view.
        /// </summary>
        /// <param name="model"></param>
        /// <param name="federationId"></param>
        /// <returns></returns>
        private GenericSingleModel<SimpleModPager<StoreItemJson>> FillStoreModel(SimpleModPager<StoreItemJson> model)
        {
            for (var i = 1; i <= model.NumberOfPages; i++)
                model.Pages.Add(new SelectListItem
                {
                    Text = i.ToString(),
                    Value = i.ToString(),
                    Selected = i == model.CurrentPage
                });
            var output = new GenericSingleModel<SimpleModPager<StoreItemJson>> { Model = model };

            output.Model.Items = SiteCache.GetAllPublishedItems(DEFAULT_PAGE_SIZE, (model.CurrentPage - 1)); //* DEFAULT_PAGE_SIZE);
            if (output.Model.Items == null)
                output.Model.Items = new List<StoreItemJson>();
            return output;
        }
        public ActionResult VerifyEmail(VerifyEmail model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    List<SiteMessage> result = VerifyEmailErrors(Library.Classes.Account.User.VerifyEmailVerification(
                        string.IsNullOrEmpty(model.EmailVerificationCode)
                            ? string.Empty
                            : model.EmailVerificationCode.Trim(), Request.UserHostAddress
                                                                     ));

                    if (result.Count > 0)
                    {
                        AddMessages(result);
                        var output = new GenericSingleModel<VerifyEmail>(model);
                        return View(output);
                    }

                    if (Session["IsVerified"] == null)
                        Session.Add("IsVerified", true);
                    else
                        Session["IsVerified"] = true;
                    AddMessage(new SiteMessage
                                   {
                                       Message = "Your email address has been verified.",
                                       MessageType = SiteMessageType.Success
                                   });

                    return RedirectToAction("Index", "Home");
                }
                AddMessage(new SiteMessage { Message = "An unknown error occured.", MessageType = SiteMessageType.Error });
                return RedirectToAction("VerifyEmail");

            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
                return RedirectToAction("VerifyEmail");
            }
        }
        public ActionResult VerifyEmail()
        {

            var output = new GenericSingleModel<VerifyEmail>(new VerifyEmail());
            return View(output);
        }
 /// <summary>
 /// converts the large members list into a single model to display on the view.
 /// </summary>
 /// <param name="model"></param>
 /// <param name="federationId"></param>
 /// <returns></returns>
 private GenericSingleModel<SimpleModPager<MemberDisplay>> FillMembersModel(SimpleModPager<MemberDisplay> model, Guid leagueId, Guid memId, bool hasLeftLeague = false)
 {
     for (var i = 1; i <= model.NumberOfPages; i++)
         model.Pages.Add(new SelectListItem
         {
             Text = i.ToString(),
             Value = i.ToString(),
             Selected = i == model.CurrentPage
         });
     var output = new GenericSingleModel<SimpleModPager<MemberDisplay>> { Model = model };
     output.Model.Items = MemberCache.GetLeagueMembers(memId, leagueId, (model.CurrentPage - 1) * PAGE_SIZE, PAGE_SIZE, hasLeftLeague);
     return output;
 }
 /// <summary>
 /// fills out the unapproved federations.
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 private GenericSingleModel<SimpleModPager<Library.DataModels.Federation.Federation>> FillFederationModel(SimpleModPager<Library.DataModels.Federation.Federation> model)
 {
     for (var i = 1; i <= model.NumberOfPages; i++)
         model.Pages.Add(new SelectListItem
         {
             Text = i.ToString(),
             Value = i.ToString(),
             Selected = i == model.CurrentPage
         });
     var output = new GenericSingleModel<SimpleModPager<Library.DataModels.Federation.Federation>> { Model = model };
     output.Model.Items = Federation.GetAllUnApprovedFederations((model.CurrentPage - 1) * 20, 20);
     return output;
 }
        public ActionResult AddLeagueContact(AddLeagueContact model)
        {
            var result = Library.Classes.Admin.Admin.Admin.CreateContactLeague(model.Name, model.AssociationId, model.LeagueTypeId,
                                                                  model.CountryId, model.State, model.City,
                                                                  model.HomePage, model.Facebook, model.PrimaryEmails,
                                                                  model.Emails, model.Comments);
            if (result == CreateLeagueContactEnum.Saved)
            {
                model.Name = string.Empty;
                model.State = string.Empty;
                model.City = string.Empty;
                model.HomePage = string.Empty;
                model.Facebook = string.Empty;
                model.PrimaryEmails = string.Empty;
                model.Emails = string.Empty;
                model.Comments = string.Empty;

                AddMessage(new SiteMessage { MessageType = SiteMessageType.Success, Message = "League added." });
            }
            else if (result == CreateLeagueContactEnum.Error)
                AddMessage(new SiteMessage { MessageType = SiteMessageType.Error, Message = "An error occured." });
            else
                AddMessage(new SiteMessage { MessageType = SiteMessageType.Error, Message = "An incorrect email was detected in one of the email boxes. Remember, one valid email per line." });

            FillAddLeagueContactModel(ref model);
            var output = new GenericSingleModel<AddLeagueContact>(model);
            return View(output);
        }
 public ActionResult CreateTeam()
 {
     try
     {
         var output = new GenericSingleModel<CreateTeam>(new CreateTeam());
         return View(output);
     }
     catch (Exception exception)
     {
         ErrorDatabaseManager.AddException(exception, exception.GetType());
     }
     return View();
 }
        public ActionResult CreateLeague(CreateLeague model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    List<SiteMessage> result = CreateLeagueErrors(Library.Classes.League.LeagueFactory.CreateLeague(
                        model.Federation,
                        string.IsNullOrEmpty(model.LeagueName) ? string.Empty : model.LeagueName.Trim(),
                        string.IsNullOrEmpty(model.ContactPhone) ? string.Empty : model.ContactPhone.Trim(),
                        string.IsNullOrEmpty(model.ContactEmail) ? string.Empty : model.ContactEmail.Trim(),
                        string.IsNullOrEmpty(model.AdditionalInformation)
                            ? string.Empty
                            : model.AdditionalInformation.Trim(),
                        model.Country,
                        string.IsNullOrEmpty(model.State) ? string.Empty : model.State.Trim(),
                        string.IsNullOrEmpty(model.City) ? string.Empty : model.City.Trim(),
                                                                    0));

                    if (result.Count > 0)
                    {
                        AddMessages(result);
                        Dictionary<Guid, string> federations = Federation.GetFederations();
                        model.Federations =
                            federations.Select(item => new SelectListItem { Text = item.Value, Value = item.Key.ToString() }).
                                ToList();

                        Dictionary<int, string> countries = LocationFactory.GetCountriesDictionary();
                        model.Countries =
                            countries.Select(item => new SelectListItem { Text = item.Value, Value = item.Key.ToString() }).
                                ToList();

                        foreach (SelectListItem country in model.Countries)
                            country.Selected = country.Value.Equals(model.Country);

                        foreach (SelectListItem federation in model.Federations)
                            federation.Selected = federation.Value.Equals(model.Federation);

                        var output = new GenericSingleModel<CreateLeague>(model);
                        return View(output);
                    }

                    AddMessage(new SiteMessage
                                   {
                                       Message = "Your league creation request has been sent and will be reviewed shortly.",
                                       MessageType = SiteMessageType.Success
                                   });
                    return RedirectToAction("JoinLeague");
                }

                AddMessage(new SiteMessage { Message = "An unknown error occured.", MessageType = SiteMessageType.Error });

            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return RedirectToAction("CreateLeague");

        }
        /// <summary>
        /// converts the large league list into a single model to display on the view.
        /// </summary>
        /// <param name="model"></param>
        /// <param name="federationId"></param>
        /// <returns></returns>
        private GenericSingleModel<SimpleModPager<RDN.Portable.Classes.League.Classes.League>> FillLeagueModel(SimpleModPager<RDN.Portable.Classes.League.Classes.League> model, Guid federationId)
        {
            var output = new GenericSingleModel<SimpleModPager<RDN.Portable.Classes.League.Classes.League>> { Model = model };

            try
            {
                for (var i = 1; i <= model.NumberOfPages; i++)
                    model.Pages.Add(new SelectListItem
                    {
                        Text = i.ToString(),
                        Value = i.ToString(),
                        Selected = i == model.CurrentPage
                    });

                output.Model.Items = RDN.Library.Classes.League.LeagueFactory.GetLeaguesInFederation(federationId, (model.CurrentPage - 1) * PAGE_SIZE, PAGE_SIZE);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());

            }
            return output;

        }
        /// <summary>
        /// converts the large members list into a single model to display on the view.
        /// </summary>
        /// <param name="model"></param>
        /// <param name="federationId"></param>
        /// <returns></returns>
        private GenericSingleModel<SimpleModPager<MemberDisplayFederation>> FillMembersModel(SimpleModPager<MemberDisplayFederation> model, Guid federationId)
        {
            var output = new GenericSingleModel<SimpleModPager<MemberDisplayFederation>> { Model = model };

            try
            {
                for (var i = 1; i <= model.NumberOfPages; i++)
                    model.Pages.Add(new SelectListItem
                    {
                        Text = i.ToString(),
                        Value = i.ToString(),
                        Selected = i == model.CurrentPage
                    });

                output.Model.Items = FederationCache.GetMembersOfFederation(federationId, HttpContext.Cache).ToList();
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return output;
        }
 public ActionResult SendMassScoreboardEmails()
 {
     var output = new GenericSingleModel<MassEmail>(new MassEmail());
     return View(output);
 }
 private GenericSingleModel<SimplePager<ScoreboardFeedback>> FillFeedbackModel(SimplePager<ScoreboardFeedback> model)
 {
     for (var i = 1; i <= model.NumberOfPages; i++)
         model.Pages.Add(new SelectListItem
         {
             Text = i.ToString(),
             Value = i.ToString(),
             Selected = i == model.CurrentPage
         });
     var output = new GenericSingleModel<SimplePager<ScoreboardFeedback>> { Model = model };
     output.Model.Items = Library.ViewModel.ErrorServerViewModel.GetFeedbackItems((model.CurrentPage - 1) * 20, 20);
     return output;
 }
 private GenericSingleModel<SimplePager<Library.Classes.Error.Classes.Error>> FillErrorModel(SimplePager<Library.Classes.Error.Classes.Error> model)
 {
     for (var i = 1; i <= model.NumberOfPages; i++)
         model.Pages.Add(new SelectListItem
         {
             Text = i.ToString(),
             Value = i.ToString(),
             Selected = i == model.CurrentPage
         });
     var output = new GenericSingleModel<SimplePager<Library.Classes.Error.Classes.Error>> { Model = model };
     output.Model.Items = Library.Classes.Error.ErrorDatabaseManager.GetErrorObjects((model.CurrentPage - 1) * 20, 20);
     return output;
 }
 private GenericSingleModel<SimplePager<ContactLeague>> FillLeagueContacts(SimplePager<ContactLeague> model)
 {
     for (var i = 1; i <= model.NumberOfPages; i++)
         model.Pages.Add(new SelectListItem
         {
             Text = i.ToString(),
             Value = i.ToString(),
             Selected = i == model.CurrentPage
         });
     var output = new GenericSingleModel<SimplePager<ContactLeague>> { Model = model };
     output.Model.Items = Library.Classes.Admin.Admin.Admin.GetContactLeague((model.CurrentPage - 1) * 20, 20);
     return output;
 }
        public ActionResult JoinLeague()
        {

            var output = new GenericSingleModel<JoinLeague>(new JoinLeague());
            return View(output);
        }
        public ActionResult CreateLeague()
        {
            try
            {
                Dictionary<Guid, string> federations = Federation.GetFederations();
                Dictionary<int, string> countries = LocationFactory.GetCountriesDictionary();

                var output = new GenericSingleModel<CreateLeague>(new CreateLeague
                                                                      {
                                                                          Federations =
                                                                              federations.Select(
                                                                                  item =>
                                                                                  new SelectListItem
                                                                                      {
                                                                                          Text = item.Value,
                                                                                          Value = item.Key.ToString()
                                                                                      }).ToList(),
                                                                          Countries =
                                                                              countries.Select(
                                                                                  item =>
                                                                                  new SelectListItem
                                                                                      {
                                                                                          Text = item.Value,
                                                                                          Value = item.Key.ToString()
                                                                                      }).ToList()
                                                                      });
                return View(output);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return View();
        }
        private GenericSingleModel<SimpleModPager<Library.Classes.Game.Game>> FillGamesModelForPlayer(SimpleModPager<Library.Classes.Game.Game> model, Guid memberId)
        {
            var output = new GenericSingleModel<SimpleModPager<Library.Classes.Game.Game>> { Model = model };

            try
            {
                for (var i = 1; i <= model.NumberOfPages; i++)
                    model.Pages.Add(new SelectListItem
                    {
                        Text = i.ToString(),
                        Value = i.ToString(),
                        Selected = i == model.CurrentPage
                    });

                output.Model.Items = Game.GetGamesPlayedByMember(memberId, (model.CurrentPage - 1) * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return output;
        }
 public ActionResult ChangePassword()
 {
     var output = new GenericSingleModel<ChangePasswordModel>(new ChangePasswordModel());
     return View(output);
 }
        public ActionResult SendMassScoreboardEmails(MassEmail model)
        {
            var output = new GenericSingleModel<MassEmail>(model);
            bool result = false;
            try
            {
                //sends mass email to all leagues
                if (model.IsMassSendVerified)
                {
                    switch (model.MassEmailType)
                    {
                        case MassEmailEnum.AllEmailsToSendMontlyUpdatesTo:
                            result = Library.Classes.Admin.Admin.Admin.SendMassEmailsForMonthlyBroadcasts(model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllLeaguesWorldWide:
                            result = Library.Classes.Admin.Admin.Admin.SendMassScoreboardEmailsForLeaguesWorldWide(model.IsMassSendVerified, model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllScoreboardDownloadersAndFeedbackers:
                            result = Library.Classes.Admin.Admin.Admin.SendMassScoreboardEmailsForFeedback(model.IsMassSendVerified, model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.RefMasterList:
                            result = Library.Classes.Admin.Admin.Admin.SendMassScoreboardEmailsForMasterRefRoster(model.IsMassSendVerified, model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllEmailsAvailable:
                            result = Library.Classes.Admin.Admin.Admin.SendMassEmailsToAllContacts(model.IsMassSendVerified, model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllRegisteredUsers:
                            result = Library.Classes.Admin.Admin.Admin.SendMassScoreboardEmailsForAllUsers(model.IsMassSendVerified, model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllRegisteredLeagues:
                            result = Library.Classes.Admin.Admin.Admin.SendMassEmailsToRegisteredLeagues(model.IsMassSendVerified, model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllRegisteredEmails:
                            result = Library.Classes.Admin.Admin.Admin.SendMassEmailsForAllRegisteredEmails(model.IsMassSendVerified, model.Subject, model.HtmlBody);
                            break;
                        case MassEmailEnum.AllLeaguesThatDontExistWithinRDNation:
                            result = Library.Classes.Admin.Admin.Admin.SendMassEmailsForLeaguesNotSignedUpToRDNation(model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                        case MassEmailEnum.AllLeagueOwners:
                            result = Library.Classes.Admin.Admin.Admin.SendMassEmailsToOwnersOfLeagues(model.Subject, model.HtmlBody, model.TestEmail);
                            break;
                    }
                }
                else
                    result = Library.Classes.Admin.Admin.Admin.SendTestEmail(model.Subject, model.HtmlBody, model.TestEmail);



                if (!result)
                    AddMessage(new SiteMessage { MessageType = SiteMessageType.Error, Message = "An error occured" });
                else
                {
                    if (model.IsMassSendVerified)
                    {
                        AddMessage(new SiteMessage { MessageType = SiteMessageType.Success, Message = "Successfully sent out mass emails" });
                        return RedirectToAction("Index", "Admin");
                    }

                    AddMessage(new SiteMessage { MessageType = SiteMessageType.Success, Message = "Successfully sent out a test email to: " + model.TestEmail });
                    return View(output);
                }
            }
            catch (Exception e)
            {
                ErrorDatabaseManager.AddException(e, e.GetType(), errorGroup: ErrorGroupEnum.Database);
            }
            return View(output);
        }
        private GenericSingleModel<SimpleModPager<Library.Classes.Game.Game>> FillGamesModelForOwner(SimpleModPager<Library.Classes.Game.Game> model, Guid memberId)
        {
            var output = new GenericSingleModel<SimpleModPager<Library.Classes.Game.Game>> { Model = model };
            try
            {
                for (var i = 1; i <= model.NumberOfPages; i++)
                    model.Pages.Add(new SelectListItem
                    {
                        Text = i.ToString(),
                        Value = i.ToString(),
                        Selected = i == model.CurrentPage
                    });

                var fed = MemberCache.GetAllOwnedFederations(memberId);
                var leg = MemberCache.GetAllOwnedLeagues(memberId);
                output.Model.Items = GameManager.GetGamesOwnedByMember(memberId, (model.CurrentPage - 1) * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE);
                if (output.Model.Items == null)
                    output.Model.Items = new List<Game>();
                if (leg.Count > 0)
                {
                    List<Guid> ids = new List<Guid>();
                    foreach (var le in leg)
                        ids.Add(le.LeagueId);
                    var games = GameManager.GetGamesOwnedByLeague(ids, (model.CurrentPage - 1) * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE);

                    foreach (var game in games)
                    {
                        if (output.Model.Items.Where(x => x.GameId == game.GameId).FirstOrDefault() == null)
                            output.Model.Items.Add(game);
                    }
                }
                if (fed.Count > 0)
                {
                    List<Guid> ids = new List<Guid>();
                    foreach (var le in fed)
                        ids.Add(le.Federation.FederationId);
                    var games = GameManager.GetGamesOwnedByFederation(ids, (model.CurrentPage - 1) * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE);
                    foreach (var game in games)
                    {
                        if (output.Model.Items.Where(x => x.GameId == game.GameId).FirstOrDefault() == null)
                            output.Model.Items.Add(game);
                    }
                }
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }

            return output;
        }
        public ActionResult AddLeagueContact()
        {
            var model = new AddLeagueContact();
            FillAddLeagueContactModel(ref model);

            var output = new GenericSingleModel<AddLeagueContact>(model);
            return View(output);
        }