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; }
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; }
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); }
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(); }
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; }
/// <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; }
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 : ""; } }
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"); }
public HomeController(ILogger <HomeController> logger, IPriceManager priceManager) { _logger = logger; this.priceManager = priceManager; }
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(); }
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); }
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(); }
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, ""); } }