public async Task <IActionResult> WalletTransfer([FromBody] SendPaymentDto sendPaymentDto) { double balance = 0d; try { var sent = await actorService .MasterKey(sendPaymentDto.Credentials.Password.ToSecureString()) .Identifier(sendPaymentDto.Credentials.Identifier.ToSecureString()) .Amount(sendPaymentDto.Amount) .ToAddress(sendPaymentDto.ToAddress) .Memo(sendPaymentDto.Memo) .SendPayment(); if (sent.Equals(false)) { var failedMessage = JsonConvert.SerializeObject(actorService.GetLastError().GetValue("message")); return(new ObjectResult(new { error = failedMessage, statusCode = 500 })); } if (sendPaymentDto.CreateRedemptionKey) { var message = await actorService.SendPaymentMessage(false); var notification = message.GetValue("message").ToObject <MessageDto>(); return(new OkObjectResult(new { message = notification })); } else { var networkMessage = await actorService.SendPaymentMessage(true); var success = networkMessage.GetValue("success").ToObject <bool>(); if (success.Equals(false)) { return(new ObjectResult(new { error = JsonConvert.SerializeObject(networkMessage.GetValue("message")), statusCode = 500 })); } balance = await actorService.CheckBalance(); } } catch (Exception ex) { balance = await actorService.CheckBalance(); return(new ObjectResult(new { error = ex.Message, statusCode = 500, balance = balance })); } return(new OkObjectResult(new { balance = balance })); }
public async Task <IActionResult> WalletTransfer([FromBody] SendPaymentDto sendPaymentDto) { TaskResult <ulong> availBalance; var session = new Session(sendPaymentDto.Credentials.Identifier.ToSecureString(), sendPaymentDto.Credentials.Password.ToSecureString()) { Amount = sendPaymentDto.Amount.ConvertToUInt64(), ForwardMessage = sendPaymentDto.CreateRedemptionKey, Memo = sendPaymentDto.Memo, RecipientAddress = sendPaymentDto.Address }; try { await actorService.Tansfer(session); if (actorService.State != State.Committed) { session = actorService.GetSession(session.SessionId); var failedMessage = JsonConvert.SerializeObject(session.LastError.GetValue("message")); return(new ObjectResult(new { error = failedMessage, statusCode = 500 })); } session = actorService.GetSession(session.SessionId); var messageStore = await unitOfWork .GetRedemptionRepository() .Get(session, StoreKey.TransactionIdKey, session.SessionId.ToString()); availBalance = await walletService.AvailableBalance(session.Identifier, session.MasterKey); if (sendPaymentDto.CreateRedemptionKey) { return(new OkObjectResult(new { message = messageStore.Result.Message })); } } catch (Exception ex) { availBalance = await walletService.AvailableBalance(session.Identifier, session.MasterKey); return(new ObjectResult(new { error = ex.Message, statusCode = 500, balance = availBalance.Result })); } return(new OkObjectResult(new { balance = availBalance.Result })); }