public async Task <ActionResult> Listing(int id) { var itemQuery = await _listingService.Query(x => x.ID == id) .Include(x => x.Category) .Include(x => x.ListingMetas) .Include(x => x.ListingMetas.Select(y => y.MetaField)) .Include(x => x.ListingStats) .Include(x => x.ListingType) .SelectAsync(); var item = itemQuery.FirstOrDefault(); if (item == null) { return(new HttpNotFoundResult()); } var orders = _orderService.Queryable() .Where(x => x.ListingID == id //&& (x.Status != (int)Enum_OrderStatus.Pending || x.Status != (int)Enum_OrderStatus.Confirmed) && (x.Status != (int)Enum_OrderStatus.Cancelled) && (x.FromDate.HasValue && x.ToDate.HasValue) && (x.FromDate >= DateTime.Now || x.ToDate >= DateTime.Now)) .ToList(); List <DateTime> datesBooked = new List <DateTime>(); foreach (var order in orders) { for (DateTime date = order.FromDate.Value; date <= order.ToDate.Value; date = date.Date.AddDays(1)) { datesBooked.Add(date); } } var reviews = await _listingReviewService .Query(x => x.UserTo == item.UserID) .Include(x => x.AspNetUserFrom) .SelectAsync(); var user = await UserManager.FindByIdAsync(item.UserID); var usuarios = UserManager.Users.ToList(); var itemModel = new ListingItemModel() { ListingCurrent = item, DatesBooked = datesBooked, ListOrder = orders, User = user, ListUsers = usuarios.ToList(), ListingReviews = reviews.ToList() }; // Update stat count await _unitOfWorkAsync.SaveChangesAsync(); return(View("~/Views/Manage/ListingCalendar.cshtml", itemModel)); }
public async Task <ActionResult> Listing(int id) { var itemQuery = await _listingService.Query(x => x.ID == id) .Include(x => x.Category) .Include(x => x.ListingMetas) .Include(x => x.ListingMetas.Select(y => y.MetaField)) .Include(x => x.ListingStats) .Include(x => x.ListingType) .SelectAsync(); var item = itemQuery.FirstOrDefault(); if (item == null) { return(new HttpNotFoundResult()); } var orders = _orderService.Queryable() .Where(x => x.ListingID == id && (x.Status != (int)Enum_OrderStatus.Pending || x.Status != (int)Enum_OrderStatus.Confirmed) && (x.FromDate.HasValue && x.ToDate.HasValue) && (x.FromDate >= DateTime.Now || x.ToDate >= DateTime.Now)) .ToList(); List <DateTime> datesBooked = new List <DateTime>(); foreach (var order in orders) { for (DateTime date = order.FromDate.Value; date <= order.ToDate.Value; date = date.Date.AddDays(1)) { datesBooked.Add(date); } } var pictures = await _listingPictureservice.Query(x => x.ListingID == id).SelectAsync(); var picturesModel = pictures.Select(x => new PictureModel() { ID = x.PictureID, Url = ImageHelper.GetListingImagePath(x.PictureID), ListingID = x.ListingID, Ordering = x.Ordering }).OrderBy(x => x.Ordering).ToList(); var reviews = await _listingReviewService .Query(x => x.UserTo == item.UserID) .Include(x => x.AspNetUserFrom) .SelectAsync(); var user = await UserManager.FindByIdAsync(item.UserID); var itemModel = new ListingItemModel() { ListingCurrent = item, Pictures = picturesModel, DatesBooked = datesBooked, User = user, ListingReviews = reviews.ToList() }; // Update stat count var itemStat = item.ListingStats.FirstOrDefault(); if (itemStat == null) { _ListingStatservice.Insert(new ListingStat() { ListingID = id, CountView = 1, Created = DateTime.Now, ObjectState = Repository.Pattern.Infrastructure.ObjectState.Added }); } else { itemStat.CountView++; itemStat.ObjectState = Repository.Pattern.Infrastructure.ObjectState.Modified; _ListingStatservice.Update(itemStat); } await _unitOfWorkAsync.SaveChangesAsync(); return(View("~/Views/Listing/Listing.cshtml", itemModel)); }