/// <summary> /// save list of junction entries to the database /// </summary> /// <param name="games"></param> public static void SaveToDatabaseNoUpdate(List <Junction> games) { using (var db = new AsniScrapeAdminDbContext()) { // get current database context var current = db.Junction.AsNoTracking().ToList(); List <Junction> toAdd = new List <Junction>(); List <Junction> toUpdate = new List <Junction>(); // iterate through the games list and separete out games to be added and games to be updated foreach (var g in games) { Junction t = (from a in current where a.gid == g.gid select a).SingleOrDefault(); if (t == null) { toAdd.Add(g); } else { //toUpdate.Add(g); } } //db.Junction.UpdateRange(toUpdate); db.Junction.AddRange(toAdd); db.SaveChanges(); } }
public static void UpdateToDatabase(Junction junction) { using (var db = new AsniScrapeAdminDbContext()) { db.Junction.Update(junction); db.SaveChanges(); } }
/// <summary> /// return a list with all gamesdb.net platforms /// </summary> /// <returns></returns> public static List <GDB_Platform> GetPlatforms() { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.GDB_Platform select g); return(cData.ToList()); } }
/// <summary> /// return list of all moby games /// </summary> /// <returns></returns> public static List <MOBY_Game> GetGames() { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.MOBY_Game select g); return(cData.ToList()); } }
/// <summary> /// add a single game entry /// </summary> /// <param name="game"></param> public static void AddGame(MOBY_Game game) { using (var aG = new AsniScrapeAdminDbContext()) { aG.MOBY_Game.Add(game); aG.SaveChanges(); aG.Dispose(); } }
public static List <MasterView> GetMasterView() { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.MasterView select g); return(cData.ToList()); } }
/// <summary> /// update a single game entry /// </summary> /// <param name="game"></param> public static void UpdateGame(MOBY_Game game) { using (var uG = new AsniScrapeAdminDbContext()) { uG.MOBY_Game.Update(game); uG.SaveChanges(); uG.Dispose(); } }
/// <summary> /// return single mobygame entry based on alias name and platform id /// </summary> /// <param name="alias"></param> /// <param name="pid"></param> /// <returns></returns> public static MOBY_Game GetGame(string alias, int pid) { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.MOBY_Game where g.alias == alias && g.pid == pid select g).FirstOrDefault(); return(cData); } }
public static Game_Doc ReturnDocEntry(int id) { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.Game_Doc where g.id == id select g).FirstOrDefault(); return(cData); } }
public static Junction GetJunction(int gid) { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.Junction where g.gid == gid select g).First(); return(cData); } }
/// <summary> /// return single moby game based on mid /// </summary> /// <param name="gid"></param> /// <returns></returns> public static MOBY_Game GetGame(int mid) { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.MOBY_Game where g.mid == mid select g).FirstOrDefault(); return(cData); } }
/// <summary> /// return list of all moby games for a specific platform /// </summary> /// <param name="platformId"></param> /// <returns></returns> public static List <MOBY_Game> GetGames(int platformId) { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.MOBY_Game where g.pid == platformId select g); return(cData.ToList()); } }
public static List <Game_Doc> ReturnDocEntriesByGid(int gid) { using (var context = new AsniScrapeAdminDbContext()) { var cData = (from g in context.Game_Doc where g.gid == gid select g).ToList(); return(cData); } }
/// <summary> /// save list of games to database (add or update logic included) /// </summary> /// <param name="games"></param> public static void SaveToDatabase(List <MOBY_Game> games) { using (var db = new AsniScrapeAdminDbContext()) { // get current database context var current = db.MOBY_Game.AsNoTracking().ToList(); List <MOBY_Game> toAdd = new List <MOBY_Game>(); List <MOBY_Game> toUpdate = new List <MOBY_Game>(); // iterate through the games list and separete out games to be added and games to be updated foreach (var g in games) { // games will generally be passed with mid = 0 if (g.mid > 0) { MOBY_Game t = (from a in current where (a.mid == g.mid) select a).SingleOrDefault(); if (t == null) { toAdd.Add(g); } else { toUpdate.Add(g); } } else { MOBY_Game t = (from a in current where (a.alias == g.alias && a.pid == g.pid) select a).SingleOrDefault(); if (t == null) { toAdd.Add(g); } else { MOBY_Game m = t; m.gameTitle = g.gameTitle; m.alias = g.alias; m.pid = g.pid; m.releaseYear = g.releaseYear; toUpdate.Add(m); } } } db.MOBY_Game.UpdateRange(toUpdate); db.MOBY_Game.AddRange(toAdd); db.SaveChanges(); } }
public static void AddDoc(Game_Doc doc) { using (var aG = new AsniScrapeAdminDbContext()) { // check whether doc url already exists List <Game_Doc> docs = (from a in aG.Game_Doc where a.downloadUrl == doc.downloadUrl select a).ToList(); if (docs.Count == 0) { aG.Game_Doc.Add(doc); aG.SaveChanges(); aG.Dispose(); } } }
public static void UpdateDoc(Game_Doc doc) { using (var aG = new AsniScrapeAdminDbContext()) { // check whether doc url already exists Game_Doc doc1 = (from a in aG.Game_Doc.AsNoTracking() where a.id == doc.id select a).FirstOrDefault(); if (doc1 != null) { aG.Game_Doc.Update(doc); aG.SaveChanges(); aG.Dispose(); } } }
/// <summary> /// save list of games to database (add or update logic included) /// </summary> /// <param name="games"></param> public static void SaveToDatabase(List <GDB_Game> games) { // list to hold junction table info List <int> jIds = new List <int>(); using (var db = new AsniScrapeAdminDbContext()) { // get current database context var current = db.GDB_Game.AsNoTracking().ToList(); List <GDB_Game> toAdd = new List <GDB_Game>(); List <GDB_Game> toUpdate = new List <GDB_Game>(); // iterate through the games list and separete out games to be added and games to be updated foreach (var g in games) { jIds.Add(g.gid); GDB_Game t = (from a in current where a.gid == g.gid select a).SingleOrDefault(); if (t == null) { toAdd.Add(g); } else { toUpdate.Add(g); } } db.GDB_Game.UpdateRange(toUpdate); db.GDB_Game.AddRange(toAdd); db.SaveChanges(); } // now update the junction table if neccesary Junction.SaveToDatabaseNoUpdate(jIds); }
public static async void ParseManuals() { MainWindow mw = Application.Current.Windows.OfType <MainWindow>().FirstOrDefault(); // start progress dialog controller var mySettings = new MetroDialogSettings() { NegativeButtonText = "Cancel Scraping", AnimateShow = false, AnimateHide = false }; var controller = await mw.ShowProgressAsync("Matching game manuals", "Initialising...", true, settings : mySettings); controller.SetCancelable(true); await Task.Delay(100); await Task.Run(() => { List <Game_Doc> docs = new List <Game_Doc>(); List <Game_Doc> docsNoMatch = new List <Game_Doc>(); // get all docs using (var context = new AsniScrapeAdminDbContext()) { var mData = from g in context.Game_Doc select g; docs = mData.ToList(); } int Matched = 0; // iterate through each doc that does not have a game ID set foreach (Game_Doc m in docs.Where(a => a.gid == null)) { controller.SetMessage("Matching Manuals for Game: " + m.gameName + "\n(" + MedLaunch.Models.GSystem.ReturnGamesDBPlatformName(m.pid.Value) + ")\n\nMatches Found: " + Matched.ToString()); var games = from a in GDB_Game.GetGames() where a.pid == m.pid select a; // try exact match var search = (from a in games where a.gameTitle.Trim().ToLower().Replace(":", "").Replace("-", "").Replace("'", "").Replace(" ", " ") == m.gameName.Trim().ToLower().Replace(":", "").Replace("-", "").Replace("'", "").Replace(" ", " ") select a).FirstOrDefault(); if (search != null) { // exact match found - update entry Game_Doc gd = new Game_Doc(); gd.id = m.id; gd.gameName = m.gameName; gd.pid = m.pid; gd.downloadUrl = m.downloadUrl; gd.gid = search.gid; UpdateDoc(gd); Matched++; } else { // no exact match found - do manual selection based on word matching docsNoMatch.Add(m); } } // now do manual foreach (Game_Doc m in docsNoMatch.Where(a => a.gid == null)) { List <ManualCount> mcount = new List <ManualCount>(); var games = from a in GDB_Game.GetGames() where a.pid == m.pid select a; string[] lArr = m.gameName.Trim().Split(' '); List <GDB_Game> hitList = new List <GDB_Game>(); for (int i = 0; i < lArr.Length; i++) { var s = games.Where(a => a.gameTitle.ToLower().Trim().Contains(lArr[i].ToLower().Trim())); hitList.AddRange(s); } // count entries in list var q = from x in hitList group x by x into g let count = g.Count() orderby count descending select new { Value = g.Key, Count = count }; foreach (var x in q) { ManualCount mc = new ManualCount(); mc.Game = x.Value; mc.Matches = x.Count; mcount.Add(mc); } foreach (var g in mcount.OrderByDescending(a => a.Matches)) { string message = "Manual: \n" + m.gameName + "\n"; message += "\nGame:\n " + g.Game.gameTitle + "\n(" + MedLaunch.Models.GSystem.ReturnGamesDBPlatformName(m.pid.Value) + ")\n"; message += "\nIs this a match??\n"; message += "YES - match / NO - nomatch / CANCEL - cancel"; MessageBoxResult result = MessageBox.Show(message, "Manual Matching", MessageBoxButton.YesNoCancel); if (result == MessageBoxResult.Cancel) { break; } if (result == MessageBoxResult.Yes) { // this is a match - update the record Game_Doc gd = new Game_Doc(); gd.id = m.id; gd.gameName = m.gameName; gd.pid = m.pid; gd.downloadUrl = m.downloadUrl; gd.gid = g.Game.gid; UpdateDoc(gd); Matched++; break; } if (result == MessageBoxResult.No) { // not a match - continue continue; } } } }); await controller.CloseAsync(); if (controller.IsCanceled) { await mw.ShowMessageAsync("Parse Manuals", "Parsing Cancelled"); } else { await mw.ShowMessageAsync("Parse Manuals", "Parsing Completed"); } }