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())); }
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); })); }
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); })); }
private static bool IsTypeMatch(IIncomingTaxFilter incomingTaxFilter, IIncomingTax tax) { return(incomingTaxFilter.Types.Contains(tax.Type)); }
public IncomingTaxesResult(IIncomingTaxFilter incomingTaxFilter, IReadOnlyCollection <IIncomingTax> incomingTaxes) { IncomingTaxFilter = incomingTaxFilter; IncomingTaxes = incomingTaxes; }
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)); }
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) }); }