internal IEnumerable <Advert> Search(int userId, AdvertSearchOptions options) { if (options.Status?.ToLower() != "active" && options.Status?.ToLower() != "inactive") { throw new ArgumentOutOfRangeException("Status"); } Func <Advert, bool> filter; if (options.Status == "Active") { filter = a => a.Status == AdvertStatus.Created || a.Status == AdvertStatus.Posted || a.Status == AdvertStatus.Published; } else { filter = a => a.Status == AdvertStatus.Withdrawn || a.Status == AdvertStatus.Unknown; } return(_readModel.Adverts .Include(a => a.Advertiser) .Include(ct => ct.CatchType) .Where(u => u.Advertiser.Id == userId) .Where(filter)); }
public IActionResult Get([FromQuery] AdvertSearchOptions options) { if (!Request.QueryString.HasValue) { return(Ok(_queryMediator.GetDraftAdverts(GetUserId()))); } try { return(Ok(_queryMediator.Search(GetUserId(), options))); } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }