Exemplo n.º 1
0
 public HomeController(IElasticManager elasticManager, ICategoryManager categoryManager, IGoodManager goodManager, IPropertyManager propertyManager, IWebShopManager shopManager, IPriceManager priceManager)
 {
     this.priceManager    = priceManager;
     this.categoryManager = categoryManager;
     this.goodManager     = goodManager;
     this.propertyManager = propertyManager;
     this.shopManager     = shopManager;
     this.elasticManager  = elasticManager;
 }
Exemplo n.º 2
0
 public DepartureController(IDeparture departureService, ICity cityService, ICarrier carrierService, IPaymentCategory paymentCategoryService, IVehicle vehicleService, IDistance distanceService, IPriceManager priceManager)
 {
     _deparatureService      = departureService;
     _cityService            = cityService;
     _carrierService         = carrierService;
     _paymentCategoryService = paymentCategoryService;
     _vehicleService         = vehicleService;
     _distanceService        = distanceService;
     _priceService           = priceManager;
 }
Exemplo n.º 3
0
        public BusinessLogicManager()
        {
            var databaseProvider = new DatabaseProvider();

            this.customerManager = new CustomerManager(databaseProvider);
            this.petPackManager  = new PetPackManager(databaseProvider);
            this.petWalkManager  = new PetWalkManager(databaseProvider);
            this.petManager      = new PetManager(databaseProvider);
            this.priceManager    = new PriceManager(databaseProvider);
        }
Exemplo n.º 4
0
        static void Main()
        {
            // NOTE: in "real" world would likely use a base class for access to the
            // manager locator similar to ManagerBase
            IManagerLocator managerLocator = new ManagerLocator();
            IPriceManager   priceManager   = managerLocator.CreateManager <IPriceManager>();

            priceManager.ProcessPriceUpdates("B00007E7JU");

            Console.ReadLine();
        }
Exemplo n.º 5
0
 public BusinessLogicManager(ICustomerManager customerManager
                             , IPetPackManager petPackManager
                             , IPetWalkManager petWalkManager
                             , IPetManager petManager
                             , IPriceManager priceManager)
 {
     this.customerManager = customerManager;
     this.petPackManager  = petPackManager;
     this.petWalkManager  = petWalkManager;
     this.petManager      = petManager;
     this.priceManager    = priceManager;
 }
 public CatalogViewModel(
         IPackageManager packageManager,
     IProductManager productManager,
     IProducerManager producerManager,
     ICategoryManager categoryManager,
     IMeasureManager measureManager,
     IPriceManager priceManager
     )
 {
     _packageManager = packageManager;
     _productManager = productManager;
     _producerManager = producerManager;
     _categoryManager = categoryManager;
     _measureManager = measureManager;
     _priceManager = priceManager;
 }
 public OICatalogViewModel(
         IOrderItemManager orderItemManager,
         IOrderManager orderManager,
         IPackageManager packageManager,
         IProductManager productManager,
         IPriceManager priceManager,
         ICustomerManager customerManager
     )
 {
     _orderItemManager = orderItemManager;
     _orderManager = orderManager;
     _packageManager = packageManager;
     _productManager = productManager;
     _priceManager = priceManager;
     _customerManager = customerManager;
 }
Exemplo n.º 8
0
        /// <summary>
        /// Inicializa una intancia de <see cref="TicketManager"/>
        /// </summary>
        /// <param name="seatManager">Instancia de <see cref="ISeatManager"/></param>
        /// <param name="priceManager">Instancia de <see cref="IPriceManager"/></param>
        /// <param name="dataContext">Instancia de <see cref="IDataContext"/></param>
        public TicketManager(ISeatManager seatManager, IPriceManager priceManager, IDataContext dataContext)
        {
            if (seatManager == null)
            {
                throw new ArgumentNullException("seatManager");
            }
            if (priceManager == null)
            {
                throw new ArgumentNullException("priceManager");
            }
            if (dataContext == null)
            {
                throw new ArgumentNullException("dataContext");
            }

            SeatManager  = seatManager;
            PriceManager = priceManager;
            DataContext  = dataContext;
        }
Exemplo n.º 9
0
        public SocketServiceManager(IUserManager userManager,
                                    IAlertManager alertManager,
                                    ISubscriptionManager subscriptionManager,
                                    ISymbolManager symbolManager,
                                    IPriceManager priceManager)
        {
            _userManager         = userManager;
            _alertManager        = alertManager;
            _subscriptionManager = subscriptionManager;
            _symbolManager       = symbolManager;
            _priceManager        = priceManager;

            Users               = new List <UserModel>();
            Symbols             = new List <SymbolModel>();
            Prices              = new List <PriceModel>();
            SymbolSubscriptions = new List <SubscriptionModel>();
            SymbolAlerts        = new List <AlertModel>();
            SymbolSockets       = new Dictionary <string, WebSocket>();
        }
        public void Update(IUnitOfWork db,
                           ILogService log,
                           ISystemActionService actionService,
                           IPriceManager priceManager,
                           MarketType market,
                           string marketplaceId,
                           DateTime when,
                           long?by)
        {
            var parentItem = db.ParentItems.Get(Id);

            if (parentItem != null)
            {
                var childItems = db.Items.GetListingsByParentASIN(market, marketplaceId, parentItem.ASIN);

                if (ChangePriceOffset.HasValue)
                {
                    foreach (var childItem in childItems)
                    {
                        log.Info("Child price was changed, from=" + childItem.CurrentPrice + ", to=" +
                                 (childItem.CurrentPrice + ChangePriceOffset.Value));

                        var oldPrice = childItem.CurrentPrice;
                        childItem.CurrentPrice        += ChangePriceOffset.Value;
                        childItem.CurrentPriceInUSD    = PriceHelper.RougeConvertToUSD(childItem.CurrentPriceCurrency, childItem.CurrentPrice);
                        childItem.PriceUpdateRequested = true;

                        priceManager.LogListingPrice(db,
                                                     PriceChangeSourceType.ParentItemOffset,
                                                     childItem.Id,
                                                     childItem.SKU,
                                                     childItem.CurrentPrice,
                                                     oldPrice,
                                                     when,
                                                     by);
                    }
                    db.Commit();
                }

                parentItem.SKU              = SKU;
                parentItem.OnHold           = OnHold;
                parentItem.LockMarketUpdate = LockMarketUpdate;

                if (parentItem.ManualImage != ManualImage)
                {
                    log.Info("Image changed: " + parentItem.ManualImage + " => " + ManualImage);
                    parentItem.ManualImage = ManualImage;

                    if (!MarketHelper.IsAmazon((MarketType)parentItem.Market))
                    {
                        foreach (var child in childItems)
                        {
                            var newAction = new SystemActionDTO()
                            {
                                ParentId  = null,
                                Status    = (int)SystemActionStatus.None,
                                Type      = (int)SystemActionType.UpdateOnMarketProductImage,
                                Tag       = child.Id.ToString(),
                                InputData = null,

                                CreateDate = when,
                                CreatedBy  = null,
                            };
                            db.SystemActions.AddAction(newAction);
                        }
                    }
                }

                parentItem.UpdateDate = when;
                parentItem.UpdatedBy  = by;

                db.Commit();

                var lastComment = db.ProductComments.UpdateComments(
                    Comments.Select(c => new CommentDTO()
                {
                    Id      = c.Id,
                    Message = c.Comment
                }).ToList(),
                    Id,
                    when,
                    by);

                Comment = lastComment != null ? lastComment.Message : "";
            }
        }
