Example #1
0
        public async Task <IActionResult> BuyItem([FromBody] TransactionConfirmation transaction)
        {
            ApplicationUser user = await userManager.FindByIdAsync(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            if (user == default)
            {
                return(Unauthorized());
            }

            Auction         auction   = dbContext.Auctions.FirstOrDefault(x => x.Id == transaction.AuctionId);
            ApplicationUser recipient = await this.userManager.FindByIdAsync(auction.CreatorId);

            if (auction == default || recipient == default)
            {
                return(NotFound());
            }

            if (user.Balance < auction.Price)
            {
                return(BadRequest(new { msg = "Balance is too low" }));
            }

            lock (dbContext.Auctions)
            {
                dbContext.Auctions.Remove(auction);

                FinishedAuction finishedAuction = new FinishedAuction()
                {
                    Id           = auction.Id,
                    Price        = auction.Price,
                    BuyerId      = user.Id,
                    CreationTime = auction.CreationTime,
                    CreatorId    = auction.CreatorId,
                    Description  = auction.Description,
                    IconId       = auction.IconId,
                    Title        = auction.Title
                };
                dbContext.FinishedAuctions.Add(finishedAuction);

                dbContext.Users.UpdateRange(new ApplicationUser[] { user, recipient });
                user.Balance      -= auction.Price;
                recipient.Balance += auction.Price;

                dbContext.SaveChanges();
            }

            return(Ok());
        }
Example #2
0
        private ContractTransaction prepareTxObject(string bindingid, BC.Offchain.Repository.Models.Profile CitizenProfile)
        {
            var _dto = CitizenProfile;

            _dto.TransactedTime = DateTime.Now;
            _dto.TransactionID  = Guid.NewGuid().ToString();

            TransactionConfirmation _transactionConfirmation = new TransactionConfirmation()
            {
                BlockHash        = "0xfa4e2a31506c1f930efc7701ff6ddc1451d08a38a7a9267fe263766b4c7ea2d0",
                BlockNumber      = "1",
                TransactionHash  = "",
                Name             = "Fake Contract",
                ProxyId          = "Fake Contract_Proxy ID",
                TransactionIndex = "1"
            };
            ContractTransaction _txInformation = new ContractTransaction(bindingid, " Enterprise Smart Contract transacted.....", _dto, _transactionConfirmation);

            return(_txInformation);
        }