Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Html
- <h2>AuditWallet</h2>
- <ul class="list-group">
- <li class="list-group-item">Accounted Balance <span class="pull-right">@Model.AccountedBalance</span></li>
- <li class="list-group-item">Actual Wallet Balance <span class="pull-right">@Model.ActualWalletBalance</span></li>
- <li class="list-group-item">Computed Wallet Balance <span class="pull-right">@Model.ComputedWalletBalance</span></li>
- <li class="list-group-item">Total Deposits <span class="pull-right">@Model.TotalDeposits</span></li>
- <li class="list-group-item">Total Withdrawals <span class="pull-right">@Model.TotalWithdrawals</span></li>
- <li class="list-group-item">Result <span class="pull-right">@Model.Result</span></li>
- </ul>
- # Controller Code
- public async Task<ActionResult> AuditWallet(int? id)
- {
- if (id == null)
- {
- return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
- }
- UserWallets userWallets = await db.UserWallets.FindAsync(id);
- if (userWallets == null)
- {
- return HttpNotFound();
- }
- // Error Prevention for null balance. (No entrys for the coin in UserBalances)
- var users = db.Users.ToList();
- foreach(var item in users)
- {
- await new WalletManager(db).InitiateBalancesAndValidateNewAsync(item.Id);
- }
- // Sum Total Deposits
- decimal TotalDeposits = db.UserDeposits.Where(x => x.WalletName == userWallets.WalletName).Sum(x => x.Amount);
- // Sum Total Withdrawals
- decimal TotalWithdrawals = db.UserWithdrawals.Where(x => x.WalletName == userWallets.WalletName).Sum(x => x.Amount);
- // Compute WalletBalance
- decimal ComputedWalletBalance = (TotalDeposits - TotalWithdrawals);
- // Sum Accounted Balances
- decimal AccountedBalance = db.UserBalances.Where(x => x.WalletName == userWallets.WalletName).Sum(x => x.WalletBalance);
- // Get The Actual Wallet Balance
- decimal ActualWalletBalance = await new WalletManager(db).GetWalletBalanceByNameAsync(userWallets.WalletName);
- WalletAuditModel model = new WalletAuditModel();
- model.AccountedBalance = AccountedBalance;
- model.ActualWalletBalance = ActualWalletBalance;
- model.ComputedWalletBalance = ComputedWalletBalance;
- model.TotalDeposits = TotalDeposits;
- model.TotalWithdrawals = TotalWithdrawals;
- // Some Logic
- if(ComputedWalletBalance == ActualWalletBalance && ActualWalletBalance == ComputedWalletBalance)
- {
- model.Result = AuditResult.AuditPassed;
- }
- else
- {
- model.Result = AuditResult.AuditFailed;
- }
- return View(model);
- }
- public class WalletAuditModel
- {
- public decimal TotalDeposits { get; set; }
- public decimal TotalWithdrawals { get; set; }
- public decimal ComputedWalletBalance { get; set; }
- public decimal AccountedBalance { get; set; }
- public decimal ActualWalletBalance { get; set; }
- public AuditResult Result { get; set; }
- }
- public enum AuditResult
- {
- AuditPassed,
- AuditFailed
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement