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;
        }
Esempio n. 2
0
        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 }));
        }
Esempio n. 3
0
        public Listing RemoveListingEntity(ListingDTO listingDTO)
        {
            Listing listing = new Listing();

            listing = listingRepo.GetListingById(listingDTO.Id);
            return(listing);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 6
0
        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));
            }
        }
Esempio n. 8
0
        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);
            }
        }