Esempio n. 1
0
        private static async Task <bool> DoItemImport(ClassicGuildBankDbContext bankDb, XmlSerializer deserializer, int itemId)
        {
            var content   = httpClient.GetAsync($"https://tbc.wowhead.com/item={itemId}?xml").Result.Content;
            var xmlStream = content.ReadAsStreamAsync().Result;
            var str       = content.ReadAsStringAsync().Result;

            var wItem = (Wowhead)deserializer.Deserialize(xmlStream);

            if (wItem.Item == null)
            {
                Console.WriteLine($"Failed to locate item {itemId}");
                return(false);
            }

            Console.WriteLine($"Converting Item {itemId}");

            var dbItem = bankDb.Items.FirstOrDefault(i => i.Id == Convert.ToInt32(wItem.Item.Id));

            if (dbItem != null)
            {
                return(false);
            }

            dbItem = new CGB.Item {
                Id       = Convert.ToInt32(wItem.Item.Id),
                Name     = wItem.Item.Name,
                Quality  = wItem.Item.Quality.Text,
                Icon     = wItem.Item.Icon.Text,
                Class    = Convert.ToInt32(wItem.Item.Class.Id),
                Subclass = Convert.ToInt32(wItem.Item.Subclass.Id)
            };

            bankDb.Items.Add(dbItem);

            return(true);
        }
Esempio n. 2
0
        public static async Task DoFullInitialize(ClassicGuildBankDbContext bankDb, MangosDbContext mangosDb)
        {
            var conn = bankDb.Database.GetDbConnection();

            if (conn.State != System.Data.ConnectionState.Open)
            {
                conn.Open();
            }
            bankDb.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Item ON;");

            var deserializer = new XmlSerializer(typeof(Wowhead));

            int itemCnt = 0;
            int skipped = 0;
            int maxId   = bankDb.Items.Max(i => i.Id);

            foreach (var item in mangosDb.ItemTemplates.Where(i => i.entry > maxId))
            {
                var content   = httpClient.GetAsync($"https://classic.wowhead.com/item={item.entry}?xml").Result.Content;
                var xmlStream = content.ReadAsStreamAsync().Result;
                var str       = content.ReadAsStringAsync().Result;

                var wItem = (Wowhead)deserializer.Deserialize(xmlStream);

                if (wItem.Item == null)
                {
                    Console.WriteLine($"Failed to locate item {item.entry} - {item.name}");
                    skipped++;
                    continue;
                }

                Console.WriteLine($"Converting Item {item.entry} - {wItem.Item.Name}");

                var dbItem = bankDb.Items.FirstOrDefault(i => i.Id == Convert.ToInt32(wItem.Item.Id));

                if (dbItem != null)
                {
                    continue;
                }

                dbItem          = new CGB.Item();
                dbItem.Id       = Convert.ToInt32(wItem.Item.Id);
                dbItem.Name     = wItem.Item.Name;
                dbItem.Quality  = wItem.Item.Quality.Text;
                dbItem.Icon     = wItem.Item.Icon.Text;
                dbItem.Class    = Convert.ToInt32(wItem.Item.Class.Id);
                dbItem.Subclass = Convert.ToInt32(wItem.Item.Subclass.Id);

                bankDb.Items.Add(dbItem);

                itemCnt++;
                if (itemCnt % 1000 == 0)
                {
                    Console.WriteLine($"Saved {bankDb.SaveChangesAsync().Result} Records");
                }
            }

            var recordsSaved = await bankDb.SaveChangesAsync();

            conn.Close();


            Console.WriteLine(recordsSaved);
            Console.WriteLine($"Skipped {skipped} Records");
            Console.ReadLine();
        }