public static void GetMatchupsToSendUpdateScoreReminder(Guid tournamentId)
        {
            string templatePath = Path.Combine(ConfigurationManager.AppSettings["EmailTemplatePath"].ToString(), "UpdateScoreReminder.htm");
            string matchUpReadyTemplate = File.ReadAllText(templatePath);

            using (TournamentsDataContext tdc = new TournamentsDataContext())
            {
                var playersToNotify = from tm in tdc.TournamentMatchups
                                      join pA in tdc.Players on tm.PlayerA equals pA.Id
                                      join pB in tdc.Players on tm.PlayerB equals pB.Id
                                      join tr in tdc.Tournaments on tm.TournamentId equals tr.Id
                                      where tm.Winner == null && DateTime.Now.AddHours(-2) > tm.Start && (tm.TournamentId == tournamentId)
                                      select new { MatchupId = tm.Id, PlayerAId = pA.Id, PlayerA = pA.Name, PlayerAEmail = pA.Email, PlayerBId = pB.Id, PlayerB = pB.Name, PlayerBEmail = pB.Email, tm.Start, tr.TournamentName, tr.OrganisationId };
                foreach (var item in playersToNotify)
                {
                    ListDictionary replacements = new ListDictionary();
                    replacements.Add("<% PlayerName %>", item.PlayerA);
                    replacements.Add("<% Opponent %>", item.PlayerB);
                    replacements.Add("<% GameTime %>", item.Start);
                    replacements.Add("<% OrgId %>", item.OrganisationId);
                    replacements.Add("<% PlayerId %>", item.PlayerAId);
                    replacements.Add("<% MatchupId %>", item.MatchupId);
                    SendEmail(replacements, matchUpReadyTemplate, item.PlayerAEmail, "Score Update - " + item.TournamentName);
                    replacements["<% PlayerName %>"] = item.PlayerB;
                    replacements["<% Opponent %>"] = item.PlayerA;
                    replacements["<% PlayerId %>"] = item.PlayerBId;
                    SendEmail(replacements, matchUpReadyTemplate, item.PlayerAEmail, "Score Update - " + item.TournamentName);
                }

            }
        }
 public static List<MatchupsToNotifyGetResult> GetMatchupsToNotify(Guid tournamentId)
 {
     using (TournamentsDataContext tdc = new TournamentsDataContext())
     {
         List<MatchupsToNotifyGetResult> x = tdc.MatchupsToNotifyGet(tournamentId, false, null).ToList();
         return x;
     }
 }
 public static List<MatchupsToNotifyGetResult> GetMatchupsToNotify(int tournamentMatchupId)
 {
     using (TournamentsDataContext tdc = new TournamentsDataContext(ConfigurationManager.ConnectionStrings["StrongerOrgString"].ToString()))
     {
         List<MatchupsToNotifyGetResult> x = tdc.MatchupsToNotifyGet(null, false, tournamentMatchupId).ToList();
         return x;
     }
 }
 public static List<MatchupsToNotifyGetResult> GetMatchupsToNotify()
 {
     using (TournamentsDataContext tdc = new TournamentsDataContext())
     {
         List<MatchupsToNotifyGetResult> x = tdc.MatchupsToNotifyGet(null, true, null).ToList();
         return x;
     }
 }
 internal static List<Competitor> GetPlayers(Guid tournamentId)
 {
     TournamentsDataContext tournamentDC = new TournamentsDataContext(ConfigurationManager.ConnectionStrings["StrongerOrgString"].ConnectionString);
     var players = from p2t in tournamentDC.Players2Tournaments
                   join p in tournamentDC.Players on p2t.PlayerId equals p.Id
                   where p2t.TournamentId == tournamentId
                   select new Competitor()
                   {
                       Id = p2t.PlayerId,
                       Name = p.Name,
                       Email=p.Email
                   };
     return players.ToList();
 }
        public IEnumerable<DateTime> GetInvalidDates(Guid orgId)
        {
            if (this._holidayCache.ContainsKey(orgId))
                return this._holidayCache[orgId];

            //cache and return
            IEnumerable<DateTime> holidays;
            using (TournamentsDataContext db = new TournamentsDataContext(ConfigurationManager.ConnectionStrings["StrongerOrgString"].ConnectionString))
            {
                 holidays = db.OrganisationHolidays.Where(x => x.OrganisationId == orgId)
                                                      .Select(y => y.Date).ToList();
            }

            this._holidayCache.Add(orgId, holidays);

            return holidays;
        }
        private static void SaveMatchUps(Guid tournamentId, List<Matchup> matchupList)
        {
            using (TournamentsDataContext db = new TournamentsDataContext(ConfigurationManager.ConnectionStrings["StrongerOrgString"].ConnectionString))
            {
                IEnumerable<StrongerOrg.BL.DL.TournamentMatchup> e = matchupList.Select(ml => new StrongerOrg.BL.DL.TournamentMatchup()
                {
                    MatchUpId = ml.MatchupId,
                    Start = ml.Start,
                    PlayerA = ml.PlayerAId,
                    PlayerB = ml.PlayerBId,
                    TournamentId = tournamentId,
                    End = ml.End,
                    Round = ml.Round,
                    NextMatchId = ml.NextMatchId

                });
                db.TournamentMatchups.InsertAllOnSubmit(e);
                db.SubmitChanges();
            }
        }
 private static Tournament GetTournamentInfo(Guid tournamentId)
 {
     using (TournamentsDataContext tdc = new TournamentsDataContext(ConfigurationManager.ConnectionStrings["StrongerOrgString"].ConnectionString))
     {
         return tdc.Tournaments.Single(t => t.Id == tournamentId);
     }
 }
        public static void NotifiModerator(Guid tournamentId, Guid organisationId, string tournamentName, DateTime startDate)
        {
            using (TournamentsDataContext tdc = new TournamentsDataContext(ConfigurationManager.ConnectionStrings["StrongerOrgString"].ConnectionString))
            {
                var moderators = tdc.OrganisationUsersGet(organisationId).Where(ou => ou.RoleName == "Moderator").Select(ou => new { ou.Email, ou.Name });

                string templatePath = Path.Combine(ConfigurationManager.AppSettings["EmailTemplatePath"].ToString(), "MatchupsAreReady.htm");
                string matchUpReadyTemplate = File.ReadAllText(templatePath);
                foreach (var moderator in moderators)
                {
                    ListDictionary replacements = new ListDictionary();
                    replacements.Add("<% ModeratorName %>", moderator.Name);
                    replacements.Add("<% TournamentName %>", tournamentName);
                    replacements.Add("<% StartDate %>", string.Format("{0:ddd, MMM d, yyyy}", startDate));
                    replacements.Add("<% TournamentId %>", tournamentId.ToString());
                    SendEmail(replacements, matchUpReadyTemplate.Clone().ToString(), moderator.Email, "Matchups are ready for your review");
                }
            }
        }
 public static List<TournamentOrganisation> GetTournamentForMatchups()
 {
     using (TournamentsDataContext tdc = new TournamentsDataContext())
     {
         return tdc.Tournaments.Where(t => t.LastRegistrationDate.Date == DateTime.Now.Date && t.TournamentMatchups.Count(tm => tm.TournamentId == t.Id) == 0).
             Select(t => new TournamentOrganisation() { TournamentId = t.Id, OrganisationId = t.OrganisationId }).ToList();
     }
 }