public ListingPriceEditViewModel(ListingDTO listing) { ListingId = listing.Id; Market = (MarketType)listing.Market; MarketplaceId = listing.MarketplaceId; //ListingId = listing.ListingId; OnHold = listing.OnHold; IsFBA = listing.IsFBA; IsPrime = listing.IsPrime; Weight = listing.Weight; SKU = listing.SKU; ASIN = listing.ASIN; ParentASIN = listing.ParentASIN; SourceMarketId = listing.SourceMarketId; StyleSize = listing.StyleSize; StyleColor = listing.StyleColor; ListingSize = listing.ListingSize; ListingColor = listing.ListingColor; Price = listing.Price; LowestPrice = listing.LowestPrice; LowestPriceUpdateDate = listing.LowestPriceUpdateDate; }
public async Task <ActionResult> RemoveListing(int listingId) { HttpResponseMessage responseMessage = await client.GetAsync(apiUrl + "/GetListing/" + listingId); string responseData = responseMessage.Content.ReadAsStringAsync().Result; ListingDetailDTO listing = JsonConvert.DeserializeObject <ListingDetailDTO>(responseData); ClaimsIdentity identity = (ClaimsIdentity)User.Identity; responseMessage = await client.GetAsync("http://localhost:58999/API/user/GetUser/" + int.Parse(identity.FindFirst(ClaimTypes.NameIdentifier).Value)); responseData = responseMessage.Content.ReadAsStringAsync().Result; UserDTO user = JsonConvert.DeserializeObject <UserDTO>(responseData); ListingDTO listingToDelete = new ListingDTO(); listingToDelete = listing; listingToDelete.Id = listingId; listingToDelete.User = user; string content = JsonConvert.SerializeObject(listingToDelete); Byte[] buffer = System.Text.Encoding.UTF8.GetBytes(content); ByteArrayContent byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); await client.PostAsync(apiUrl + "/RemoveListing", byteContent); ClaimsPrincipal prinicpal = (ClaimsPrincipal)Thread.CurrentPrincipal; string userId = prinicpal.Claims.Where(c => c.Type == ClaimTypes.NameIdentifier).Select(c => c.Value).SingleOrDefault(); return(RedirectToAction("Detail", "User", new { id = userId })); }
public Listing RemoveListingEntity(ListingDTO listingDTO) { Listing listing = new Listing(); listing = listingRepo.GetListingById(listingDTO.Id); return(listing); }
public ListingQuantityViewModel(ListingDTO listing) { Id = listing.Id; Market = (MarketType)listing.Market; MarketplaceId = listing.MarketplaceId; ListingId = listing.ListingId; OnHold = listing.OnHold; RestockDate = listing.RestockDate; ItemPicture = listing.ItemPicture; IsFBA = listing.IsFBA; SKU = listing.SKU; ItemId = listing.ItemId; ASIN = listing.ASIN; ParentASIN = listing.ParentASIN; SourceMarketId = listing.SourceMarketId; StyleSize = listing.StyleSize; StyleColor = listing.StyleColor; ListingSize = listing.ListingSize; ListingColor = listing.ListingColor; Quantity = listing.Quantity; DisplayQuantity = listing.DisplayQuantity; Price = listing.Price; Rank = listing.Rank; }
public async Task <IHttpActionResult> PostListing(Listing listing) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } listing.ListingCreatedDateTime = listing.ListingLastUpdatedDateTime = DateTime.Now; db.Listings.Add(listing); await db.SaveChangesAsync(); //load agent name db.Entry(listing).Reference(x => x.Agent).Load(); var listingDTO = new ListingDTO() { ListingId = listing.ListingId, ListingName = listing.ListingName, ListingAddress = listing.ListingAddress, AgentId = listing.AgentId, AgentName = listing.Agent.AgentName }; return(CreatedAtRoute("DefaultApi", new { id = listing.ListingId }, listingDTO)); }
public HttpResponseMessage RemoveListing(ListingDTO listingDTO) { Listing listingToRemove = mapper.RemoveListingEntity(listingDTO); var response = Request.CreateResponse <ListingDetailDTO>(HttpStatusCode.Created, mapper.CreateListingDetailDTO(listingToRemove)); string uri = Url.Link("DefaultApi", new { id = listingToRemove.Id }); response.Headers.Location = new Uri(uri); listingRepo.RemoveListing(listingToRemove); return(response); }
public ActionResult <ListingDTO> AddListing(ListingDTO ldto) { var owner = GetOwner(); try{ Animal an = _aRepo.GetAnimal(ldto.AnimalID); if (an == null) { throw new Exception("The specified animal could not be found"); } if (an.Owner != owner) { throw new InvalidListingException("You can't put up someone elses animal for sale or breeding."); } if (_listingRepo.AnimalIsInListing(an)) { throw new InvalidListingException("This animal is already in a listing"); } Listing listing; if (ldto.BreedAmount == 0 && ldto.AdoptAmount == 0) { listing = new Listing(an, ldto.IsAdoptable, ldto.IsBreedable); } else { listing = new Listing(an, ldto.IsAdoptable, ldto.IsBreedable , ldto.AdoptAmount, ldto.BreedAmount); } _listingRepo.AddListing(listing); _listingRepo.SaveChanges(); var list = _listingRepo.GetListingWithID(listing.ID); return(CreatedAtAction(nameof(GetListingWithID), new { id = listing.ID } , new ListingDTO(list))); }catch (Exception e) { ModelState.AddModelError("Error", e.Message); return(BadRequest(ModelState)); } }
public void BuildReportMissingSizesOnAmazon() { List <string> asinWithErrors; //var amazonParentItem = _amazonApi.GetItems(_log, _time, new List<string>() { "B01NCKLUGM" }, ItemFillMode.Defualt, out asinWithErrors); using (var db = _dbFactory.GetRWDb()) { var allParentItems = db.ParentItems .GetAllAsDto(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId) .Where(pi => !String.IsNullOrEmpty(pi.ASIN)) .ToList(); var allChildItems = db.Items.GetAllViewAsDto(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId).ToList(); var allSizesQuery = from s in db.Styles.GetAll() join si in db.StyleItems.GetAll() on s.Id equals si.StyleId join sic in db.StyleItemCaches.GetAll() on si.Id equals sic.Id where !s.Deleted && sic.RemainingQuantity > 0 select new { StyleId = s.Id, StyleString = s.StyleID, StyleItemId = si.Id, StyleSize = si.Size, RemainingQuantity = sic.RemainingQuantity, }; var allStyleSizes = allSizesQuery.ToList(); var results = new List <ItemDTO>(); foreach (var parentItem in allParentItems) { var childItems = allChildItems.Where(ch => ch.ParentASIN == parentItem.ASIN).ToList(); var parentItemStyleIdList = childItems.Where(ch => ch.StyleId.HasValue).Select(ch => ch.StyleId.Value).ToList(); var parentItemStyleItemIdList = childItems.Where(ch => ch.StyleItemId.HasValue).Select(ch => ch.StyleItemId.Value).ToList(); var styleStyleItemList = allStyleSizes.Where(si => parentItemStyleIdList.Contains(si.StyleId)).ToList(); var missingStyleItemList = styleStyleItemList.Where(si => !parentItemStyleItemIdList.Contains(si.StyleItemId)).ToList(); if (missingStyleItemList.Any()) { _log.Info(parentItem.ASIN + " may has missing sizes"); var amazonParentItem = RetryHelper.ActionWithRetries(() => _amazonApi.GetProductForASIN(new List <string>() { parentItem.ASIN }).FirstOrDefault(), _log, 3, 5000, RetryModeType.Normal); if (amazonParentItem != null && amazonParentItem.Listings != null) { var amazonChildItems = amazonParentItem.Listings; foreach (var missingStyleItem in missingStyleItemList) { var possibleSizes = db.SizeMappings.GetAllAsDto() .Where(m => m.StyleSize == missingStyleItem.StyleSize) .ToList(); possibleSizes.Insert(0, new SizeMappingDTO() { StyleSize = missingStyleItem.StyleSize, ItemSize = missingStyleItem.StyleSize }); ListingDTO existChildItem = null; var existChildItems = amazonChildItems.Where(ai => possibleSizes.Any(s => s.ItemSize == ai.ListingSize)).ToList(); if (existChildItems.Any() && existChildItems.All(ch => !String.IsNullOrEmpty(ch.ListingColor))) { var missingStyleItemColor = childItems.FirstOrDefault(ch => ch.StyleId == missingStyleItem.StyleId)?.Color; existChildItems = existChildItems.Where(ch => ch.ListingColor == missingStyleItemColor).ToList(); } existChildItem = existChildItems.FirstOrDefault(); if (existChildItem != null) { _log.Info("Added ParentASIN=" + parentItem.ASIN + ", styleId=" + missingStyleItem.StyleString + ", size=" + missingStyleItem.StyleSize); results.Add(new ItemDTO() { ParentASIN = parentItem.ASIN, ASIN = existChildItem.ASIN, Size = existChildItem.ListingSize, Color = existChildItem.ListingColor, SourceMarketUrl = "https://www.amazon.com/dp/" + existChildItem.ASIN, StyleString = missingStyleItem.StyleString, StyleSize = missingStyleItem.StyleSize, RemainingQuantity = missingStyleItem.RemainingQuantity }); } } } } } _log.Info("Listings with possible missing sizes: " + results.Count); var filename = "MissingItemsOnAmazon_" + DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss") + ".xls"; var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, filename); ExportMissingItem(results, filepath); } }