Exemplo n.º 11
0
        public void Update(IUnitOfWork db,
                           ILogService log,
                           IPriceManager priceManager,
                           IStyleHistoryService styleHistoryService,
                           DateTime when,
                           long?by)
        {
            log.Info("ItemViewModel.Update begin");
            var item    = db.Items.GetAll().FirstOrDefault(i => i.Id == ItemId);
            var listing = db.Listings.GetFiltered(l => l.Id == ListingEntityId).FirstOrDefault();

            if (item != null)
            {
                if (listing != null && !listing.IsFBA)
                {
                    //NOTE: only when we have in DB empty Parent ASIN and came not empty update them. Then create Parent ASIN if not exist
                    if (String.IsNullOrEmpty(item.ParentASIN) && !String.IsNullOrEmpty(ParentASIN))
                    {
                        item.ParentASIN = ParentASIN;

                        db.ParentItems.FindOrCreateForItem(item, when);
                    }

                    log.Info("Item Before: " + item);
                    item.Barcode = Barcode;

                    var style      = db.Styles.GetActiveByStyleIdAsDto(StyleString);
                    var newStyleId = style != null ? style.Id : (long?)null;
                    if (item.StyleId != newStyleId)
                    {
                        if (newStyleId.HasValue)
                        {
                            styleHistoryService.AddRecord(newStyleId.Value,
                                                          StyleHistoryHelper.AttachListingKey,
                                                          item.StyleItemId,
                                                          item.Market + ":" + item.MarketplaceId,
                                                          StyleItemId,
                                                          item.Id.ToString() + ":" + item.ASIN,
                                                          null);
                        }

                        if (item.StyleId.HasValue)
                        {
                            styleHistoryService.AddRecord(item.StyleId.Value,
                                                          StyleHistoryHelper.DetachListingKey,
                                                          item.StyleItemId,
                                                          item.Market + ":" + item.MarketplaceId,
                                                          StyleItemId,
                                                          item.Id.ToString(),
                                                          null);
                        }
                    }

                    item.StyleString = StyleString;
                    item.StyleId     = newStyleId;
                    item.StyleItemId = StyleItemId;

                    item.UseStyleImage = UseStyleImage;

                    item.UpdateDate = when;
                    item.UpdatedBy  = by;
                    log.Info("Item After: " + item);
                }
            }

            if (listing != null)
            {
                log.Info("Listing Before: " + listing);

                listing.IsPrime = IsPrime;

                if (listing.CurrentPrice != ItemCurrentPrice)
                {
                    var oldPrice = listing.CurrentPrice;

                    listing.PriceUpdateRequested = true;
                    listing.CurrentPrice         = ItemCurrentPrice;
                    listing.CurrentPriceInUSD    = PriceHelper.RougeConvertToUSD(listing.CurrentPriceCurrency, ItemCurrentPrice);

                    if (listing.IsFBA)
                    {
                        listing.AutoAdjustedPrice = null;
                    }

                    if (listing.BusinessPrice.HasValue)
                    {
                        listing.BusinessPrice = listing.CurrentPrice;
                    }

                    priceManager.LogListingPrice(db,
                                                 PriceChangeSourceType.EnterNewPrice,
                                                 listing.Id,
                                                 listing.SKU,
                                                 listing.CurrentPrice,
                                                 oldPrice,
                                                 when,
                                                 by);
                }


                //NOTE: Always force send updates to Amazon
                listing.PriceUpdateRequested = true;

                if (!listing.IsFBA)
                {
                    if (DisplayQuantity != listing.DisplayQuantity)
                    {
                        listing.QuantityUpdateRequested     = true;
                        listing.QuantityUpdateRequestedDate = when;
                        listing.DisplayQuantity             = DisplayQuantity;
                    }

                    if (listing.OnHold != OnHold)
                    {
                        listing.QuantityUpdateRequested     = true;
                        listing.QuantityUpdateRequestedDate = when;
                        listing.OnHold = OnHold;
                    }

                    //NOTE: Always force send updates to Amazon
                    listing.QuantityUpdateRequested     = true;
                    listing.QuantityUpdateRequestedDate = when;
                }

                listing.UpdateDate = when;
                listing.UpdatedBy  = by;

                log.Info("Listing After: " + listing);
            }
            db.Commit();
            log.Info("ItemViewModel.Update end");
        }
Exemplo n.º 12
0
 public HomeController(ILogger <HomeController> logger, IPriceManager priceManager)
 {
     _logger           = logger;
     this.priceManager = priceManager;
 }
