public async Task <Domain.Models.Trade> AddAsync(Domain.Models.Trade trade, Domain.Models.Portfolio portfolio)
        {
            if (trade.Id != 0)
            {
                throw new ArgumentException("Trade already exists.");
            }

            using var context = new mmpproject2Context(_contextOptions);
            var dbPortfolio = await context.Portfolios
                              .Include(p => p.Trades)
                              .FirstAsync(p => p.Id == portfolio.Id);

            var newTrade = Mapper.MapTrade(trade);

            dbPortfolio.Trades.Add(newTrade);
            context.Trades.Add(newTrade);

            await context.SaveChangesAsync();

            var created = await context.Trades
                          .Include(t => t.Stock)
                          .FirstAsync(t => t.Id == newTrade.Id);

            return(Mapper.MapTrade(created));
        }
Exemple #2
0
 /// <summary>
 /// Maps a business domain trade to an EntityFramework model
 /// </summary>
 /// <param name="trade">The business domain trade object</param>
 /// <returns>The trade DataAccess object</returns>
 public static Models.Trade MapTrade(Domain.Models.Trade trade)
 {
     return(new Models.Trade {
         Id = trade.Id,
         StockId = trade.Stock.Id,
         Quantity = trade.Quantity,
         Price = trade.Price,
         TimeTraded = trade.Time
     });
 }
        public async Task UpdateAsync(Domain.Models.Trade trade)
        {
            using var context = new mmpproject2Context(_contextOptions);
            var current = await context.Trades.FirstAsync(t => t.Id == trade.Id);

            var updated = Mapper.MapTrade(trade);

            updated.PortfolioId = current.PortfolioId;
            context.Entry(current).CurrentValues.SetValues(updated);

            await context.SaveChangesAsync();
        }