public async Task <IActionResult> GetPropertiesForUser([FromQuery] PropertyListFilter filter) { var propertiesDto = await _propertyService.GetPropertiesForUser(filter); var propertiesVM = new List <PropertyListViewModel>(); foreach (var propertyDto in propertiesDto) { var propertyVm = _mapper.Map <PropertyListViewModel>(propertyDto); propertiesVM.Add(propertyVm); } return(Ok(propertiesVM)); }
private async Task <List <Property> > GetFilteredProperties(PropertyListFilter filter, string userId) { var properties = await _unitOfWork.Repository <Property>().GetAllAsync(p => p.UserId == userId); if (filter.Status != null && filter.Category != null) { properties = properties.Where(p => p.Status == filter.Status && p.Category == filter.Category); } if (filter.Status == null && filter.Category != null) { properties = properties.Where(p => p.Category == filter.Category); } if (filter.Status != null && filter.Category == null) { properties = properties.Where(p => p.Status == filter.Status); } return(await properties.Skip(filter.Skip).Take(filter.Take).ToListAsync()); }
public async Task <IEnumerable <PropertyListDto> > GetPropertiesForUser(PropertyListFilter filter) { var user = await _authentication.GetCurrentUserAsync(); var properties = await GetFilteredProperties(filter, user.Id); var propertiesDto = new List <PropertyListDto>(); foreach (var property in properties) { var propertyDto = _mapper.Map <PropertyListDto>(property); var photo = await _unitOfWork.Repository <PropertyPhoto>().GetAsync(p => p.PropertyId == property.Id); if (photo != null) { propertyDto.Image = photo.Path; } propertiesDto.Add(propertyDto); } return(propertiesDto); }