public IActionResult Save(int vehicleId, RepairFormModel formModel)
        {
            try
            {
                var validator = new RepairValidator();
                var results   = validator.Validate(formModel);

                if (results.Errors.Any())
                {
                    foreach (var error in results.Errors)
                    {
                        ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
                    }
                }

                if (!ModelState.IsValid)
                {
                    return(View("RepairForm", formModel));
                }

                var repair = (formModel.RepairId == AppStrings.NotSet) ?
                             _mapper.Map <Repair>(formModel) :
                             _mapper.Map <RepairFormModel, Repair>(formModel, _repairService.GetRepair(formModel.RepairId));

                _repairService.SaveRepair(repair);

                TempData["SuccessMessage"] = AppStrings.RepairSavedSuccessMsg;

                if (formModel.AddAnotherRepair)
                {
                    return(RedirectToAction(nameof(Edit), new { vehicleId }));
                }

                return(RedirectToAction("Details", "Vehicle", new { id = vehicleId }));
            }
            catch (RepairNotFoundException ex)
            {
                _logger.LogWarning(ex.Message);
                TempData["ErrorMessage"] = AppStrings.GenericErrorMsg;
                return(RedirectToAction("Details", "Vehicle", new { id = vehicleId }));
            }
            catch (Exception ex)
            {
                _logger.LogWarning($"Error occurred while attempting to save repair. {ex.Message}");
                TempData["ErrorMessage"] = AppStrings.GenericErrorMsg;
                return(RedirectToAction("Index", "Vehicle"));
            }
        }
        public IActionResult Edit(int vehicleId, int?id)
        {
            try
            {
                var vehicle = _vehicleService.GetVehicle(vehicleId, withIncludes: false);

                if (vehicle == null)
                {
                    TempData["InfoMessage"] = AppStrings.VehicleNotFoundMsg;
                    return(RedirectToAction("Index", "Vehicle"));
                }

                var vm = new RepairFormModel
                {
                    VehicleId = vehicle.Id,
                };

                if (id.HasValue)
                {
                    var repair = _repairService.GetRepair(id.Value);

                    if (repair == null)
                    {
                        TempData["InfoMessage"] = AppStrings.RepairNotFoundMsg;
                        return(RedirectToAction("Details", "Vehicle", new { id = vehicleId }));
                    }


                    vm = _mapper.Map <RepairFormModel>(repair);
                }

                vm.VehicleFullName = _vehicleService.GetVehicleFullName(vehicle);
                return(View("RepairForm", vm));
            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex.Message);
                TempData["ErrorMsg"] = AppStrings.GenericErrorMsg;
                return(RedirectToAction("Index", "Vehicle"));
            }
        }