Пример #1
0
        public async Task <IActionResult> UpdateVehicle(int id, [FromBody] SaveVehicleResource vehicleResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var vehicle = await vehicleRepository.GetVehicle(id);

            if (vehicle == null)
            {
                return(NotFound());
            }

            mapper.Map <SaveVehicleResource, Vehicle>(vehicleResource, vehicle);
            vehicle.LastUpdatedOn = DateTime.Now;
            await unitOfwork.CompleteAsync();

            vehicle = await vehicleRepository.GetVehicle(vehicle.Id);

            var result = mapper.Map <Vehicle, VehicleResource>(vehicle);

            return(Ok(result));
        }
Пример #2
0
        public IActionResult UpdateVehicle(int id, [FromBody] SaveVehicleResource vehicleResource)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var vehicle = repository.GetVehicle(id);

            if (vehicle == null)
            {
                return NotFound();
            }

            mapper.Map(vehicleResource, vehicle);
            vehicle.LastUpdate = DateTime.Now;
            unitOfWork.Complete();

            vehicle = repository.GetVehicle(vehicle.Id);

            var result = mapper.Map<Vehicle, VehicleResource>(vehicle);

            return Ok(result);
        }
Пример #3
0
        public async Task <IActionResult> UpdateVechicle(int id, [FromBody] SaveVehicleResource vehicleResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var vehicle = await repository.GetVehicle(id);

            if (vehicle == null)
            {
                return(NotFound());
            }

            vehicle.VehicleFeatures      = new Collection <VehicleFeature>();
            context.Entry(vehicle).State = EntityState.Modified;
            await unitOfWork.CompleteAsync();

            vehicle                      = mapper.Map <SaveVehicleResource, Vehicle>(vehicleResource, vehicle);
            vehicle.LastUpdate           = DateTime.Now;
            context.Entry(vehicle).State = EntityState.Modified;
            await unitOfWork.CompleteAsync();

            return(Ok());
        }
Пример #4
0
        public async Task <IActionResult> CreateVehicle([FromBody] SaveVehicleResource vehicleResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            #region Unnecessary ModelId, FeatureId Validation - comes from drop-down in client
            //var model = await context.Models.FindAsync(vehicleResource.ModelId);
            //if (model == null)
            //{
            //    ModelState.AddModelError("ModelId", "Invalid modelId.");
            //    return BadRequest(ModelState);
            //}

            //var notFoundFeatures = vehicleResource.Features.Where(f => context.Features.Find(f) == null);
            //if (notFoundFeatures.Any())
            //{
            //    ModelState.AddModelError("FeatureId", "Invalid featureId.");
            //    return BadRequest(ModelState);
            //}
            #region Depricated - Rewritten as lambda
            //foreach (int vId in vehicleResource.Features)
            //{
            //    var feature = await context.Features.FindAsync(vId);
            //    if (feature == null)
            //    {
            //        ModelState.AddModelError("FeatureId", "Invalid featureId.");
            //        return BadRequest(ModelState);
            //    }
            //}
            #endregion
            #endregion


            #region Business Rule Validation Sample
            // An example would be: don't allow more than 5 cars to be introduced per business day
            //if(//Put Business Rules Logic in Method/Service and Call Here)
            //{
            //    ModelState.AddModelError("..", "error");
            //    return BadRequest(ModelState);
            //}
            #endregion

            var vehicle = mapper.Map <SaveVehicleResource, Vehicle>(vehicleResource);
            vehicle.LastUpdate = DateTime.Now;

            repository.Add(vehicle);
            await unitOfWork.CompleteAsync();

            #region Depricated - Pass through Repository to Decouple
            //context.Vehicles.Add(vehicle);
            #endregion
            #region Depricated - Moved to IUnitOfWork
            //await context.SaveChangesAsync();
            #endregion

            #region One way of including Eager loaded data for VehicleResource return
            //// Not necessary to return this to vehicle.Model -> once EF has loaded into context will update internally
            //await context.Models.Include(m => m.Make).SingleOrDefaultAsync(m => m.Id == vehicle.ModelId);
            #endregion

            // Fetch complete vehicle object - reset object ("rehydrate")
            vehicle = await repository.GetVehicle(vehicle.Id);

            var result = mapper.Map <Vehicle, VehicleResource>(vehicle);

            return(Ok(result));

            #region Depricated - Should be returning domain resources not models directly
            //return Ok(vehicle);
            #endregion

            ////Will serialize as json and return with 200 success response
            //return Ok(vehicle);
        }
        public async Task <IActionResult> DeleteVehicle(int id, [FromBody] SaveVehicleResource vehicleResource)
        {
            var result = await service.DeleteVehicle(id);

            return(Ok(result));
        }
        public async Task <IActionResult> CreateVehicle([FromBody] SaveVehicleResource vehicleResource)
        {
            var vehicle = await service.CreateVehicle(vehicleResource);

            return(Ok(vehicle));
        }
Пример #7
0
        /// <summary>
        /// Create new vehicle and store it to database.
        /// </summary>
        /// <returns></returns>
        public async Task <Vehicle> CreateVehicle(SaveVehicleResource vehicleResource)
        {
            var vehicle = await Repository.CreateVehicle(vehicleResource);

            return(vehicle);
        }