Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }