コード例 #1
0
        public IEnumerable <IIncomingTax> GetIncomingTaxes(IIncomingTaxFilter incomingTaxFilter)
        {
            Expression <Func <IIncomingTax, bool> > predicate = tax => IsPaymentMatch(incomingTaxFilter, tax) &&
                                                                IsTypeMatch(incomingTaxFilter, tax);

            return(dataStore.IncomingTaxes.AsQueryable().Where(predicate.Compile()));
        }
コード例 #2
0
 private IObservable <IncomingTaxesResult> CreateIncomingTaxesObservable(IObservable <IncomingPaymentsResult> incomingPaymentsObservable)
 {
     return(incomingPaymentsObservable
            .Select(paymentsResult =>
     {
         IIncomingTaxFilter incomingTaxFilter = CreateIncomingTaxFilter(paymentsResult.IncomingPayments.Select(payment => payment.Id));
         IReadOnlyCollection <IIncomingTax> incomingTaxes = incomingTaxRepository.GetIncomingTaxes(incomingTaxFilter).ToList();
         return new IncomingTaxesResult(incomingTaxFilter, incomingTaxes);
     }));
 }
コード例 #3
0
 private IObservable <IncomingTaxesResult> CreateIncomingTaxesObservable()
 {
     return(Observable.Return(GetSelectedIds(incomingPaymentIdList))
            .Select(paymentIds =>
     {
         IIncomingTaxFilter incomingTaxFilter = CreateIncomingTaxFilter(paymentIds);
         IReadOnlyCollection <IIncomingTax> incomingTaxes = incomingTaxRepository.GetIncomingTaxes(incomingTaxFilter).ToList();
         return new IncomingTaxesResult(incomingTaxFilter, incomingTaxes);
     }));
 }
コード例 #4
0
 private static bool IsTypeMatch(IIncomingTaxFilter incomingTaxFilter, IIncomingTax tax)
 {
     return(incomingTaxFilter.Types.Contains(tax.Type));
 }
コード例 #5
0
 public IncomingTaxesResult(IIncomingTaxFilter incomingTaxFilter, IReadOnlyCollection <IIncomingTax> incomingTaxes)
 {
     IncomingTaxFilter = incomingTaxFilter;
     IncomingTaxes     = incomingTaxes;
 }
コード例 #6
0
        private static IDictionary <string, float> GetAmountPercentData(IReadOnlyCollection <IIncomingTax> incomingTaxes, IIncomingTaxFilter incomingTaxFilter)
        {
            Dictionary <string, List <IIncomingTax> > incomingTaxesWithType = incomingTaxFilter.Types.ToDictionary(type => type.ToString(), type => incomingTaxes.Where(tax => tax.Type == type).ToList());
            float totalAmount = incomingTaxesWithType.Sum(taxGroup => taxGroup.Value.Sum(tax => tax.Amount));

            return(incomingTaxesWithType.ToDictionary(taxGroup => taxGroup.Key, taxGroup => taxGroup.Value.Sum(tax => tax.Amount) * 100 / totalAmount));
        }
コード例 #7
0
 public IChartPairData GetChartData(IReadOnlyCollection <IIncomingTax> incomingTaxes, IIncomingTaxFilter incomingTaxFilter)
 {
     return(new ChartPairData
     {
         Ids = incomingTaxes.Select(tax => tax.Id).ToList(),
         AmountPercentData = GetAmountPercentData(incomingTaxes, incomingTaxFilter),
         AmountDateData = GetAmountTimeData(incomingTaxes, incomingTaxFilter)
     });
 }