Exemple #1
0
        public OperationResult <(List <TradeViewModel>, int)> GetParticipantTrades(TradesFilter filter)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                var query = context.Trades.Where(x => x.TradeAccount.ParticipantId == filter.ParticipantId);

                var total = query.Count();

                if (filter.Skip.HasValue)
                {
                    query = query.Skip(filter.Skip.Value);
                }
                if (filter.Take.HasValue)
                {
                    query = query.Take(filter.Take.Value);
                }
                if (filter.Direction.HasValue)
                {
                    query = query.Where(x => x.Direction == filter.Direction.Value);
                }
                if (!string.IsNullOrEmpty(filter.Symbol))
                {
                    var str = filter.Symbol.ToLower().Trim();
                    query = query.Where(x => filter.Symbol.ToLower().Contains(str));
                }

                var result = query
                             .OrderByDescending(x => x.Ticket)
                             .Select(x => x.ToTradeViewModel())
                             .ToList();

                return (result, total);
            }));
        }
Exemple #2
0
        public OperationResult <(List <OrderModel>, int)> GetManagerTrades(TradesFilter filter)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                var manager = context.ManagersAccounts
                              .Include(x => x.BrokerTradeServer)
                              .First(x => x.Id == filter.ManagerId);

                var query = context.ManagersAccountsTrades
                            .Where(x => x.ManagerAccountId == filter.ManagerId);

                if (filter.DateFrom.HasValue)
                {
                    if (manager.BrokerTradeServer.Type == BrokerTradeServerType.MetaTrader4)
                    {
                        query = query.Where(x => x.DateClose >= filter.DateFrom.Value);
                    }
                    if (manager.BrokerTradeServer.Type == BrokerTradeServerType.MetaTrader5)
                    {
                        query = query.Where(x => x.Date >= filter.DateFrom.Value);
                    }
                }
                if (filter.DateTo.HasValue)
                {
                    if (manager.BrokerTradeServer.Type == BrokerTradeServerType.MetaTrader4)
                    {
                        query = query.Where(x => x.DateClose < filter.DateTo.Value);
                    }
                    if (manager.BrokerTradeServer.Type == BrokerTradeServerType.MetaTrader5)
                    {
                        query = query.Where(x => x.Date < filter.DateTo.Value);
                    }
                }
                if (!string.IsNullOrEmpty(filter.Symbol))
                {
                    query = query.Where(x => x.Symbol == filter.Symbol);
                }

                var total = query.Count();

                if (filter.Skip.HasValue)
                {
                    query = query.Skip(filter.Skip.Value);
                }
                if (filter.Take.HasValue)
                {
                    query = query.Take(filter.Take.Value);
                }

                var result = query.Select(x => x.ToOrder()).ToList();

                return (result, total);
            }));
        }
        public IActionResult GetParticipantTrades([FromBody] TradesFilter filter)
        {
            var res = tournamentService.GetParticipantTrades(filter);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok(new TradesViewModel
            {
                Trades = res.Data.Item1,
                Total = res.Data.Item2
            }));
        }
Exemple #4
0
        public IActionResult GetManagerOpenTrades([FromBody] TradesFilter filter)
        {
            var trades = tradesService.GetManagerOpenTrades(filter);

            if (!trades.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(trades)));
            }

            return(Ok(new OpenTradesViewModel
            {
                Trades = trades.Data.Item1,
                Total = trades.Data.Item2
            }));
        }
Exemple #5
0
        public OperationResult <(List <OpenOrderModel>, int)> GetManagerOpenTrades(TradesFilter filter)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                var query = context.ManagersAccountsOpenTrades
                            .Where(x => x.ManagerAccountId == filter.ManagerId &&
                                   x.DateUpdateFromTradePlatform > DateTime.UtcNow.AddMinutes(-10));

                if (filter.DateFrom.HasValue)
                {
                    query = query.Where(x => x.DateOpenOrder >= filter.DateFrom.Value);
                }
                if (filter.DateTo.HasValue)
                {
                    query = query.Where(x => x.DateOpenOrder < filter.DateTo.Value);
                }
                if (!string.IsNullOrEmpty(filter.Symbol))
                {
                    query = query.Where(x => x.Symbol == filter.Symbol);
                }

                var total = query.Count();

                if (filter.Skip.HasValue)
                {
                    query = query.Skip(filter.Skip.Value);
                }
                if (filter.Take.HasValue)
                {
                    query = query.Take(filter.Take.Value);
                }

                var result = query.Select(x => x.ToOpenOrder()).ToList();

                return (result, total);
            }));
        }