Exemple #1
0
        // 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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
            }
        }
Exemple #4
0
        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
        }
Exemple #5
0
        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());
        }