Вид сложного вопроса, который нужно задать.
Итак, есть класс для Car
, CarDAL
(уровень доступа к данным). Уровень интерфейса для User
, IUserDAL
. И класс бизнес-логики User
.
Для MVC я получил CarsController
и CarModel
.
CarDAL
, который в основном добавляет автомобиль, получает идентификатор и связывает его стаблица ссылок, которая связывает его с пользователем:
public void AddCar(int userID, CarDTO carDTO)
{
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
string query = "DECLARE @ID TABLE(CarID INT) " +
"INSERT INTO[dbo].[auto](Price, Addition, License_Plate, MaxKm, Type, Color, NumberOfSeats, Fueltype, reservationStatus, ModelID) " +
"OUTPUT INSERTED.CarID INTO @ID " +
"VALUES(@Price, @Addition, @LicensePlate, @MaxKm, @Type, @Color, @NumberOfSeats, @FuelType, @Reserved, @ModelID) " +
"INSERT INTO[dbo].[User_Car](UserID, CarID, Role, Favorite) " +
"SELECT @UserID, c.CarID, 'verkoper', 0 FROM @ID c";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@Price", carDTO.Price);
cmd.Parameters.AddWithValue("@Addition", carDTO.Addition);
cmd.Parameters.AddWithValue("@LicensePlate", carDTO.License_Plate);
cmd.Parameters.AddWithValue("@MaxKm", carDTO.MaxKilometres);
cmd.Parameters.AddWithValue("@Type", carDTO.Type);
cmd.Parameters.AddWithValue("@Color", carDTO.Color);
cmd.Parameters.AddWithValue("@NumberOfSeats", carDTO.NumberOfSeats);
cmd.Parameters.AddWithValue("@FuelType", carDTO.Fueltype);
cmd.Parameters.AddWithValue("@ReservationStatus", carDTO.ReservationStatus);
cmd.Parameters.AddWithValue("@ModelID", carDTO.ModelID);
cmd.Parameters.AddWithValue("@UserID", userID);
}
}
}
Logic
:
IUserDAL<UserDTO, CarDTO> userDAL;
public void AddCar(int userID, CarDTO c)
{
userDAL.AddCar(userID,
new CarDTO(c.Color, c.Type, c.NumberOfSeats, c.Price, c.MaxKilometres, c.Addition, c.ModelID, c.License_Plate, c.Fueltype, c.ReservationStatus));
}
И в контроллере мне нужно установить соединение с конкретным пользователем, который уже существует вбазы данных и связать его с машиной. Сначала подумал, что я просто попытался User user = new User(???);
, но потом я не знал, что заполнить, чтобы получить UserID
от пользователя в базе данных с определенной информацией.
Контекст: функция, которую я хочуэто то, что вы в основном войдете в систему и добавите автомобиль для продажи, а затем автомобиль будет подключен к вашему UserID
, но я не знаю, как получить UserID
без необходимости входа в систему.
Итак, что у меня сейчас в CarsController
есть:
User user = new User(); //<- there needs to be a parameter of type UserDTO and I don't know what to fill in there.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddCar(CarModel car)
{
if(ModelState.IsValid)
{
user.AddCar(1,
new DTO.CarDTO(car.Color, car.Type, car.NumberOfSeats, car.Price, car.MaxKilometres, car.Addition, car.ModelID, car.License_Plate, car.Fueltype, car.ReservationStatus));
return RedirectToAction("Index");
}
return View();
}
И последнее в CarModel
У меня есть:
public EnumsDTO.Color? Color { get; set; }
public EnumsDTO.Type? Type { get; set; }
public int? NumberOfSeats { get; set; }
public decimal? Price { get; set; }
public int? MaxKilometres { get; set; }
public decimal? Addition { get; set; }
public int? ModelID { get; set; }
public string? License_Plate { get; set; }
public EnumsDTO.Fuel? Fueltype { get; set; }
public bool ReservationStatus { get; set; }
tl; dr Мне нужна функция, с помощью которой вы можете добавить автомобиль в базу данных, но у автомобиля, очевидно, есть продавец, поэтому его необходимо подключить, войдя в систему. Поэтому, я думаю, что сначала необходимо выполнить вход. Но главная важная функция заключается в том, что вы можете добавить автомобиль и связать его вместе с пользователем в базе данных. Проблема в том, что я не знаю, как поместить это в код в контроллере.
ps также, если кто-то может сформулировать вопрос лучше, пожалуйста, скажите мне.