public OperationResult SaveNewOpenTrade(NewOpenTradesEvent openTradesEvent) { return(InvokeOperations.InvokeOperation(() => { foreach (var openTrades in openTradesEvent.OpenTrades) { var existsTrades = context.ManagersAccountsOpenTrades .Where(x => x.ManagerAccountId == openTrades.ManagerAccountId) .ToList(); context.RemoveRange(existsTrades); foreach (var trades in openTrades.Trades) { var t = new ManagersAccountsOpenTrades { Id = Guid.NewGuid(), DateUpdateFromTradePlatform = DateTime.UtcNow, ManagerAccountId = openTrades.ManagerAccountId, Ticket = trades.Ticket, Symbol = trades.Symbol, Profit = trades.Price, Price = trades.Price, Direction = trades.Direction, DateOpenOrder = trades.Date, Volume = trades.Volume }; context.Add(t); } context.SaveChanges(); } })); }
public IActionResult NewOpenTrades([FromBody] NewOpenTradesEvent trades) { if (!ModelState.IsValid) { return(BadRequest(ErrorResult.GetResult(ModelState))); } var errors = brokerValidator.ValidateNewOpenTrades(CurrentUser, trades); if (errors.Any()) { return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError))); } tradesService.SaveNewOpenTrade(trades); return(Ok()); }
public List <string> ValidateNewOpenTrades(ApplicationUser user, NewOpenTradesEvent trades) { var result = new List <string>(); if (!trades.OpenTrades.Any()) { return(result); } var managersIds = trades.OpenTrades.Select(x => x.ManagerAccountId).ToList(); var mangerAccount = context.ManagersAccounts .Where(x => managersIds.Contains(x.Id) && x.BrokerTradeServer.Broker.UserId == user.Id) .ToList(); if (mangerAccount.Count != managersIds.Count) { result.Add("Managers accounts does not exists"); } return(result); }