public ActionResult Create(RenterViewModel personedit) { var myContext = new Models.UsersContext(); personedit.ModelObject.CreateUser = myContext.GetUserID(Csla.ApplicationContext.User.Identity.Name); if (personedit.Save(ModelState, false)) { return RedirectToAction("Index", new { id = personedit.ModelObject.RenterID }); } else { ViewData.Model = personedit; return View(); } //try //{ // if (SaveObject(personedit, false)) // return RedirectToAction("Index", new { id = personedit.RenterID }); //else // return View(); //} //catch //{ // return View(); //} }
//public async Task<IActionResult> Create([Bind("Id,FirstName,LastName,UserId")] Renter renter) //Above is original code. A.Sanchez: Using simpler method from trashcollector, let me know if you have questions public async Task <IActionResult> Create(RenterViewModel renterViewModel) { if (ModelState.IsValid) { //string uniqueFileName = UploadedFile(renterViewModel); //junction table created: UserPreferences var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var renter = renterViewModel.Renter; var value = renterViewModel.Value; //Only holds an int, but the code was trying to use it as a collection in the for loop below renter.UserId = userId; // renter.ProfileUrl = uniqueFileName; _context.Renters.Add(renter); for (int i = 0; i < 9; i++) { var newPreferences = new UserPreferences(); newPreferences.PreferenceId = i + 1; newPreferences.UserId = userId; newPreferences.Value = value[i]; _context.UserPreferences.Add(newPreferences); } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } //ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", renter.UserId); return(View(renterViewModel)); }
// GET: Renters public IActionResult Index() { var viewModel = new RenterViewModel(); var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var renter = _context.Renters.FirstOrDefault(a => a.UserId == userId); if (renter is null) { return(RedirectToAction("Create")); } viewModel.Renter = renter; var leaseholders = _context.Leaseholders .Include(l => l.Property) .Include(l => l.Property.Address) .ToList(); ////leaseholders = leaseholders.Where( l => l.Property.Address.City == ) viewModel.Leaseholders = leaseholders; //Commented out the leaseholders Include statements because I have the same thing in the algorithm, and I think it's better there viewModel.Leaseholders = MatchUsers(renter, "Milwaukee"); return(View(viewModel)); }
// GET: Renters/Details/5 public IActionResult Details(int?id) { var viewModel = new RenterViewModel(); var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); viewModel.Leaseholder = _context.Leaseholders .Include(l => l.Property) .Include(l => l.Property.Address) .FirstOrDefault(l => l.Id == id); viewModel.UserPreferences = _context.UserPreferences.Include(u => u.PreferenceName).Where(u => u.UserId == userId).ToList(); return(View(viewModel)); }
private string UploadedFile(RenterViewModel viewModel) { string uniqueFileName = null; if (viewModel.ProfileUrl != null) { string uploadsFolder = Path.Combine(webHostEnvironment.WebRootPath, "img"); uniqueFileName = Guid.NewGuid().ToString() + "_" + viewModel.ProfileUrl.FileName; string FilePath = Path.Combine(uploadsFolder, uniqueFileName); using (var fileStream = new FileStream(FilePath, FileMode.Create)) { viewModel.ProfileUrl.CopyTo(fileStream); } } return(uniqueFileName); }