Exemplo n.º 13
0
        static async Task Main(string[] args)
        {
            IStockDataService yahooService = new YahooService();

            _priceManager = new PriceManager(yahooService);

            var prices = CsvExtensions.ReadCsv(
                @"Data\\all_stocks_5yr.csv",
                new Dictionary <string, string>
            {
                { "date", "StartTime" },
                { "open", "Open" },
                { "close", "Close" },
                { "high", "High" },
                { "low", "Low" },
                { "volume", "Volume" },
                { "Name", "Symbol" }
            });

            var aalPrice = prices.Where(c => c.Symbol.Equals("AAL")).SortByStartTime();

            var open   = aalPrice.Select(c => (double)c.Open).ToArray();
            var high   = aalPrice.Select(c => (double)c.High).ToArray();
            var low    = aalPrice.Select(c => (double)c.Low).ToArray();
            var close  = aalPrice.Select(c => (double)c.Close).ToArray();
            var volume = aalPrice.Select(c => c.Volume).ToArray();

            var lstm = new Lstm(open, high, low, close, volume);

            lstm.Print();
            var scale = lstm.CalculateScale();
            var min   = lstm.CalculateMin();



            var stochasticOsc = new StochasticOsc();

            var sData = stochasticOsc.Run(GetData());

            var plt = new Plot(600, 400);

            var slow = sData.Select(c => c.SlowValue).ToArray();
            var vals = sData.Select(c => c.Value).ToArray();


            //var xs = sData.Select(p => p.StartTime.ToOADate()).ToArray();

            plt.PlotSignalXY(sData.Select(p => p.StartTime.ToOADate()).ToArray(), slow, label: "slow", color: Color.Red,
                             lineWidth: 2, lineStyle: LineStyle.Solid, markerSize: 0);
            plt.PlotSignalXY(sData.Select(p => p.StartTime.ToOADate()).ToArray(), vals, label: "fast",
                             color: Color.Black, lineWidth: 2, lineStyle: LineStyle.Solid);

            plt.Title("IBM Stochastic");
            plt.YLabel("Stochastic Unit");
            plt.XLabel("Date");
            plt.Ticks(dateTimeX: true);
            //plt.Legend();
            plt.AxisBounds(minY: 0, maxY: 100);
            plt.AxisAuto(verticalMargin: 0.01);

            plt.Add(new PlottableHLine(20, Color.Black, 1, "", false, 20, 20, LineStyle.Solid));
            plt.Add(new PlottableHLine(80, Color.Black, 1, "", false, 80, 80, LineStyle.Solid));

            plt.SaveFig("IBM Slow Stochastic Chart.png");
            return;


            //var list = stochasticService.Run(sData);

            //await TargilAsync();

            //var tickerManager = new TickerManager(yahooService, _priceManager);

            //var tickers = CsvExtensions.ReadConstituentsAsync("Data\\constituents.csv", new Dictionary<string, string>
            //{
            //    {"Symbol", "Symbol"},
            //    {"Name", "Name"},
            //    {"Sector", "Sector"},
            //}).Result;



            //var msftTicker = tickerManager.GetTickerBySymbol(tickers, "MSFT");

            //var prices = await _priceManager.GetPricesAsync(
            //    msftTicker,
            //    new DateTime(2020, 4, 13),
            //    new DateTime(2020, 6, 26),
            //    Interval.OneDay,
            //    false);



            //var offsetPercent = 1;

            //var vals = stochasticService.Run(prices);


            //var plt = new ScottPlot.Plot(600, 400);

            //plt.PlotSignal(vals.Select(c => (double)c.Value).ToArray());

            //plt.Title("Signal Plot Quickstart (5 million points)");
            //plt.YLabel("Vertical Units");
            //plt.XLabel("Horizontal Units");

            //plt.SaveFig("Quickstart_Quickstart_Signal_5MillionPoints.png");

            return;

            //var offsetPercent = 0.5;

            //var supportPoints = _priceManager.GetSupportExtremaGroups(prices, ExtremaType.Minimum, offsetPercent);

            //var p = prices.Last();
            //Console.WriteLine($"Curret value: {p.Close}");

            //Console.WriteLine("Support Points");
            //supportPoints.Print(ExtremaType.Minimum);
            //Console.WriteLine();

            //Console.WriteLine("Reject Points");
            //rejectPoints.Print(ExtremaType.Maximum);


            //var daysMomentum = _priceManager.GetDaysMomentum(prices);
            //daysMomentum.Print();
        }
