private async Task Handle(TransactionProcessedEvent evt, ICommandSender sender) { ChaosKitty.Meow(); var clientAcc = await _clientAccountClient.GetByIdAsync(evt.ClientId); var sendEmailCommand = new SendNoRefundDepositDoneMailCommand { Email = clientAcc.Email, Amount = evt.Amount, AssetId = evt.Asset.Id }; sender.SendCommand(sendEmailCommand, "email"); ChaosKitty.Meow(); var pushSettings = await _clientAccountClient.GetPushNotificationAsync(evt.ClientId); if (pushSettings.Enabled) { var sendNotificationCommand = new SendNotificationCommand { NotificationId = clientAcc.NotificationsId, Type = NotificationType.TransactionConfirmed, Message = string.Format(TextResources.CashInSuccessText, new decimal(evt.Amount).TruncateDecimalPlaces(evt.Asset.Accuracy), evt.Asset.Id) }; sender.SendCommand(sendNotificationCommand, "notifications"); } }
private void TransactionProcessed(TransactionProcessedEvent transactionProcessedEvent) { if (transactionProcessedEvent == TransactionProcessedEvent.Success) { Response.Redirect("Default.aspx"); return; } errorMsg.Text = "CANNOT COMPLETE TRANSACTION - IT WILL CAUSE ACCOUNT TO BE LOCKED!"; }
private void Handle(SmsNotificationJobContext context, TransactionProcessedEvent smsEvent) { var transaction = context.ProcessingService.GetCardTransaction(new IdentityQuery <Guid>(smsEvent.TransactionId)); if (transaction == null) { return; } if (transaction.Status == ProcessStatusModel.Pending) { return; } var account = context.CardAccountService.GetCardAccountBrief(new IdentityQuery <string>(transaction.AccountNo)); if (account == null) { Logger.Info("Couldn't find account for card transaction #{0}.", smsEvent.TransactionId); return; } var profile = VerifyProfile(context, account.Owner.UserId); if (profile == null || !profile.SmsNotificationEnabled) { return; } var sms = new SendSmsCommand { RecipientPhoneNumber = profile.PhoneNumber }; var secureCardNo = string.Format( "{0}****{1}", new string(transaction.CardNo.Take(8).ToArray()), new string(transaction.CardNo.Skip(12).ToArray())); if (transaction.Status == ProcessStatusModel.Failed) { var message = string.Format( SmsMessages.CardError, secureCardNo, string.Format("{0:F2} {1}", transaction.TransactionAmount, transaction.Currency.ISOName), transaction.Location, TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, _timezone), string.Format("{0:F2} {1}", account.Balance, account.Currency.ISOName)); sms.Text = message; context.SmsService.SendSms(sms); return; } if (transaction.TransactionAmount < 0) { var message = string.Format( SmsMessages.CardWithdrawal, secureCardNo, string.Format("{0:F2} {1}", -transaction.TransactionAmount, transaction.Currency.ISOName), transaction.Location, TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, _timezone), string.Format("{0:F2} {1}", account.Balance, account.Currency.ISOName)); sms.Text = message; context.SmsService.SendSms(sms); } else { var message = string.Format( SmsMessages.CardDeposit, secureCardNo, string.Format("{0:F2} {1}", transaction.TransactionAmount, transaction.Currency.ISOName), transaction.Location, TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, _timezone), string.Format("{0:F2} {1}", account.Balance, account.Currency.ISOName)); sms.Text = message; context.SmsService.SendSms(sms); } }