Beispiel #1
0
        public async Task <IActionResult> Edit(int id, [Bind("ItemPriceHistoryID,ItemID,Date,Price,AveragePrice")] ItemPriceHistory itemPriceHistory)
        {
            if (id != itemPriceHistory.ItemPriceHistoryID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(itemPriceHistory);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ItemPriceHistoryExists(itemPriceHistory.ItemPriceHistoryID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index"));
            }
            ViewData["ItemID"] = new SelectList(_context.Item, "ItemID", "ItemID", itemPriceHistory.ItemID);
            return(View(itemPriceHistory));
        }
Beispiel #2
0
        public async Task <IActionResult> Create([Bind("ItemPriceHistoryID,ItemID,Date,Price,AveragePrice")] ItemPriceHistory itemPriceHistory)
        {
            if (ModelState.IsValid)
            {
                _context.Add(itemPriceHistory);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewData["ItemID"] = new SelectList(_context.Item, "ItemID", "ItemID", itemPriceHistory.ItemID);
            return(View(itemPriceHistory));
        }
Beispiel #3
0
        public async Task <IActionResult> UpdateItemPriceHistory()
        {
            client.BaseAddress = new Uri("http://services.runescape.com/m=itemdb_rs/api/"); // API Address
            List <Item> items = db.Item.Where(x => x.ItemID > 473).ToList();

            foreach (Item i in items)
            {
                // To do: Wait here
                Thread.Sleep(5001);

                // Query API with itemID
                var response = await client.GetAsync("graph/" + i.ApiID.ToString() + ".json");                                 // Query string

                response.EnsureSuccessStatusCode();                                                                            // Ensure successful response
                var stringResult = await response.Content.ReadAsStringAsync();                                                 // Get string from JSON returned

                DataItemPriceHistory result = DataItemPriceHistory.FromJson(stringResult);                                     // Deserialize JSON string to Data Price History object

                foreach (var daily in result.Daily)                                                                            // Loop through each daily price in history
                {
                    var            average              = result.Average.Where(x => x.Key == daily.Key).FirstOrDefault();      // get average price for the day
                    DateTimeOffset dateTimeOffset       = DateTimeOffset.FromUnixTimeMilliseconds(Convert.ToInt64(daily.Key)); // get datetime from timestamp
                    DateTime       itemHistoryDate      = dateTimeOffset.UtcDateTime;
                    string         itemHistoryDayOfWeek = dateTimeOffset.DayOfWeek.ToString();                                 // get day of week from timestamp

                    ItemPriceHistory itemPriceHistory = new ItemPriceHistory()                                                 // create new ItemPriceHistory object
                    {
                        ItemID       = i.ItemID,
                        Date         = itemHistoryDate,
                        DailyPrice   = Convert.ToInt32(daily.Value),
                        AveragePrice = Convert.ToInt32(average.Value),
                        DayOfWeek    = itemHistoryDayOfWeek
                    };

                    int itemPriceHistoryExist = db.ItemPriceHistory.Where(x => x.ItemID == i.ItemID).Where(x => x.Date == itemHistoryDate).Count();
                    if (itemPriceHistoryExist == 0)
                    {
                        db.ItemPriceHistory.Add(itemPriceHistory);
                        db.SaveChanges();
                    }
                }
            }



            return(View());
        }