Exemplo n.º 14
0
        public long Apply(IUnitOfWork db,
                          IDbFactory dbFactory,
                          ILogService log,
                          ICacheService cache,
                          IPriceManager priceManager,
                          IStyleItemHistoryService styleItemHistory,
                          ISystemActionService actionService,
                          DateTime when,
                          long?by)
        {
            var style = db.Styles.Get(StyleId);

            style.UpdateDate = when;
            style.UpdatedBy  = by;

            style.ReSaveDate = when;
            style.ReSaveBy   = by;


            var excessiveShipmentAttr = db.StyleFeatureTextValues.GetAll().FirstOrDefault(sv => sv.StyleId == style.Id &&
                                                                                          sv.FeatureId == StyleFeatureHelper.EXCESSIVE_SHIPMENT);

            if (excessiveShipmentAttr == null)
            {
                excessiveShipmentAttr = new Core.Entities.Features.StyleFeatureTextValue()
                {
                    StyleId    = StyleId,
                    CreateDate = when,
                    CreatedBy  = by,
                    FeatureId  = StyleFeatureHelper.EXCESSIVE_SHIPMENT,
                };
                db.StyleFeatureTextValues.Add(excessiveShipmentAttr);
            }
            excessiveShipmentAttr.Value = ExcessiveShipmentAmount.HasValue ? ExcessiveShipmentAmount.ToString() : null;


            var wasAnyChanges       = false;
            var wasAnyMinMaxChanges = false;

            if (Sizes != null && Sizes.Any())
            {
                var styleItems = db.StyleItems.GetFiltered(si => si.StyleId == StyleId).ToList();

                foreach (var size in Sizes)  //Update prices (marking when/by)
                {
                    var    changeType         = PriceChangeSourceType.None;
                    string tag                = null;
                    bool   wasChanged         = false;
                    var    minMaxPriceChanged = false;

                    var styleItem = styleItems.FirstOrDefault(si => si.Id == size.StyleItemId);

                    if (styleItem != null)
                    {
                        StyleItemSale sale = size.SaleId.HasValue
                            ? db.StyleItemSales
                                             .GetAll()
                                             .FirstOrDefault(s => s.Id == size.SaleId.Value)
                            : null;

                        if (sale == null) //If no sale Id remove all exist sales (Remove Sale action was performed)
                        {
                            IList <StyleItemSale> saleList = db.StyleItemSales
                                                             .GetAll()
                                                             .Where(s => s.StyleItemId == styleItem.Id &&
                                                                    !s.IsDeleted)
                                                             .ToList();

                            foreach (var toRemove in saleList)
                            {
                                log.Info("Sale mark removed, saleId=" + toRemove.Id + ", Info=" +
                                         ToStringHelper.ToString(toRemove));
                                toRemove.IsDeleted = true;
                                db.Commit();

                                styleItemHistory.AddRecord(StyleItemHistoryTypes.RemoveSale, styleItem.Id,
                                                           new HistorySaleData()
                                {
                                    SaleStartDate = toRemove.SaleStartDate,
                                    SaleEndDate   = toRemove.SaleEndDate,
                                }, by);
                            }
                        }

                        var salePrice    = size.InitSalePrice ?? size.NewSalePrice;
                        var sfpSalePrice = size.InitSFPSalePrice ?? size.NewSFPSalePrice;

                        if (salePrice.HasValue ||
                            sfpSalePrice.HasValue)
                        {
                            //Get Default markets
                            var markets = MarketPriceEditViewModel.GetForStyleItemId(db,
                                                                                     dbFactory,
                                                                                     size.StyleItemId,
                                                                                     salePrice,
                                                                                     sfpSalePrice);

                            if ((SizePriceViewModel.SizeMarketApplyModes)size.MarketMode ==
                                SizePriceViewModel.SizeMarketApplyModes.OnlyAmazonUS)
                            {
                                markets = markets.Where(m => m.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId).ToList();
                            }

                            //Save Default markets
                            if ((SizePriceViewModel.SizePriceApplyModes)size.ApplyMode ==
                                SizePriceViewModel.SizePriceApplyModes.Sale)
                            {
                                var results = MarketPriceEditViewModel.ApplySale(db,
                                                                                 log,
                                                                                 size.StyleItemId,
                                                                                 markets,
                                                                                 when,
                                                                                 by);

                                if (results.Any())
                                {
                                    var saleId = results[0].SaleId;
                                    sale = db.StyleItemSales.GetAll().FirstOrDefault(s => s.Id == saleId);
                                }
                            }
                        }


                        if ((SizePriceViewModel.SizePriceApplyModes)size.ApplyMode ==
                            SizePriceViewModel.SizePriceApplyModes.Permanent)
                        {
                            //Get Default markets
                            var markets = MarketPriceEditViewModel.GetForStyleItemId(db,
                                                                                     dbFactory,
                                                                                     size.StyleItemId,
                                                                                     salePrice,
                                                                                     sfpSalePrice);

                            if ((SizePriceViewModel.SizeMarketApplyModes)size.MarketMode ==
                                SizePriceViewModel.SizeMarketApplyModes.OnlyAmazonUS)
                            {
                                markets = markets.Where(m => m.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId).ToList();
                            }

                            //NOTE: also mark exist sale as deleted
                            MarketPriceEditViewModel.ApplyPermanent(db,
                                                                    log,
                                                                    priceManager,
                                                                    size.StyleItemId,
                                                                    markets,
                                                                    when,
                                                                    by);

                            styleItemHistory.AddRecord(StyleItemHistoryTypes.AddPermanentSale, styleItem.Id,
                                                       new HistorySaleData()
                            {
                                SalePrice = salePrice
                            }, by);
                        }

                        if (sale != null)
                        {
                            //    if (size.NewSalePrice.HasValue)
                            //    {
                            //        log.Info("Updated sale price, saleId=" + sale.Id + ", to=" + size.NewSalePrice + ", SFP=" + size.NewSFPSalePrice);
                            //        MarketPriceEditViewModel.UpdateSalePrices(db,
                            //            size.StyleItemId,
                            //            sale.Id,
                            //            size.NewSalePrice.Value,
                            //            size.NewSFPSalePrice);
                            //    }

                            sale.SaleStartDate = size.SaleStartDate;
                            sale.SaleEndDate   = size.SaleEndDate;
                            sale.MaxPiecesMode = MaxPiecesOnSale.HasValue
                                ? (int)MaxPiecesOnSaleMode.ByStyle
                                : (int)MaxPiecesOnSaleMode.BySize;
                            sale.MaxPiecesOnSale = size.MaxPiecesOnSale ?? MaxPiecesOnSale;

                            db.Commit();

                            styleItemHistory.AddRecord(StyleItemHistoryTypes.AddSale, styleItem.Id,
                                                       new HistorySaleData()
                            {
                                SalePrice     = size.NewSalePrice,
                                SaleStartDate = size.SaleStartDate,
                                SaleEndDate   = size.SaleEndDate
                            }, by);
                        }

                        minMaxPriceChanged = styleItem.MinPrice != size.MinPrice ||
                                             styleItem.MaxPrice != size.MaxPrice;

                        if (minMaxPriceChanged)
                        {
                            styleItem.MinPrice = size.MinPrice;
                            styleItem.MaxPrice = size.MaxPrice;
                            db.Commit();
                        }

                        wasAnyMinMaxChanges = wasAnyMinMaxChanges || minMaxPriceChanged;
                    }
                }

                //NOTE: update all listing, ex. change price, start/end date, e.t.c.
                var styleListingIds = db.Listings.GetViewListingsAsDto(true)
                                      .Where(l => l.StyleId == StyleId)
                                      .Select(l => l.Id)
                                      .ToList();
                var dbListings = db.Listings.GetAll().Where(l => styleListingIds.Contains(l.Id)).ToList();
                foreach (var dbListing in dbListings)
                {
                    dbListing.PriceUpdateRequested = true;
                    if (wasAnyMinMaxChanges)
                    {
                        actionService.AddAction(db,
                                                SystemActionType.UpdateOnMarketProductPriceRule,
                                                dbListing.SKU,
                                                null,
                                                null,
                                                by);
                    }
                }
                db.Commit();
            }

            cache.RequestStyleIdUpdates(db,
                                        new List <long> {
                StyleId
            },
                                        UpdateCacheMode.IncludeChild,
                                        AccessManager.UserId);

            return(StyleId);
        }
