public ActionResult CreateStatsExample(long typeId, [DataSourceRequest] DataSourceRequest request, StatsExampleModel model) { if(model != null && this.ModelState.IsValid) { try { var guid = Guid.NewGuid().ToString("N"); using(var ctx = new DataModelContext()) { var newExample = new StatsExample { Timestamp = DateTime.Now, Name = model.Name, IdLink = guid, StatsTypeId = typeId }; ctx.StatsExamples.Add(newExample); // ctx.SaveChanges(); } } catch(Exception ex) { LogManager.GetCurrentClassLogger().Error(ex); this.ModelState.AddModelError("save_error", ex.Message); } } return this.Json(new[] {model}.ToDataSourceResult(request, this.ModelState)); }
public ActionResult DeleteStatsExample([DataSourceRequest] DataSourceRequest request, StatsExampleModel model) { try { if(model != null) { using(var ctx = new DataModelContext()) { var example = ctx.StatsExamples.Include("StatsType").Include("Orders").Single(e => e.Id == model.Id); example.Deleted = true; var lastOrder = example.Orders.OrderBy(o => o.Index).LastOrDefault(); if(lastOrder != null && !lastOrder.ClosePrice.HasValue) { using(var client = new OrderServiceClient()) { var response = client.GetPrice(new GetPriceDataContractRequest {SymbolId = example.StatsType.TypeId}); if(!string.IsNullOrEmpty(response.Error)) { LogManager.GetCurrentClassLogger().Error(response.Error); } var price = response.Price; if(price.HasValue) { var typeConfig = ((TransactionTypesConfigSection)ConfigurationManager.GetSection("TransactionTypesConfig")).Types.Cast<TypeElementConfig>().ToList().Single(tc => tc.Id == example.StatsType.TypeId); lastOrder.ClosePrice = lastOrder.OrderType == OrderTypes.Buy ? Math.Round(price.Value - Settings.Default.Spread * typeConfig.SpreadTickValue, HomeController.GetDecimalDigits(typeConfig.SpreadTickValue)) : Math.Round(price.Value + Settings.Default.Spread * typeConfig.SpreadTickValue, HomeController.GetDecimalDigits(typeConfig.SpreadTickValue)); lastOrder.Pips = Convert.ToInt32(Math.Round((lastOrder.OrderType == OrderTypes.Buy ? (lastOrder.ClosePrice.Value - lastOrder.OpenPrice) : (lastOrder.OpenPrice - lastOrder.ClosePrice.Value)) / typeConfig.SpreadTickValue, 0)); // Log var log = OrderLog.CreateLog(lastOrder, OrderLogTypes.Close); ctx.OrderLogs.Add(log); } } } // ctx.SaveChanges(); } } } catch(Exception ex) { LogManager.GetCurrentClassLogger().Error(ex); } // return this.Json(new[] {model}.ToDataSourceResult(request, this.ModelState)); }
public ActionResult UpdateStatsExample([DataSourceRequest] DataSourceRequest request, StatsExampleModel model) { if(model != null && this.ModelState.IsValid) { try { using(var ctx = new DataModelContext()) { var example = ctx.StatsExamples.Find(model.Id); example.Name = model.Name; ctx.SaveChanges(); } } catch(Exception ex) { LogManager.GetCurrentClassLogger().Error(ex); this.ModelState.AddModelError("save_error", ex.Message); } } // return this.Json(new[] {model}.ToDataSourceResult(request, this.ModelState)); }