Exemplo n.º 1
0
        public async Task <ActionResult <Transaction> > PostTransactionItem(Transaction item)
        {
            if ((item.email == null && item.phone_number == null) || (item.email != null && item.phone_number != null))
            {
                return(BadRequest(ErrorHelper.GenerateAnErrorMessage("contact", "Only one contact method should be specified.")));
            }
            if ((item.wallet != null))
            {
                return(BadRequest(ErrorHelper.GenerateAnErrorMessage("wallet", "You can't provide wallet field.")));
            }
            if ((item.status != null))
            {
                return(BadRequest(ErrorHelper.GenerateAnErrorMessage("status", "You can't provide status field.")));
            }
            item.status = Status.WAITING_FOR_VERIFICATION;
            _context.TransactionItems.Add(item);
            await _context.SaveChangesAsync();

            //mock for tests
            var vitem = new Verification {
                TransactionId = item.Id, verification_code = "1234", verified = false
            };

            //for deployment
            //var vitem = new VerificationItem{ Id = item.Id, verification_code = RandomString(10), verified = false };

            _context.VerificationItems.Add(vitem);
            await _context.SaveChangesAsync();

            //for deployment
            //generate an email or send an SMS

            return(CreatedAtAction(nameof(GetTransaction), new { id = item.Id, verification_code = vitem.verification_code }, item));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Put(Verification item)
        {
            var verificationItem = await _context.VerificationItems.SingleOrDefaultAsync(b => b.TransactionId == item.TransactionId);

            if (verificationItem == null)
            {
                return(NotFound(ErrorHelper.GenerateAnErrorMessage("database", "There isn't record with specified id in database.")));
            }
            if (verificationItem.verification_code != item.verification_code)
            {
                return(BadRequest(ErrorHelper.GenerateAnErrorMessage("verification", "Your verification code is invalid.")));
            }
            else
            {
                if (verificationItem.verified)
                {
                    return(BadRequest(ErrorHelper.GenerateAnErrorMessage("verification", "Already verified.")));
                }
                verificationItem.verified = true;

                var transactionItem = await _context.TransactionItems.SingleOrDefaultAsync(b => b.Id == item.TransactionId);

                //mock
                transactionItem.wallet = "btc_wallet_path";
                transactionItem.status = Status.WAITING_FOR_TRANSFER;

                await _context.SaveChangesAsync();

                return(Ok(transactionItem));
            }
        }