Пример #1
0
        public async Task <ActionResult <PriceSearch> > PostPriceSearch(PriceSearch priceSearch)
        {
            _context.PriceSearchs.Add(priceSearch);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetPriceSearch", new { id = priceSearch.Id }, priceSearch));
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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
        }
Пример #5
0
    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
    }