Ejemplo n.º 1
0
        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();
                }
            }));
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }