/// <summary> /// POST Call to the API service /// Get Vehicles that accord to the 3 filter values in the model /// </summary> /// <param name="apiModel">Contains the filters</param> /// <returns>Vehicles</returns> public async Task <IEnumerable <VehicleDTO> > GetVehiclesAsync(VehFilterAPI apiModel) { //Set uri for endpoint var uri = "api/vehicle/"; HttpResponseMessage response; if (apiModel == null) { //If no model, jsut get all vehicles response = await _client.GetAsync(uri); } else { //Set endpoint to filtered value uri += "filtered"; //Serialise the object to JSON for posting var json = JsonConvert.SerializeObject(apiModel); var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json"); //Post model as JSON response = await _client.PostAsync(uri, stringContent); } if (response.StatusCode != HttpStatusCode.OK) { return(null); } response.EnsureSuccessStatusCode(); //Read the response var vehicles = await response.Content.ReadAsAsync <IEnumerable <VehicleDTO> >(); return(vehicles); }
public Task <IEnumerable <VehicleDTO> > GetVehiclesAsync(VehFilterAPI apiModel) { var vehicles = _vehicles.AsEnumerable(); if (apiModel != null) { if (apiModel.state != "All") { vehicles = vehicles.Where(r => r.state == apiModel.state); } if (apiModel.makeID != Guid.Empty) { vehicles = vehicles.Where(r => r.make.id == apiModel.makeID); } if (apiModel.lPlate != null) { vehicles = vehicles.Where(r => r.licenseNum.Contains(apiModel.lPlate, StringComparison.OrdinalIgnoreCase)); } } return(Task.FromResult(vehicles)); }
// GET: Staff /// <summary> /// Vehicle List page shows all the vehicles and highlights any with open invesitgations /// </summary> /// <param name="indexModel">Model that contains the filter params and list of vehicles</param> /// <returns></returns> //Takes indexModel which contains the filtering options and applies it to the list of vehicles to be shown to the user. public async Task <IActionResult> Index([FromQuery] VehIndexModel indexModel = null) { //Set the DD lists as null to avoid errors IEnumerable <VehicleModel> vehicles = null; IEnumerable <VehicleModel> vehicleConcern = null; IEnumerable <MakeModel> makeList = null; IEnumerable <string> stateList = null; try { //Create model based on the passed values. At first will be null so everything set to default. //Once filter submitted, these will have values to filter the vehicles VehFilterAPI apiModel = VehFilterAPI.CreateModel(indexModel.selectedState, indexModel.selectedMake, indexModel.lPlateSearch); //Call API to get filtered vehicles IEnumerable <VehicleDTO> vehicleDTOs = await _beService.GetVehiclesAsync(apiModel); vehicles = VehicleModel.CreateModelNumerable(vehicleDTOs); //Create seperate list for vehicles with damage concerns so can display them at the top vehicleConcern = vehicles.Where(x => x.state == "Under Investigation").ToList(); //Drop those in the concern list to avoid duplicates vehicles = vehicles.Except(vehicleConcern); //Call API to get Make lists makeList = MakeModel.CreateModelNumerable(await _beService.GetMakesAsync()); //Create model based off the new lists e.g. indexModel = VehIndexModel.CreateModel(vehicles, vehicleConcern, makeList, indexModel.selectedMake, indexModel.selectedState, indexModel.lPlateSearch); } catch { vehicles = Array.Empty <VehicleModel>(); makeList = Array.Empty <MakeModel>(); stateList = Array.Empty <string>(); indexModel = VehIndexModel.CreateModel(null, null, null, Guid.Empty, null, null); } //Return view with model return(View("VehicleList", indexModel)); }