public Task AddMemberBuyStockAsync(string memberEmail, CountryKind country, string stockID, decimal buyPrice, decimal N, BuySellStrategyType strategy, DateTime buyDate)
        {
            IMemberBuyStock memberBuyStock = new MemberBuyStock(memberEmail, country, stockID, buyPrice, N, buyPrice - (2 * N), StockBuyState.Buy, strategy, buyDate);

            MemberBuyStockTable.Add(memberBuyStock);

            return(Task.CompletedTask);
        }
        public Task UpdateMemberBuyStockAsync(string memberEmail, CountryKind country, string stockId, decimal stopPrice, StockBuyState newState)
        {
            IMemberBuyStock memberStock = MemberBuyStockTable.Find(a => string.Equals(a.MemberEmail, memberEmail, StringComparison.OrdinalIgnoreCase) && a.Country == country);

            if (memberStock != null && memberStock is MemberBuyStock mStock)
            {
                mStock.StopPrice = stopPrice;
                mStock.State     = newState;
            }

            return(Task.CompletedTask);
        }
        public Task SetMemberBuyStockBuyStateAsync(string memberEmail, CountryKind country, string stockID, StockBuyState buyState)
        {
            IMemberBuyStock stock = MemberBuyStockTable.FirstOrDefault(a => string.Equals(a.MemberEmail, memberEmail, StringComparison.OrdinalIgnoreCase) &&
                                                                       a.Country == country &&
                                                                       string.Equals(a.StockId, stockID, StringComparison.OrdinalIgnoreCase));

            if (!(stock is MemberBuyStock target))
            {
                return(Task.CompletedTask);
            }

            target.State = buyState;

            return(Task.CompletedTask);
        }
        public Task DeleteMemberBuyStockAsync(string memberEmail, CountryKind country, string stockId)
        {
            IEnumerable <IMemberBuyStock> items = MemberBuyStockTable.Where(a => string.Equals(a.MemberEmail, memberEmail, StringComparison.OrdinalIgnoreCase) &&
                                                                            a.Country == country &&
                                                                            string.Equals(a.StockId, stockId, StringComparison.OrdinalIgnoreCase));

            if (!items.Any())
            {
                return(Task.CompletedTask);
            }

            foreach (IMemberBuyStock item in items)
            {
                MemberBuyStockTable.Remove(item);
            }

            return(Task.CompletedTask);
        }
 public Task <IReadOnlyList <IMemberBuyStock> > GetMemberBuyStocksAsync(CountryKind country, StockBuyState state)
 {
     return(Task.FromResult <IReadOnlyList <IMemberBuyStock> >(MemberBuyStockTable.Where(a => a.Country == country && a.State == state).ToList()));
 }
 public Task <IReadOnlyList <IMemberBuyStock> > GetMemberBuyStocksAsync(string memberEmail)
 {
     return(Task.FromResult <IReadOnlyList <IMemberBuyStock> >(MemberBuyStockTable.Where(a => string.Equals(a.MemberEmail, memberEmail, StringComparison.OrdinalIgnoreCase)).ToList()));
 }