public async Task <QueryResult <Rental> > GetRentals(RentalQuery queryObject = null) { var queryResult = new QueryResult <Rental>(); var query = context.Rentals .Include(rental => rental.Tenant) .Include(rental => rental.Property) .ThenInclude(property => property.Suburb) .ThenInclude(suburb => suburb.State) .AsQueryable(); queryResult.TotalItems = await query.CountAsync(); if (queryObject != null) { query = this.FilteredRequired(query, queryObject); query = this.SortByRequired(query, queryObject); queryResult.TotalItems = await query.CountAsync(); query = this.PagingRequired(query, queryObject); } queryResult.Items = await query.ToListAsync(); foreach (var rental in queryResult.Items) { rental.Property.Owner = await context.Owners.SingleOrDefaultAsync(owner => owner.Id == rental.Property.OwnerId); } return(queryResult); }
private IQueryable <Rental> PagingRequired(IQueryable <Rental> query, RentalQuery queryObject) { if (queryObject.Page != 0 || queryObject.PageSize != 0) { return(query.ApplyPaging(queryObject)); } return(query); }
public ActionResult Cancelled() { var query = new RentalQuery { IsCancelled = true }; var cancelledRooms = _unitOfWork.Rentals.GetRentals(query); var viewModel = Mapper.Map <IEnumerable <Rental>, List <RentalListViewModel> >(cancelledRooms); return(View(viewModel)); }
public ActionResult Index() { var query = new RentalQuery { IsCancelled = false }; var rentals = _unitOfWork.Rentals.GetRentals(query); var viewModel = Mapper.Map <IEnumerable <Rental>, List <RentalListViewModel> >(rentals); return(View(viewModel)); }
public ActionResult ExpiringThisMonth() { var firstDayOfMonth = DateTimeExtensions.CalculateFirstDayOfThisMonth(); var lastDayOfMonth = DateTimeExtensions.CalculateLastDayOfThisMonth(firstDayOfMonth); var query = new RentalQuery { StartDate = firstDayOfMonth, EndDate = lastDayOfMonth }; var expiringRentals = _unitOfWork.Rentals.GetRentals(query); var viewModel = Mapper.Map <IEnumerable <Rental>, List <RentalListViewModel> >(expiringRentals); return(View(viewModel)); }
private IQueryable <Rental> SortByRequired(IQueryable <Rental> query, RentalQuery queryObject) { if (!String.IsNullOrWhiteSpace(queryObject.SortBy)) { var columnsMap = new Dictionary <string, Expression <Func <Rental, object> > >() { ["owner"] = rental => rental.Property.Owner.Name, ["tenant"] = rental => rental.Tenant.Name, ["suburb"] = rental => rental.Property.Suburb.Name, ["state"] = rental => rental.Property.Suburb.State.Acronym, ["payment"] = rental => rental.Payment }; return(query.ApplyOrdering(queryObject, columnsMap)); } return(query); }
private IQueryable <Rental> FilteredRequired(IQueryable <Rental> query, RentalQuery queryObject) { if (queryObject.SuburbId.HasValue) { query = query.Where(rental => rental.Property.SuburbId == queryObject.SuburbId.Value); } if (queryObject.StateId.HasValue) { query = query.Where(rental => rental.Property.Suburb.StateId == queryObject.StateId.Value); } if (queryObject.MinimumRent.HasValue && queryObject.MaximumRent.HasValue) { query = query.Where(rental => rental.Payment >= queryObject.MinimumRent && rental.Payment <= queryObject.MaximumRent); } if (queryObject.StartDate.HasValue && queryObject.EndDate.HasValue) { query = query.Where(rental => rental.StartDate >= queryObject.StartDate.Value && rental.EndDate <= queryObject.EndDate.Value); } return(query); }
public IEnumerable <Rental> GetRentals(RentalQuery query) { var queryFromDb = _context.Rentals .Include(r => r.Room) .Include(r => r.Tenant) .AsQueryable(); if (query.IsCancelled.HasValue && query.IsCancelled == true) { queryFromDb = queryFromDb.Where(r => r.IsCancelled); } if (query.IsCancelled.HasValue && query.IsCancelled == false) { queryFromDb = queryFromDb.Where(r => !r.IsCancelled); } if (query.StartDate.HasValue && query.EndDate.HasValue) { queryFromDb = queryFromDb.Where(e => e.StartDate >= query.StartDate && e.EndDate <= query.EndDate); } return(queryFromDb.ToList()); }