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)); }
/// <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(); }