public ActionResult New() { var countries = _context.Countries.ToList(); var autoMakes = _context.AutomobileMakes.ToList(); var autoModels = _context.AutomobileModels.ToList(); var details = _context.Details.ToList(); var engines = _context.Engines.ToList(); var viewModel = new AutomobileFormViewModel() { Countries = countries, AutomobileMakes = autoMakes, AutomobileModels = autoModels, Details = details, Engines = engines, AutomobileDetails = new List <AutomobileDetail>() }; foreach (var detail in details) { var automobileDetail = new AutomobileDetail(); viewModel.AutomobileDetails.Add(automobileDetail); } return(View("AutomobileForm", viewModel)); }
public ActionResult New() { var countries = _context.Countries.ToList(); var viewModel = new AutomobileFormViewModel { Countries = countries }; return(View("AutomobileForm", viewModel)); }
public ActionResult Edit(int id) { var automobile = _context.Automobiles.SingleOrDefault(c => c.Id == id); if (automobile == null) { return(HttpNotFound()); } var viewModel = new AutomobileFormViewModel { Automobile = automobile, Countries = _context.Countries.ToList() }; return(View("AutomobileForm", viewModel)); }
public ActionResult Edit(int id) { var automobile = _context.Automobiles.SingleOrDefault(c => c.Id == id); if (automobile == null) { return(HttpNotFound()); } IEnumerable <AutomobileDetail> automobileDetailsInDb = _context.AutomobileDetails.ToList().Where(c => c.AutomobileId == id); var detailsInDb = _context.Details.ToList(); List <AutomobileDetail> automobileDetails = new List <AutomobileDetail>(); foreach (var automobileDetail in automobileDetailsInDb) { automobileDetails.Add(automobileDetail); } var viewModel = new AutomobileFormViewModel(automobile) { Countries = _context.Countries.ToList(), AutomobileMakes = _context.AutomobileMakes.ToList(), AutomobileModels = _context.AutomobileModels.ToList(), Details = detailsInDb, Engines = _context.Engines.ToList(), AutomobileDetails = automobileDetails }; if (detailsInDb.Count() > automobileDetailsInDb.Count()) { int dif = detailsInDb.Count() - automobileDetailsInDb.Count(); int i = 1; while (i <= dif) { viewModel.AutomobileDetails.Add(new AutomobileDetail()); i++; } } return(View("AutomobileForm", viewModel)); }
public ActionResult Save(Automobile automobile, List <AutomobileDetail> automobileDetails) { if (!ModelState.IsValid) { var viewModel = new AutomobileFormViewModel(automobile) { Countries = _context.Countries.ToList(), AutomobileMakes = _context.AutomobileMakes.ToList(), AutomobileModels = _context.AutomobileModels.ToList(), Details = _context.Details.ToList(), Engines = _context.Engines.ToList(), AutomobileDetails = automobileDetails }; return(View("AutomobileForm", viewModel)); } // create a variable 'automobileId' which will be passed as parameter to the 'UploadFiles' view int automobileId; // check if we create new automobile or edit existing one if (automobile.Id == 0) { automobile.DateImported = DateTime.Now; automobile.StatusId = 1; _context.Automobiles.Add(automobile); _context.SaveChanges(); List <Detail> details = _context.Details.ToList(); // List<Automobile> automobiles = _context.Automobiles.ToList(); var automobileLastId = _context.Automobiles.ToList().Last().Id; // var automobileLastId1 = _context.Automobiles.Max() // automobileId = automobiles.Last().Id; automobileId = automobileLastId; if (details.Any()) { for (int i = 0; i < details.Count(); i++) { automobileDetails[i].DetailId = details[i].Id; // automobileDetails[i].AutomobileId = automobiles.Last().Id; automobileDetails[i].AutomobileId = automobileLastId; _context.AutomobileDetails.Add(automobileDetails[i]); } } } else { automobileId = automobile.Id; var automobileInDb = _context.Automobiles.Single(c => c.Id == automobile.Id); automobileInDb.ReleaseDate = automobile.ReleaseDate; automobileInDb.CountryId = automobile.CountryId; automobileInDb.AutomobileMakeId = automobile.AutomobileMakeId; automobileInDb.AutomobileModelId = automobile.AutomobileModelId; automobileInDb.EngineId = automobile.EngineId; automobileInDb.Color = automobile.Color; automobileInDb.Transmission = automobile.Transmission; automobileInDb.Miles = automobile.Miles; if (automobileDetails.Any()) { //we take all automobileDetails correcponding to the current automobile, then set their Vaues //to the new Values coming from the view in the list automobileDetails IEnumerable <AutomobileDetail> automobileDetailsInDb = _context.AutomobileDetails.Where(c => c.AutomobileId == automobile.Id); List <AutomobileDetail> automobileDetailsOld = automobileDetails.FindAll(c => c.AutomobileId != null); int n = 0; foreach (var automobileDetail in automobileDetailsInDb) { automobileDetail.DetailValue = automobileDetailsOld[n].DetailValue; n++; } if (automobileDetails.Any(c => c.AutomobileId == null)) { //there are new automobileDetails wich should be created for first time //we set their AutomobileId to the Id of the returned from the view automobile List <AutomobileDetail> automobileDetailsNew = automobileDetails.FindAll(c => c.AutomobileId == null); List <Detail> detailsInDb = _context.Details.ToList(); foreach (var automobileDetail in automobileDetailsNew) { automobileDetail.AutomobileId = automobile.Id; } // we find the diference between all details and these which should be added in automobileDetails table // then in a loop set their detailsId and finally Add() them to the table in the DB // int dif = detailsInDb.Count() - automobileDetailsNew.Count(); int automobileDetailsNewCount = automobileDetailsNew.Count(); int detailCount = detailsInDb.Count(); for (int i = 0; i < automobileDetailsNewCount; i++) { automobileDetailsNew[i].DetailId = detailsInDb[detailCount - automobileDetailsNewCount + i].Id; _context.AutomobileDetails.Add(automobileDetailsNew[i]); } } } } _context.SaveChanges(); //the next lines prepare image model which will be used to call the Uploadfiles view IEnumerable <FileModel> filesInDb = _context.FileModels.ToList().Where(c => c.AutomobileId == automobileId); var imageModel = new ImagesFormViewModel() { AutomobileId = automobileId, FileModels = filesInDb }; // return RedirectToAction("Index", "Automobiles"); // return RedirectToAction("UploadFiles", "FileModels", automobileId); return(View("~/Views/FileModels/UploadFiles.cshtml", imageModel)); }