/// <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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        // 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));
        }