public async Task <ActionResult <IList <string> > > GetCars(string brand, string model, short?year, EnumColor[] colors, string[] optionals) { IEnumerable <CarModel> cars = CarRepository.Cars; if (!string.IsNullOrEmpty(brand)) { cars = cars.Where(x => x.Brand.Contains(brand, StringComparison.OrdinalIgnoreCase)); } if (!string.IsNullOrEmpty(model)) { cars = cars.Where(x => x.Model.Contains(model, StringComparison.OrdinalIgnoreCase)); } if (year != null && year >= 0) { cars = cars.Where(x => x.Year == year); } if (colors != null && colors.Count() > 0) { cars = cars.Where(x => colors.Any(y => y == x.Color)); } if (optionals != null && optionals.Count() > 0 && !string.IsNullOrEmpty(optionals.FirstOrDefault())) { cars = cars.Where(car => optionals.Any(v => car.Optionals.Any(o => o.Contains(v, StringComparison.OrdinalIgnoreCase)))); } Request.HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "X-Total-Count"); Request.HttpContext.Response.Headers.Add("X-Total-Count", cars?.Count().ToString()); return(await Task.FromResult <ActionResult>(this.Ok(XmlExtension.ObjectToXml(cars.ToList())))); }
public async Task <ActionResult <string> > GetCar(string id) { Guid identifier = Guid.Empty; if (!Guid.TryParse(id, out identifier)) { return(await Task.FromResult <ActionResult>(this.BadRequest(new ErrorModel(1, "Id", "Invalid ID!").ToList()))); } var car = this.SelectCar(identifier); if (car == null) { return(await Task.FromResult <ActionResult>(this.NotFound())); } else { return(await Task.FromResult <ActionResult>(this.Ok(XmlExtension.ObjectToXml(car)))); } }