public async Task<VehicleResponseViewModel> SaveVehicle(VehicleViewModel vm, string userName)
    {
      var response = new VehicleResponseViewModel();
      try
      {
        var user = _userService.GetUserByUsername(userName);
        var vehicle = _db.Vehicles.FirstOrDefault(t => t.Id == vm.Id);
        if(vehicle==null)
        {
          if (IsVehicleAlreadyExists(vm.RegistrationNo).IsSuccess)
          {
            response.IsSuccess = false;
            response.Message = "Vehcile already registered with system.";

            return response;
          }


          var vt = vm.ToModel();
          vt.UpdatedBy = user.Id;
          vt.CreatedBy = user.Id;
          vt.CreatedOn = DateTime.UtcNow;
          vt.UpdatedOn = DateTime.UtcNow;

          _db.Vehicles.Add(vt);
          await _db.SaveChangesAsync();
          response.Id = vt.Id;

          response.IsSuccess = true;
          response.Message = "New Vehicle has been added.";
        }
        else
        {
          vehicle.UpdatedOn = DateTime.UtcNow;
          vehicle.UpdatedBy = user.Id;
          vehicle.ProductionYear = vm.ProductionYear;
          vehicle.InitialOdometerReading = vm.InitialOdometerReading;
          vehicle.IsActive = vm.IsActive;


          _db.Vehicles.Update(vehicle);
          await _db.SaveChangesAsync();

          response.IsSuccess = true;
          response.Message = "Vehicle detail has been updated.";
        }
      }
      catch (Exception ex)
      {
        logger.LogError(ex.ToString());
        response.IsSuccess = false;
        response.Message = "Operation failed.Please try again.";
      }


      return response;
    }