public IActionResult MakeAnOffer(MakeAnOfferViewModel makeAnOfferViewModel) { if (ModelState.IsValid) { int projId = makeAnOfferViewModel.ProjId; Project proj = _projRepo.GetProjById(projId); int buyerId = makeAnOfferViewModel.BuyerId; //you can make an offer when you already have, your last offer will be removed //therefore there is only one pending offer for one buyer at a time if (_transRepo.ThisBuyerHasPendingOffer(buyerId, projId)) { WithdrawAnOffer(projId, buyerId); } if (proj.TradingStatus != ProjStatus.Under_Offer) { proj.TradingStatus = ProjStatus.Under_Offer; //use AddAnOfferToProj below to saveChanges } Offer offer = new Offer { MyProj = _projRepo.GetProjById(projId), Value = makeAnOfferViewModel.Value, Currency = makeAnOfferViewModel.Currency, BuyerId = buyerId, Status = OfferStatus.Pending }; _transRepo.AddAnOfferToProj(offer, projId); return(RedirectToAction("MakeAnOffer", "Transaction", new { projId, buyerId })); } return(View(makeAnOfferViewModel)); }
public ViewResult MakeAnOffer(int projId, int buyerId) { Project proj = _projRepo.GetProjById(projId); CryptcurValue cryptcurValue = _projRepo.GetValuationById(projId); bool thisBuyerHasPendingOffer = _transRepo.ThisBuyerHasPendingOffer(buyerId, projId); List <int> acceptCurrency = new List <int>(); if (cryptcurValue.AcceptBitcoid) { acceptCurrency.Add(Cryptocurrency.Bitcoin); } if (cryptcurValue.AcceptEthereum) { acceptCurrency.Add(Cryptocurrency.Ethereum); } if (cryptcurValue.AcceptLitecoin) { acceptCurrency.Add(Cryptocurrency.Litecoin); } List <Offer> historyOffers = _transRepo.GetMyOffersByProjIdBuyerId(projId, buyerId).ToList(); MakeAnOfferViewModel makeAnOfferViewModel = new MakeAnOfferViewModel { ProjId = projId, BuyerId = buyerId, AcceptCurrency = acceptCurrency, HistoryOffers = historyOffers, ThisProjHasPendingOffer = thisBuyerHasPendingOffer }; return(View(makeAnOfferViewModel)); }