Exemplo n.º 15
0
        public static void ApplyPermanent(IUnitOfWork db,
                                          ILogService log,
                                          IPriceManager priceManager,
                                          long styleItemId,
                                          IList <MarketPriceEditViewModel> markets,
                                          DateTime when,
                                          long?by)
        {
            var sale = db.StyleItemSales.GetAllAsDto().FirstOrDefault(s => s.StyleItemId == styleItemId &&
                                                                      !s.IsDeleted);

            if (sale != null)
            {
                var dbSale = db.StyleItemSales.Get(sale.Id);
                dbSale.IsDeleted = true;
                db.Commit();
            }

            foreach (var market in markets)
            {
                if (market.Listings != null &&
                    (market.SalePrice.HasValue ||
                     market.SFPSalePrice.HasValue))
                {
                    foreach (var listing in market.Listings.Where(l => l.IsChecked).ToList())
                    {
                        var salePrice = listing.OverrideSalePrice ?? market.SalePrice.Value;

                        var dbListing = db.Listings.Get(listing.ListingId);
                        if (dbListing != null)
                        {
                            //var newSalePrice = market.SalePrice.Value;
                            //NOTE: moved to SalePrice/OverrideSalePrice calculation
                            //if (dbListing.IsPrime && market.Market == MarketType.Amazon)
                            //{
                            //    var item = db.Items.Get(dbListing.ItemId);

                            //    var isOversizeTemplate = item.OnMarketTemplateName == AmazonTemplateHelper.OversizeTemplate;
                            //    if (market.SFPSalePrice.HasValue)
                            //        newSalePrice = market.SFPSalePrice.Value + (isOversizeTemplate ? 2 : 0);
                            //    else
                            //        newSalePrice = PriceHelper.RoundToFloor99(isOversizeTemplate ? (newSalePrice + 9.49M) : (newSalePrice + 7.49M));
                            //}
                            log.Info("Price updated, " + dbListing.Market + " - " + dbListing.MarketplaceId + ", from=" + dbListing.CurrentPrice + " => " + salePrice);


                            priceManager.LogListingPrice(db,
                                                         PriceChangeSourceType.EnterNewPrice,
                                                         dbListing.Id,
                                                         dbListing.SKU,
                                                         salePrice,
                                                         dbListing.CurrentPrice,
                                                         when,
                                                         by);

                            dbListing.CurrentPrice         = salePrice;
                            dbListing.PriceUpdateRequested = true;
                        }
                    }
                }
            }
            db.Commit();
        }
