Ejemplo n.º 1
0
        /// <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();
            }
        }
Ejemplo n.º 2
0
 public static void UpdateToDatabase(Junction junction)
 {
     using (var db = new AsniScrapeAdminDbContext())
     {
         db.Junction.Update(junction);
         db.SaveChanges();
     }
 }
Ejemplo n.º 3
0
 /// <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());
     }
 }
Ejemplo n.º 4
0
 /// <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());
     }
 }
Ejemplo n.º 5
0
 /// <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();
     }
 }
Ejemplo n.º 6
0
 public static List <MasterView> GetMasterView()
 {
     using (var context = new AsniScrapeAdminDbContext())
     {
         var cData = (from g in context.MasterView
                      select g);
         return(cData.ToList());
     }
 }
Ejemplo n.º 7
0
 /// <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();
     }
 }
Ejemplo n.º 8
0
 /// <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);
     }
 }
Ejemplo n.º 9
0
 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);
     }
 }
Ejemplo n.º 10
0
 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);
     }
 }
Ejemplo n.º 11
0
 /// <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);
     }
 }
Ejemplo n.º 12
0
 /// <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());
     }
 }
Ejemplo n.º 13
0
 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);
     }
 }
Ejemplo n.º 14
0
        /// <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();
            }
        }
Ejemplo n.º 15
0
        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();
                }
            }
        }
Ejemplo n.º 16
0
        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();
                }
            }
        }
Ejemplo n.º 17
0
        /// <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);
        }
Ejemplo n.º 18
0
        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");
            }
        }