// GET: Preferences/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var datePreference = await _context.DatePreference.Include(m => m.User).Include(m => m.Shift).SingleOrDefaultAsync(m => m.Id == id); if (datePreference == null) { return(NotFound()); } DatePreferenceEditViewModel vm = new DatePreferenceEditViewModel() { Id = datePreference.Id, Day = datePreference.Shift.ShiftDate.GetValueOrDefault(), IsPreffered = datePreference.IsPreffered, UserId = datePreference.UserId.GetValueOrDefault() }; //ViewData["UserId"] = new SelectList(_context.User, "Id", "Email", datePreference.UserId); return(View(vm)); }
public async Task <IActionResult> Edit(int id, [Bind("Id,UserId,Day,IsPreffered")] DatePreferenceEditViewModel vm) { if (id != vm.Id) { return(NotFound()); } var datePreference = await _context.DatePreference.Include(m => m.User).Include(m => m.Shift).SingleOrDefaultAsync(m => m.Id == id); if (datePreference == null) { return(NotFound()); } datePreference.IsPreffered = vm.IsPreffered; #region shift date existence checking, again adding if not exists - same as on create var shift = await _context.Shift.SingleOrDefaultAsync(m => m.ShiftDate == vm.Day); if (shift == null) { shift = new Shift() { IsShorterDay = false, ShiftDate = vm.Day }; try { _context.Add(shift); await _context.SaveChangesAsync(); } catch { return(NotFound("Desired date preference doesn't have corresponding shift available.")); } } #endregion datePreference.Shift = shift; if (ModelState.IsValid) { try { _context.Update(datePreference); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!DatePreferenceExists(datePreference.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(vm)); }