protected string GetWalletName(Wallet wallet, bool anon, List <SIN> sinCache, List <ShopWallet> shopCache, string owner = "") { if (wallet == null) { return(ErrorWalletName($"Передан пустой кошелек")); } switch (wallet.WalletType) { case (int)WalletTypes.Character: var sin = sinCache.FirstOrDefault(s => s.WalletId == wallet.Id); if (sin == null) { return(owner); } return(BillingHelper.GetPassportName(sin.Passport, anon)); case (int)WalletTypes.Corporation: return(ErrorWalletName($"Переводы корпорациям не реализованы wallet: {wallet.Id}")); case (int)WalletTypes.Shop: var shop = shopCache.FirstOrDefault(s => s.WalletId == wallet.Id); if (shop == null) { return(ErrorWalletName($"Не найден shop для wallet {wallet.Id}")); } return($"{shop.Id} {shop.Name}"); case (int)WalletTypes.MIR: return("MIR"); default: return(string.Empty); } }
public TransferSum GetTransfers(int modelId) { var result = new TransferSum(); var sin = GetSINByModelId(modelId, s => s.Wallet, s => s.Passport); if (sin == null) { throw new BillingException("sin not found"); } var listFrom = GetListAsNoTracking <Transfer>(t => t.WalletFromId == sin.WalletId, t => t.WalletFrom, t => t.WalletTo); var listFromTruncated = listFrom.Where(t => t.RentaId == null).ToList(); var listTo = GetListAsNoTracking <Transfer>(t => t.WalletToId == sin.WalletId, t => t.WalletFrom, t => t.WalletTo); var owner = BillingHelper.GetPassportName(sin.Passport); result.Transfers = CreateTransfersDto(listFromTruncated, listTo, owner); result.Transfers.Insert(0, CreateFakeTransferDto(-1, listFrom.Where(r => r.RentaId != null && !r.Overdraft).Sum(t => t.Amount), false, "Выплаченная сумма по рентам", owner, false)); result.Transfers.Insert(0, CreateFakeTransferDto(-2, listFrom.Where(r => r.RentaId != null && r.Overdraft).Sum(t => t.Amount), false, "Задолженность по рентам", owner, false)); return(result); }
public async Task <TransferSum> GetTransfersAsync(int modelId) { var result = new TransferSum(); var sin = GetSINByModelId(modelId, s => s.Wallet, s => s.Passport); if (sin == null) { throw new BillingException("sin not found"); } var owner = BillingHelper.GetPassportName(sin.Passport); var listFrom = await GetListAsNoTrackingAsync <Transfer>(t => t.WalletFromId == sin.WalletId, t => t.WalletFrom, t => t.WalletTo); var listFromTruncated = listFrom.Where(t => t.RentaId == null).ToList(); var listTo = await GetListAsNoTrackingAsync <Transfer>(t => t.WalletToId == sin.WalletId, t => t.WalletFrom, t => t.WalletTo); var allTransfers = await CreateTransfersDtoAsync(listFromTruncated, owner, TransferType.Incoming); allTransfers.AddRange(await CreateTransfersDtoAsync(listTo, owner, TransferType.Outcoming)); result.Transfers = allTransfers.OrderByDescending(t => t.OperationTime).ToList(); result.Transfers.Insert(0, CreateFakeTransferDto(-1, listFrom.Where(r => r.RentaId != null && !r.Overdraft).Sum(t => t.Amount), false, "Выплаченная сумма по рентам", owner, false)); result.Transfers.Insert(0, CreateFakeTransferDto(-2, listFrom.Where(r => r.RentaId != null && r.Overdraft).Sum(t => t.Amount), false, "Задолженность по рентам", owner, false)); return(result); }