public void UpdateListing(D_Listing listing) { if (listing != null) { _listingRepository.Update(listing); } }
public void InsertListing(D_Listing listing) { if (listing != null) { _listingRepository.Insert(listing); } }
private void SetListingPostageRule(D_Listing listing) { if (listing.Item.PostageRuleID == 1) { listing.ListingPostageRuleID = 1; } else { listing.ListingPostageRuleID = 0; } _eventPublisher.Publish(new ListingPostageRuleUpdated <D_Listing>(listing)); }
private void UpdateListingPostageRule(ShippingDetailsType shippingDetails, D_Listing listing) { if (shippingDetails != null && shippingDetails.ShippingServiceOptions != null) { var shippingServiceOption = shippingDetails.ShippingServiceOptions.ToArray().FirstOrDefault(); if (shippingServiceOption != null) { if (shippingServiceOption.ShippingService == "AU_StandardDelivery") { listing.ListingPostageRuleID = 1;//FreeShipping } } } }
public ActionResult List() { var model = new ListingListViewModel(); var listingModel = new D_Listing(); model.AvailableUpdateFields = new List <string>(); model.AvailableUpdateFields.Add(listingModel.nameof(l => l.ListingInventoryQty)); model.AvailableUpdateFields.Add(listingModel.nameof(l => l.ListingPrice)); //model.AvailableUpdateFields.Add(listingModel.nameof(l => l.ListingDescription)); model.AvailableUpdateFields.Add(listingModel.nameof(l => l.ListingPostageRule)); model.AvailableListingChannels = new SelectList(_workContext.CurrentUser.ListingChannels.Select(c => new { ID = c.ID, Name = c.Name }), "ID", "Name").ToList(); return(View(model)); }
public void SetListingPrice(D_Listing listing, decimal newPrice) { listing.ListingPrice = newPrice; _eventPublisher.Publish(new ListingPriceUpdated <D_Listing>(listing)); }
public void DeleteListing(D_Listing listing) { throw new NotImplementedException(); }
public bool SyncLocalListingByChannel(int listingChannelID) { try { //get local listing var localListing = GetListingByChannelID(listingChannelID, false); //get local item var localItem = _itemService.GetAllItems(); //get ebay active listing var request = new GeteBaySellerListBySKUsRequest() { SellerID = GetListingChannelByID(listingChannelID).Ref1, SKUs = localItem.Select(s => s.SKU).ToList() }; var activeListing = _eBayAPICallManager.GeteBaySellerListBySKUs(request); //check if there is same sku in active online listing //var countSKU=activeListing.GroupBy(i=>i.SKU).Where(g=>g.Count()>1).Count(); //if(countSKU>1) // throw new Exception("Online Listing SKU Duplicated"); //var countSKU = activeListing.GroupBy(i => i.SKU).Where(g => g.Count() > 1); //whether ebay listing match local listing(sku, itemID), update local listing with ebay item, if local item is disable, set online listing qty=0 //whether ebay listing match local listing(sku, itemID), if sku is equal but itemID not, then update item id and local listing; //if cannot find local listing by sku but can find in item, then add local listing and link with item; //if local listing not in active listing list, then disable the local listing //if ebay listing sku not in local listing or item, then ignore var createTime = DateTime.Now; var createBy = Constants.SystemUser; #region UPDATE:whether ebay listing match local listing(sku, itemID), update local listing with ebay item, if local item is disable, set online listing qty=0 var updateInfoList = from al in activeListing join ll in localListing on new { sku = al.SKU.ToUpper(), itemid = al.ItemID } equals new { sku = ll.ListingSKU.ToUpper(), itemid = ll.ListingID } select new { ll.ID, al.ItemID, al.SKU, Price = Convert.ToDecimal(al.SellingStatus.CurrentPrice.Value), Qty = al.Quantity - al.SellingStatus.QuantitySold, ShippingDetails = al.ShippingDetails }; foreach (var updateMatch in updateInfoList) { var localListingItem = localListing.FirstOrDefault(ll => ll.ID == updateMatch.ID); if (localListingItem != null) { localListingItem.ListingInventoryQty = updateMatch.Qty; localListingItem.ListingPrice = updateMatch.Price; UpdateListingPostageRule(updateMatch.ShippingDetails, localListingItem); localListingItem.LastUpdateTime = createTime; _listingRepository.Update(localListingItem, l => l.ListingInventoryQty, l => l.ListingPrice, l => l.ListingPostageRuleID, l => l.LastUpdateTime); } } //var matchList = from al in activeListing // from ll in localListing // where al.SKU.Equals(ll.ListingSKU) && al.ItemID.Equals(ll.ListingID) // select new { // ll.ID, // al.ItemID, // al.SKU, // al.QuantityAvailable // }; #endregion #region DELETE: if local listing not in active listing list, then disable the local listing //var disableLocalListing = from ll in localListing // where ll.ListingStatusID == 3 // && !activeListing.Select(l => l.SKU.ToUpper()).Contains(ll.ListingSKU.ToUpper()) // select ll; var disableLocalListing = from ll in localListing where ll.ListingStatusID == 3 && !activeListing.Any(al => al.SKU == ll.ListingSKU && al.ItemID == ll.ListingID) select ll; foreach (var dl in disableLocalListing) { dl.ListingStatusID = 4; dl.LastUpdateTime = createTime; _listingRepository.Update(dl, l => l.ListingStatusID, l => l.LastUpdateTime); } #endregion #region ADD: if cannot find local listing by sku but can find in item, then add local listing and link with item; var addListingList = from al in activeListing join li in localItem on al.SKU.ToUpper() equals li.SKU.ToUpper() into g from alli in g.DefaultIfEmpty() //where !localListing.Select(ll => ll.ListingSKU.ToUpper()).Contains(al.SKU.ToUpper()) where !localListing.Any(ll => ll.ListingSKU == al.SKU && ll.ListingID == al.ItemID) select new { ItemID = (alli.ID == null?0:alli.ID), ListingChannelID = listingChannelID, ListingID = al.ItemID, ListingSKU = al.SKU.ToUpper(), ListingTitle = al.Title, ListingDescription = al.Description, ListingPrice = Convert.ToDecimal(al.SellingStatus.CurrentPrice.Value), ListingInventory = al.Quantity - al.SellingStatus.QuantitySold, ShippingDetails = al.ShippingDetails, LastUpdateTime = DateTime.Now }; foreach (var addListing in addListingList) { var newLocalListing = new D_Listing(); newLocalListing.ItemID = addListing.ItemID; newLocalListing.ListingChannelID = addListing.ListingChannelID; newLocalListing.ListingID = addListing.ListingID; newLocalListing.ListingSKU = addListing.ListingSKU; newLocalListing.ListingTitle = addListing.ListingTitle; newLocalListing.ListingDescription = addListing.ListingDescription; newLocalListing.ListingPrice = addListing.ListingPrice; newLocalListing.ListingInventoryQty = addListing.ListingInventory; newLocalListing.ListingStatusID = 3; //TODO: get active lising status ID in status list newLocalListing.ListingPriceRuleID = 1; //TODO: Default price rule ID newLocalListing.ListingInventoryQtyRuleID = 2; //TODO: Default inventory qty rule ID UpdateListingPostageRule(addListing.ShippingDetails, newLocalListing); newLocalListing.LastUpdateTime = createTime; newLocalListing.CreateTime = createTime; newLocalListing.CreateBy = createBy; newLocalListing.EditTime = createTime; newLocalListing.EditBy = createBy; newLocalListing.FillOutNull(); _listingRepository.Insert(newLocalListing); } #endregion //#region whether ebay listing match local listing(sku, itemID), if sku is equal but itemID not, then update item id and local listing; //var updateInfoItemIDList = from al in activeListing // join ll in localListing on al.SKU.ToUpper() equals ll.ListingSKU.ToUpper() // where al.ItemID != ll.ListingID // select new { // ll.ID, // al.ItemID, // al.SKU, // Qty = al.Quantity - al.SellingStatus.QuantitySold // }; //foreach (var updateMatch in updateInfoItemIDList) //{ // var localListingItem = localListing.FirstOrDefault(ll => ll.ID == updateMatch.ID); // if (localListingItem != null) // { // localListingItem.ListingID = updateMatch.ItemID; // localListingItem.ListingInventoryQty = updateMatch.Qty; // _listingRepository.Update(localListingItem,l=>l.ListingID, l => l.ListingInventoryQty); // } //} //#endregion return(true); } catch (Exception ex) { LogManager.Instance.Error(ex.Message); return(false); } }
public bool SyncOnlineListing(D_Listing listing) { var lstLising = listing.ToEnumerable().ToList(); return(SyncOnlineListing(lstLising)); }
//Item public static ListingGridViewModel ToModel(this D_Listing entity) { return(entity.MapTo <D_Listing, ListingGridViewModel>()); }