public IEnumerable <IIncomingPayment> GetIncomingPayments(IIncomingPaymentFilter incomingPaymentFilter) { Expression <Func <IIncomingPayment, bool> > predicate = payment => IsAccountMatch(incomingPaymentFilter, payment) && IsTypeMatch(incomingPaymentFilter, payment) && IsFromDateMatch(incomingPaymentFilter, payment) && IsToDateMatch(incomingPaymentFilter, payment); return(dataStore.IncomingPayments.AsQueryable().Where(predicate.Compile())); }
private IObservable <IncomingPaymentsResult> CreateIncomingPaymentsObservable() { return(Observable.Return(GetSelectedAccountIds()) .Select(accountIds => { IIncomingPaymentFilter incomingPaymentFilter = CreateIncomingPaymentFilter(accountIds); IReadOnlyCollection <IIncomingPayment> incomingPayments = incomingPaymentRepository.GetIncomingPayments(incomingPaymentFilter).ToList(); return new IncomingPaymentsResult(incomingPaymentFilter, incomingPayments); })); }
private static bool IsTypeMatch(IIncomingPaymentFilter paymentFilter, IIncomingPayment payment) { return(paymentFilter.Types.Contains(payment.Type)); }
public IncomingPaymentsResult(IIncomingPaymentFilter incomingPaymentFilter, IReadOnlyCollection <IIncomingPayment> incomingPayments) { IncomingPaymentFilter = incomingPaymentFilter; IncomingPayments = incomingPayments; }
private static IDictionary <string, float> GetAmountPercentData(IReadOnlyCollection <IIncomingPayment> incomingPayments, IIncomingPaymentFilter incomingPaymentFilter) { Dictionary <string, List <IIncomingPayment> > incomingPaymentWithType = incomingPaymentFilter.Types.ToDictionary(type => type.ToString(), type => incomingPayments.Where(payment => payment.Type == type).ToList()); float totalAmount = incomingPaymentWithType.Sum(paymentGroup => paymentGroup.Value.Sum(payment => payment.Amount)); return(incomingPaymentWithType.ToDictionary(paymentGroup => paymentGroup.Key, paymentGroup => paymentGroup.Value.Sum(payment => payment.Amount) * 100 / totalAmount)); }
public IChartPairData GetChartData(IReadOnlyCollection <IIncomingPayment> incomingPayments, IIncomingPaymentFilter incomingPaymentFilter) { return(new ChartPairData { Ids = incomingPayments.Select(payment => payment.Id).ToList(), AmountPercentData = GetAmountPercentData(incomingPayments, incomingPaymentFilter), AmountDateData = GetAmountTimeData(incomingPayments, incomingPaymentFilter) }); }