public async Task <TransactResponseViewModel> Transact(TransactViewModel transactViewModel) { var supporter = _customerService.GetCustomerById(transactViewModel.SupporterId); var ambassador = _customerService.GetCustomerById(supporter.AmbassadorId); var service = _serviceService.GetServiceById(transactViewModel.ServiceId); var commission = ComputeAmbassadorCommission(transactViewModel.Amount, service.AmbassadorCommissionRate); if (supporter != null && service != null) { var newServiceTransaction = new ServiceTransaction { ServiceId = transactViewModel.ServiceId, AmbassadorId = supporter.AmbassadorId, SupporterId = transactViewModel.SupporterId, Amount = _dataProtector.Protect(transactViewModel.Amount.ToString()), CommissionAmount = _dataProtector.Protect(commission.ToString()), CreatedOn = DateTime.UtcNow }; await _serviceTransactionService.InsertServiceTransactionAsync(newServiceTransaction); if (ambassador.CommissionBalance == null) { ambassador.CommissionBalance = newServiceTransaction.CommissionAmount; } else { var ambassadorCommissionBalance = Convert.ToDecimal(_dataProtector.Unprotect(ambassador.CommissionBalance)) + commission; ambassador.CommissionBalance = _dataProtector.Protect(ambassadorCommissionBalance.ToString()); } _customerService.UpdateCustomer(ambassador); } return(new TransactResponseViewModel { ServicePaid = service.Name, Amount = transactViewModel.Amount, PaidBy = supporter.Name, CommissionPaidTo = ambassador.Name }); }
public TransactWindowView(AClient selectedItem) { InitializeComponent(); DataContext = new TransactViewModel(selectedItem); }
public TransactWindow(TransactViewModel viewModel) { InitializeComponent(); DataContext = viewModel; }
public async Task <TransactResponseViewModel> Transact([FromBody] TransactViewModel transactViewModel) { return(await _networkMarketingFactory.Transact(transactViewModel)); }