Exemplo n.º 16
0
        public void Setup()
        {
            Database.SetInitializer <AmazonContext>(null);
            XmlConfigurator.Configure(new FileInfo(AppSettings.log4net_Config));

            _dbFactory = new DbFactory();
            _time      = new TimeService(_dbFactory);
            _settings  = new SettingsService(_dbFactory);

            _styleHistoryService = new StyleHistoryService(_log, _time, _dbFactory);
            _styleManager        = new StyleManager(_log, _time, _styleHistoryService);
            _actionService       = new SystemActionService(_log, _time);
            _quantityManager     = new QuantityManager(_log, _time);
            _priceManager        = new PriceManager(_log, _time, _dbFactory, _actionService, _settings);
            _cacheService        = new CacheService(_log, _time, _actionService, _quantityManager);
            _barcodeService      = new BarcodeService(_log, _time, _dbFactory);
            _weightService       = new WeightService();

            IEmailSmtpSettings smtpSettings = new EmailSmtpSettings();

            using (var db = new UnitOfWork())
            {
                _company = db.Companies.GetFirstWithSettingsAsDto();

                if (AppSettings.IsDebug)
                {
                    smtpSettings = SettingsBuilder.GetSmtpSettingsFromAppSettings();
                }
                else
                {
                    smtpSettings = SettingsBuilder.GetSmtpSettingsFromCompany(_company);
                }

                _addressService = AddressService.Default;
                _emailService   = new EmailService(_log, smtpSettings, _addressService);

                //todo check itemHist
                _autoCreateNonameListingService = new AutoCreateNonameListingService(_log,
                                                                                     _time,
                                                                                     _dbFactory,
                                                                                     _cacheService,
                                                                                     _barcodeService,
                                                                                     _emailService, null,
                                                                                     AppSettings.IsDebug);

                var marketplaces = new MarketplaceKeeper(_dbFactory, true);
                marketplaces.Init();

                var shipmentPrividers = db.ShipmentProviders.GetByCompanyId(_company.Id);

                var apiFactory = new MarketFactory(marketplaces.GetAll(), _time, _log, _dbFactory, AppSettings.JavaPath);

                var weightService = new WeightService();

                var serviceFactory = new ServiceFactory();
                var rateProviders  = serviceFactory.GetShipmentProviders(_log,
                                                                         _time,
                                                                         _dbFactory,
                                                                         weightService,
                                                                         shipmentPrividers,
                                                                         null,
                                                                         null,
                                                                         null,
                                                                         null);

                _magentoApi    = (Magento20MarketApi)apiFactory.GetApi(_company.Id, MarketType.Magento, MarketplaceKeeper.ShopifyDWS);
                _shopifyDWSApi = (ShopifyApi)apiFactory.GetApi(_company.Id, MarketType.Shopify, MarketplaceKeeper.ShopifyDWS);
                _eBayApi       = (eBayApi)apiFactory.GetApi(_company.Id, MarketType.eBay, "");
                _amazonApi     = (AmazonApi)apiFactory.GetApi(_company.Id, MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId);
                _walmartApi    = (WalmartApi)apiFactory.GetApi(_company.Id, MarketType.Walmart, "");
            }
        }