Пример #1
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);
        }
Пример #2
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);
        }
Пример #3
0
        public RentaSumDto GetRentas(int modelId)
        {
            var result = new TransferSum();
            var sin    = GetSINByModelId(modelId, s => s.Wallet, s => s.Character);

            if (sin == null)
            {
                throw new BillingException("sin not found");
            }
            var sum  = new RentaSumDto();
            var list = GetListAsNoTracking <Renta>(r => r.Sin.Character.Model == modelId,
                                                   r => r.Sku.Nomenklatura.Specialisation.ProductType,
                                                   r => r.Sku.Corporation,
                                                   r => r.Shop,
                                                   r => r.Sin.Passport,
                                                   r => r.Sin.Character)
                       .Select(r =>
                               new RentaDto(r))
                       .ToList();

            sum.Rentas = list;
            sum.Sum    = list.Sum(r => r.FinalPrice);
            return(sum);
        }