// not mapped /// <summary> /// creates a new trade from the Trade and TradeDetail tables /// </summary> /// <param name="id"></param> /// <returns>returns an AppTrade for error handling</returns> public async Task <AppTrade> GetOneTrade(string id) { var dbTrade = await _context.Trades.FirstOrDefaultAsync(x => x.TradeId == id); if (dbTrade == null) { return(null); } var dbTradeDetail = await _context.TradeDetails.FirstOrDefaultAsync(x => x.TradeId == id); if (dbTradeDetail == null) { return(null); } var appTrade = new AppTrade { TradeId = dbTrade.TradeId, OffererId = dbTrade.OffererId, BuyerId = dbTrade.BuyerId, IsClosed = dbTrade.IsClosed, TradeDate = dbTrade.TradeDate, OfferCardId = dbTradeDetail.OfferCardId, BuyerCardId = dbTradeDetail.BuyerCardId }; return(appTrade); }
/// <summary> /// Enter a Trade into the db /// </summary> /// <param name="appTrade"></param> /// <returns>returns the trade that was entered for error handling</returns> public async Task <AppTrade> AddOneTrade(AppTrade appTrade) { var dbTrade = new Trade { TradeId = appTrade.TradeId, OffererId = appTrade.OffererId, //BuyerId = appTrade.Buyer.UserId, IsClosed = appTrade.IsClosed, TradeDate = appTrade.TradeDate, }; await _context.Trades.AddAsync(dbTrade); await _context.SaveChangesAsync(); var dbTradeDetail = new TradeDetail { TradeId = appTrade.TradeId, OfferCardId = appTrade.OfferCardId, //BuyerCardId = appTrade.BuyerCardId }; await _context.TradeDetails.AddAsync(dbTradeDetail); await _context.SaveChangesAsync(); return(appTrade); }
/// <summary> /// updates the db with passed AppTrade /// </summary> /// <param name="id"></param> /// <param name="updateTrade"></param> /// <returns>True on success, false otherwise</returns> public async Task <bool> UpdateTradeById(string id, AppTrade updateTrade) { var dbTrade = await _context.Trades.FirstOrDefaultAsync(x => x.TradeId == id); var dbTradeDetail = await _context.TradeDetails.FirstOrDefaultAsync(x => x.TradeId == id); if (dbTrade == null) { return(false); } else if (dbTradeDetail == null) { return(false); } else { //dbTrade.TradeId = updateTrade.TradeId; dbTrade.BuyerId = updateTrade.BuyerId; //dbTrade.OffererId = updateTrade.OffererId; dbTrade.IsClosed = updateTrade.IsClosed; //dbTrade.TradeDate = updateTrade.TradeDate; //tradedetail dbTradeDetail.OfferCardId = updateTrade.OfferCardId; dbTradeDetail.BuyerCardId = updateTrade.BuyerCardId; await _context.SaveChangesAsync(); return(true); } }
public async Task <ActionResult <TradeCreateDTO> > UpdateTradeById(string id, TradeCreateDTO tradeDTO) { var trade = await _tradeRepo.GetOneTrade(tradeDTO.TradeId); //update if trade is found if (trade != null) { var appTrade = new AppTrade() { TradeId = tradeDTO.TradeId, OffererId = tradeDTO.OffererId, BuyerId = tradeDTO.BuyerId, TradeDate = tradeDTO.TradeDate, IsClosed = tradeDTO.IsClosed, //tradeDetails OfferCardId = tradeDTO.OfferCardId, BuyerCardId = tradeDTO.BuyerCardId }; AppCard offercard = await _cardRepo.GetOneCard(tradeDTO.OfferCardId); AppCard buyercard = await _cardRepo.GetOneCard(tradeDTO.BuyerCardId); //perform business logic after updating the AppTrade if (appTrade.IsClosed && appTrade.BuyerId != null) { appTrade.Buyer = await _userRepo.GetOneUser(appTrade.BuyerId); appTrade.Offerer = await _userRepo.GetOneUser(appTrade.OffererId); appTrade.BuyerCardId = buyercard.CardId; appTrade.OfferCardId = offercard.CardId; //appTrade.MakeTrade(); await _userRepo.AddOneCardToOneUser(appTrade.BuyerId, offercard.CardId); await _userRepo.AddOneCardToOneUser(appTrade.OffererId, buyercard.CardId); await _userRepo.DeleteOneCardOfOneUser(appTrade.BuyerId, buyercard.CardId); await _userRepo.DeleteOneCardOfOneUser(appTrade.OffererId, offercard.CardId); } bool result = await _tradeRepo.UpdateTradeById(id, appTrade); if (result) { return(NoContent()); //update successfull } else { return(BadRequest()); //something wrong with update } } return(NotFound()); //Return 404 if no auction details found }
public async Task <ActionResult <TradeCreateDTO> > Post(TradeCreateDTO newTrade) { //check if trade already exists Console.WriteLine("ID: " + newTrade.TradeId); //var trade = _tradeRepo.GetOneTrade(newTrade.TradeId); TradeReadDTO trade = null; if (trade == null) { string newTradeId = await _tradeRepo.IdGen(); AppUser buyer = await _userRepo.GetOneUser(newTrade.BuyerId); AppUser offerer = await _userRepo.GetOneUser(newTrade.OffererId); AppCard card = await _cardRepo.GetOneCard(newTrade.OfferCardId); var appTrade = new AppTrade() { TradeId = newTradeId, OffererId = offerer.UserId, //BuyerId = buyer.UserId, dont need when creating a trade only updating TradeDate = newTrade.TradeDate, IsClosed = false, //should always be false when creating //tradeDetails OfferCardId = card.CardId, //BuyerCardId = newTrade.BuyerCardId dont need when creating a trade only updating }; var tradeDTO = new TradeReadDTO { TradeId = newTradeId, OffererId = newTrade.OffererId, //BuyerId = newTrade.BuyerId, IsClosed = newTrade.IsClosed, TradeDate = newTrade.TradeDate, //TradeDetails OfferCardId = newTrade.TradeId }; await _tradeRepo.AddOneTrade(appTrade); return(CreatedAtAction(nameof(GetTradeById), new { id = tradeDTO.TradeId }, tradeDTO)); } return(Conflict()); }