public async Task <ActionResult <PriceSearch> > PostPriceSearch(PriceSearch priceSearch) { _context.PriceSearchs.Add(priceSearch); await _context.SaveChangesAsync(); return(CreatedAtAction("GetPriceSearch", new { id = priceSearch.Id }, priceSearch)); }
public async Task <IActionResult> PutPriceSearch(int id, PriceSearch priceSearch) { if (id != priceSearch.Id) { return(BadRequest()); } _context.Entry(priceSearch).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PriceSearchExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
protected override IList <ApiMessage> ProcessResponseForTask(string response) { PriceSearchDto priceSearchDto = JsonConvert.DeserializeObject <PriceSearchDto>(response); IList <ApiMessage> messages = new List <ApiMessage>(); int itemCount = 0; try { foreach (PriceSearchResultItemDto resultItem in priceSearchDto.ResultItems) { if (resultItem.Urls != null) { foreach (PriceSearchUrlDto url in resultItem.Urls) { try { PriceSearch priceSearch = new PriceSearch(); if (url.LastChecked == "-") { priceSearch.EAN = resultItem.EAN; priceSearch.LowestPrice = resultItem.LowestPrice; priceSearch.BaseUrl = url.BaseUrl; priceSearch.Price = url.Price; priceSearch.Url = url.Url; priceSearch.LastChecked = DateTime.Parse("2000-01-01 00:00:00"); } else { priceSearch.EAN = resultItem.EAN; priceSearch.LowestPrice = resultItem.LowestPrice; priceSearch.BaseUrl = url.BaseUrl; priceSearch.Price = url.Price; priceSearch.Url = url.Url; priceSearch.LastChecked = DateTime.Parse(url.LastChecked); } priceSearchRepository.Insert(priceSearch); ++itemCount; } catch (Exception ex) { messages.Add(new ApiMessage() { Code = 401, Description = "Error in url: " + resultItem.EAN + ": " + ex.Message }); } } } } } catch (Exception ex) { messages.Add(new ApiMessage() { Code = 401, Description = "Error in (ProcessResponseForTask): " + ex.Message }); } if (messages.Count > 0) { return(messages); } else { messages.Add(new ApiMessage() { Code = 200, Description = itemCount + " items processed" }); return(messages); } }
public void Test_Find() { var dateStamp = DateTime.Now; #region Arrange var tmpArticle = new ArticleConnector().Create(new Article() { Description = "TmpArticle", PurchasePrice = 10 }); var tmpPriceList = new PriceListConnector().Get("TST_PR"); #endregion Arrange IPriceConnector connector = new PriceConnector(); var newPrice = new Price() { ArticleNumber = tmpArticle.ArticleNumber, PriceList = tmpPriceList.Code, PriceValue = 100, FromQuantity = 0 }; //Add entries for (var i = 0; i < 5; i++) { newPrice.PriceValue -= 10; newPrice.FromQuantity += 10; connector.Create(newPrice); } var searchSettings = new PriceSearch(); searchSettings.LastModified = dateStamp.AddSeconds(-1); var fullCollection = connector.Find(tmpPriceList.Code, tmpArticle.ArticleNumber, searchSettings); Assert.AreEqual(5 + 1, fullCollection.TotalResources); Assert.AreEqual(5 + 1, fullCollection.Entities.Count); Assert.AreEqual(1, fullCollection.TotalPages); Assert.AreEqual("TST_PR", fullCollection.Entities.First().PriceList); //Apply Limit searchSettings.Limit = 2; var limitedCollection = connector.Find(tmpPriceList.Code, tmpArticle.ArticleNumber, searchSettings); Assert.AreEqual(5 + 1, limitedCollection.TotalResources); Assert.AreEqual(2, limitedCollection.Entities.Count); Assert.AreEqual(3, limitedCollection.TotalPages); //Delete entries foreach (var entry in fullCollection.Entities) { if (entry.FromQuantity == 0) { continue; //base price } connector.Delete(entry.PriceList, entry.ArticleNumber, entry.FromQuantity); } #region Delete arranged resources new ArticleConnector().Delete(tmpArticle.ArticleNumber); #endregion Delete arranged resources }
public async Task Test_Find() { #region Arrange var tmpArticleA = await FortnoxClient.ArticleConnector.CreateAsync(new Article() { Description = "TmpArticleA", PurchasePrice = 10 }); var tmpArticleB = await FortnoxClient.ArticleConnector.CreateAsync(new Article() { Description = "TmpArticleB", PurchasePrice = 10 }); var tmpPriceList = await FortnoxClient.PriceListConnector.GetAsync("TST_PR"); #endregion Arrange var connector = FortnoxClient.PriceConnector; var newPrice = new Price() { PriceList = tmpPriceList.Code, PriceValue = 100, FromQuantity = 0 }; //Add entries for article A for (var i = 0; i < 5; i++) { newPrice.ArticleNumber = tmpArticleA.ArticleNumber; newPrice.PriceValue -= 10; newPrice.FromQuantity += 10; await connector.CreateAsync(newPrice); } //Add entries for article B for (var i = 0; i < 5; i++) { newPrice.ArticleNumber = tmpArticleB.ArticleNumber; newPrice.PriceValue -= 10; newPrice.FromQuantity += 10; await connector.CreateAsync(newPrice); } var searchSettings = new PriceSearch(); searchSettings.LastModified = TestUtils.Recently; var fullCollection = await connector.FindAsync(searchSettings); Assert.AreEqual((5 + 1) * 2, fullCollection.TotalResources); Assert.AreEqual((5 + 1) * 2, fullCollection.Entities.Count); Assert.AreEqual(1, fullCollection.TotalPages); Assert.AreEqual(5 + 1, fullCollection.Entities.Count(p => p.ArticleNumber == tmpArticleA.ArticleNumber)); Assert.AreEqual(5 + 1, fullCollection.Entities.Count(p => p.ArticleNumber == tmpArticleB.ArticleNumber)); Assert.AreEqual("TST_PR", fullCollection.Entities.First().PriceList); //Apply Limit searchSettings.Limit = 2; var limitedCollection = await connector.FindAsync(searchSettings); Assert.AreEqual((5 + 1) * 2, limitedCollection.TotalResources); Assert.AreEqual(2, limitedCollection.Entities.Count); Assert.AreEqual(6, limitedCollection.TotalPages); //Delete entries foreach (var entry in fullCollection.Entities) { if (entry.FromQuantity == 0) { continue; //base price } await connector.DeleteAsync(entry.PriceList, entry.ArticleNumber, entry.FromQuantity); } #region Delete arranged resources await FortnoxClient.ArticleConnector.DeleteAsync(tmpArticleA.ArticleNumber); await FortnoxClient.ArticleConnector.DeleteAsync(tmpArticleB.ArticleNumber); #endregion Delete arranged resources }