public HomeController() { db = new RankContext(); matchManager = new MatchManager(db); rankArchManager = new RankArchManager(db); cache = new CacheManager(); }
private static int UpdateGuildWeeklyRanking(RankContext context, DateTime?rankingDate = null) { rankingDate = GetRankingUpdatedDate(rankingDate); foreach (var guild in context.Characters.Include(C => C.Guild) .Include(C => C.Ranks) .Where(C => C.IsActivated && C.GuildId != null) .GroupBy(C => C.GuildId)) { var currentWeekRanks = guild.Select(C => new { C.Id, C.Name, Rank = C.Ranks?.FirstOrDefault(R => R.Date.GetValueOrDefault() == rankingDate) }) .Where(CWR => CWR.Rank != null) .OrderBy(CWR => CWR.Rank.Ranking) .ToList(); for (int i = 1; i <= currentWeekRanks.Count; i++) { var rank = currentWeekRanks[i - 1]; if (context.WeeklyRanks.Any(WR => WR.CharacterId == rank.Id && WR.Date == rankingDate)) { continue; } var weeklyRank = new WeeklyRank { CharacterId = rank.Id, GuildId = guild.Key, Ranking = i, Date = rankingDate }; context.WeeklyRanks.Add(weeklyRank); } } return(context.SaveChanges()); }
public ManageController() { db = new RankContext(); sessionManager = new SessionManager(); accountManager = new AccountManager(db, sessionManager); matchManager = new MatchManager(db); }
private static Character CreateCharacter(RankContext context, string characterName, Guild guild, string guildPositionDisplay) { var character = context.Characters.Include("Guild").Include("Ranks").FirstOrDefault(C => C.Name == characterName); var guildPosition = EnumHelper.ParseDisplayToEnum <GuildPositions>(guildPositionDisplay); if (character == null) { character = new Character { Name = characterName, GuildId = guild.Id, GuildPosition = guildPosition }; context.Characters.Add(character); } if (character.GuildId != guild.Id) { character.GuildId = guild.Id; } if (character.GuildPosition != guildPosition) { character.GuildPosition = guildPosition; } context.SaveChanges(); return(character); }
private static Character GetOrCreateCharacter(RankContext context, string characterName, Guid?guildId, string guildPositionDisplay) { var character = context.Characters.FirstOrDefault(C => C.Name == characterName); GuildPositions?guildPosition = null; if (String.IsNullOrWhiteSpace(guildPositionDisplay) != true) { guildPosition = EnumHelper.ParseDisplayToEnum <GuildPositions>(guildPositionDisplay); } if (character == null) { character = new Character { Name = characterName, GuildId = guildId, GuildPosition = guildPosition }; context.Characters.Add(character); } else { if (character.GuildId != guildId) { character.GuildId = guildId; } if (character.GuildPosition != guildPosition) { character.GuildPosition = guildPosition; } } context.SaveChanges(); return(character); }
private static void AddWeeklyRanking(RankContext context, Guild guild, DateTime?rankingDate = null) { rankingDate = GetRankingUpdatedDate(rankingDate); List <Rank> currentWeekRanks = new List <Rank>(); foreach (var characterId in guild.Characters.Where(C => C.IsActivated).Select(C => C.Id)) { var character = context.Characters.Include("Guild").Include("Ranks") .FirstOrDefault(C => C.Id == characterId); var currentWeekRank = character.Ranks.FirstOrDefault(R => R.Date.GetValueOrDefault() == rankingDate); if (currentWeekRank != null) { currentWeekRanks.Add(currentWeekRank); } } currentWeekRanks = currentWeekRanks.OrderBy(R => R.Ranking).ToList(); for (int i = 1; i <= currentWeekRanks.Count; i++) { var rank = currentWeekRanks[i - 1]; var weeklyRank = new WeeklyRank { CharacterId = rank.CharacterId, GuildId = guild.Id, Ranking = i, Date = rankingDate }; context.WeeklyRanks.Add(weeklyRank); context.SaveChanges(); } }
public BoardController() { db = new RankContext(); sessionManager = new SessionManager(); accountManager = new AccountManager(db, sessionManager); matchManager = new MatchManager(db); boardManager = new BoardManager(db); cache = new CacheManager(); }
public MemberRankController(RankContext context, IMemoryCache memoryCache, IHostingEnvironment hostingEnvironment, IConfiguration configuration) { _context = context; _memoryCache = memoryCache; _hostingEnvironment = hostingEnvironment; _defaultSubDomain = configuration.GetValue <string>("DefaultSubDomain"); }
/// <summary> /// /// </summary> /// <returns></returns> public static bool IsAnyMatch() { RankContext db = new RankContext(); var matches = db.Match.ToList(); if (matches.Count == 0) { return(false); } return(true); }
public RankController(RankContext context) { _context = context; if (_context.Ranks.Count() == 0) { _context.Ranks.Add(new Rank { Name = "White" }); _context.SaveChanges(); } }
/// <summary> /// /// </summary> /// <returns></returns> public static int MatchNotification() { RankContext db = new RankContext(); string name = UserName(); var matches = db.Match.Where(m => m.Team1 == name || m.Team2 == name).Where(m => m.IsFinished == false && m.NotAddedBy == name).ToList(); if (matches == null || matches.Count == 0) { return(0); } return(matches.Count); }
/// <summary> /// /// </summary> /// <returns></returns> public static string KingOfShooters() { RankContext db = new RankContext(); var king = db.Member.OrderByDescending(k => k.Goals).Take(1).SingleOrDefault(); if (king != null) { return(king.MName + "(" + king.Goals + ")"); } else { return(" "); } }
/// <summary> /// /// </summary> /// <returns></returns> public static bool IsAllAccepted() { RankContext db = new RankContext(); string name = UserName(); var matches = db.Match.Where(m => m.IsFinished == false && (m.Team1 == name || m.Team2 == name)).ToList(); foreach (var m in matches) { if (m.NotAddedBy == name) { return(false); } } return(true); }
private static Guild CreateGuild(RankContext context, string guildName) { var guild = context.Guilds.Include("Characters").FirstOrDefault(G => G.Name == guildName); if (guild == null) { guild = new Guild { Name = guildName }; context.Guilds.Add(guild); context.SaveChanges(); } return(guild); }
private static Rank UpdateRanking(RankContext context, Character member, string ranking, DateTime rankingDate) { var rank = member.Ranks?.FirstOrDefault(R => R.Date.Value == rankingDate); if (rank == null) { rank = new Rank { CharacterId = member.Id, Ranking = Int32.Parse(ranking), Date = rankingDate }; context.Ranks.Add(rank); context.SaveChanges(); Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Updated the Ranking. Name={member.Name}, Rank={ranking}"); } return(rank); }
/// <summary> /// /// </summary> /// <returns></returns> public static string[] Leaders() { RankContext db = new RankContext(); if (IsAnyMatch()) { var leaders = db.Rank.OrderBy(p => p.Position).Take(3).ToList(); if (leaders != null && leaders.Count >= 3) { string[] ls = new string[3]; ls[0] = leaders[0].Uname; ls[1] = leaders[1].Uname; ls[2] = leaders[2].Uname; return(ls); } } return(null); }
private static Guild GetOrCreateGuild(RankContext context, string guildName) { if (String.IsNullOrWhiteSpace(guildName)) { throw new ArgumentException("The guild name is invalid.", nameof(guildName)); } var guild = context.Guilds.FirstOrDefault(G => G.Name == guildName); if (guild == null) { guild = new Guild { Name = guildName }; context.Guilds.Add(guild); context.SaveChanges(); } return(guild); }
/// <summary> /// /// </summary> /// <returns></returns> public static bool FinishLeagueCheck() { RankContext db = new RankContext(); var users = db.Users.Where(u => u.IsAdmin == false && u.stat == Status.Registration && u.IsAccept == true).ToList(); var date = db.RoundDate.SingleOrDefault(); var rank = db.Rank.ToList(); if (DateTime.Now >= date.RoundEndDatetime) { return(true); } foreach (var r in rank) { if (r.Played < users.Count - 1) { return(false); } } return(false); }
/// <summary> /// /// </summary> /// <returns></returns> public static bool IsArchAdded() { RankContext db = new RankContext(); var archs = db.RankArch.ToList(); if (db.Match.ToList().Count == 0) { return(false); } var matches = db.Match.Min(m => m.Date); foreach (var a in archs) { if (matches == a.From) { return(true); } } return(false); }
private static void UpdateWeeklyRanking(RankContext context, Guild guild, DateTime rankingDate) { AddWeeklyRanking(context, guild, rankingDate); }
public ProfileController() { db = new RankContext(); sessionManager = new SessionManager(); accountManager = new AccountManager(db, sessionManager); }
public CharactersController(RankContext context) { _context = context; }
public BoardManager(RankContext db) { this.db = db; }
public MatchesController(RankContext context) { _context = context; }
public RankArchManager(RankContext db) { this.db = db; }
public MatchController() { db = new RankContext(); matchManager = new MatchManager(db); }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Need a Guild Member file that type is csv."); Console.Read(); return; } // Validate a Guild Member file var guildMemberFilePath = args[0]; var guildMemberFileInfo = new FileInfo(guildMemberFilePath); if (!guildMemberFileInfo.Exists || !guildMemberFileInfo.Extension.Equals(".csv", StringComparison.CurrentCultureIgnoreCase)) { Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Invalid a Guild Member file"); Console.Read(); return; } // Initialize a DB var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; var options = SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder <RankContext>(), connectionString).Options; using (var context = new RankContext(options)) { DbInitializer.Initialize(context); var guildName = guildMemberFileInfo.Name.Replace(guildMemberFileInfo.Extension, ""); var guild = CreateGuild(context, guildName); #if UPDATE_WEEKLY_RANKING UpdateWeeklyRanking(context, guild, new DateTime(2018, 8, 10)); #else // Read a Guild Member file using (var sr = guildMemberFileInfo.OpenText()) { var membersInfo = sr.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (var memberInfo in membersInfo) { var splitedMemberInfo = memberInfo.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (splitedMemberInfo.Length != 2) { Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Invalid a Member Info"); continue; } // Gets or Create the Guild and Member to Database var guildPosition = splitedMemberInfo[0]; var characterName = splitedMemberInfo[1]; var member = CreateCharacter(context, characterName, guild, guildPosition); // Get a Ranking of Character vis web parsing var ranking = GetCharacterRanking(member.Name, UsedEncoding); if (String.IsNullOrWhiteSpace(ranking)) { Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Cannot found a ranking of Member '{member.Name}'"); continue; } var rankingDate = GetRankingUpdatedDate(); // Update UpdateRanking(context, member, ranking, rankingDate); } } // Add Weekly Ranking AddWeeklyRanking(context, guild); #endif } Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Finish a getting the ranking of memeber!"); Console.ReadLine(); }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Need a Character list file that type is csv."); Console.Read(); return; } // Validate a Character List file var characterListFilePath = args[0]; var characterListFileInfo = new FileInfo(characterListFilePath); if (!characterListFileInfo.Exists || !characterListFileInfo.Extension.Equals(".csv", StringComparison.CurrentCultureIgnoreCase)) { Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Invalid a Character List file"); Console.Read(); return; } var rankingDate = GetRankingUpdatedDate(); IRankingCrawler rankingCrawler = new RankingCrawlerV2(); // Initialize a DB var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; var options = SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder <RankContext>(), connectionString).Options; using (var context = new RankContext(options)) { DbInitializer.Initialize(context); // Read a Character List file using (var sr = characterListFileInfo.OpenText()) { var characterInfos = sr.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (var characterInfo in characterInfos) { var splitedCharacterInfos = characterInfo.Split(','); if (splitedCharacterInfos.Length < 3) { Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Invalid a Character Info. Input = [{splitedCharacterInfos}]"); continue; } var guildName = splitedCharacterInfos[0]; var guildPosition = splitedCharacterInfos[1]; var characterName = splitedCharacterInfos[2]; // Gets or Create a Guild to Database Guild guild = null; if (String.IsNullOrWhiteSpace(guildName) != true) { guild = GetOrCreateGuild(context, guildName); } // Gets or Create a Character to Database var character = GetOrCreateCharacter(context, characterName, guild?.Id, guildPosition); // Get a Ranking of Character vis web parsing var ranking = rankingCrawler.GetCharacterRanking(character.Name); if (String.IsNullOrWhiteSpace(ranking)) { Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Cannot found a ranking of Member '{character.Name}'"); continue; } // Update Character Ranking UpdateCharacterRanking(context, character, ranking, rankingDate); } // Update Guild Weekly Ranking UpdateGuildWeeklyRanking(context, rankingDate); } } Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] Finish a getting the ranking of character list!"); Console.ReadLine(); }
public RanksController(RankContext context, IMemoryCache memoryCache) { _context = context; _memoryCache = memoryCache; _rankingCrawler = new RankingCrawlerV2(); }
public MatchManager(RankContext db) { this.db = db; boardManager = new BoardManager(db); }