예제 #1
0
        public static IQueryable <Income> Where(this IQueryable <Income> query, IncomeGetBinding binding, MainContext context)
        {
            int?currencyId = context.Currencies.GetId(binding.CurrencyId);
            int?sourceId   = context.IncomeSources.GetId(binding.SourceId);
            int?typeId     = context.IncomeTypes.GetId(binding.TypeId);

            return(query.WhereIf(binding.From.HasValue, x => x.Date >= binding.From)
                   .WhereIf(binding.To.HasValue, x => x.Date <= binding.To)
                   .WhereIf(typeId.HasValue, x => x.IncomeTypeId == typeId)
                   .WhereIf(binding.Day != null, x => binding.Day.Contains(x.Date.DayOfWeek))
                   .WhereIf(sourceId.HasValue, x => x.IncomeSourceId == sourceId)
                   .WhereIf(currencyId.HasValue, x => x.CurrencyId == currencyId));
        }
예제 #2
0
 public PagedView <View.Income> Get(IncomeGetBinding binding)
 {
     using (var context = GetMainContext())
     {
         return(context.Incomes.WhereUser(UserId)
                .Include(x => x.Currency)
                .Include(x => x.IncomeSource)
                .Include(x => x.IncomeType)
                .Where(binding, context)
                .OrderBy(binding)
                .Select(x => new View.Income(x))
                .ToPagedView(binding));
     }
 }
예제 #3
0
        public static IOrderedQueryable <Income> OrderBy(this IQueryable <Income> query, IncomeGetBinding binding)
        {
            switch (binding.OrderBy)
            {
            case IncomeSort.Date:
                return(query.OrderBy(binding.OrderAscending, x => x.Date));

            case IncomeSort.Amount:
                return(query.OrderBy(binding.OrderAscending, x => x.Amount));

            default:
                return(query.OrderBy(binding.OrderAscending, x => x.Date));
            }
        }