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