// GET: Consumer/Edit/5 public async Task <IActionResult> Edit(int?id) { //Check if user logged in: if (HttpContext.Session.GetString("Username") == null) { return(Redirect("/Home/Login")); } if (id == null) { return(NotFound()); } // Find consumer Consumer consumerToEdit = await _context.Consumers.SingleOrDefaultAsync(m => m.ID == id); if (consumerToEdit == null) { return(NotFound()); } EditConsumerViewModel editConsumerVM = new EditConsumerViewModel { ID = consumerToEdit.ID, LastName = consumerToEdit.LastName, FirstName = consumerToEdit.FirstName, DOB = consumerToEdit.DOB, Active = consumerToEdit.Active, EndDate = consumerToEdit.EndDate }; return(View(editConsumerVM)); }
// METHODS public void SetShredDate(EditConsumerViewModel consumerVM) { if (consumerVM.EndDate == null) { this.ShredDate = null; } if (consumerVM.EndDate.HasValue) { this.ShredDate = consumerVM.EndDate.Value.AddYears(7).AddDays(1); this.Status = Models.Status.Inactive; } }
public async Task <IActionResult> Edit(EditConsumerViewModel editConsumerVM) { if (ModelState.IsValid) { //Get consumer Consumer consumerToEdit = _context.Consumers.Single(c => c.ID == editConsumerVM.ID); // Get associated files consumerToEdit.Files = _context.Files.Where(f => f.ConsumerID == consumerToEdit.ID).ToList(); consumerToEdit.LastName = editConsumerVM.LastName; consumerToEdit.FirstName = editConsumerVM.FirstName; consumerToEdit.DOB = editConsumerVM.DOB; // ONLY when a consumer's active state is changed (so it won't affect file statuses otherwise): if (editConsumerVM.Active != consumerToEdit.Active) { // If consumer becomes inactive, add EndDate if (editConsumerVM.Active == false) { consumerToEdit.Active = false; consumerToEdit.EndDate = editConsumerVM.EndDate; if (consumerToEdit.Files.Count != 0) { // Change status of files to "Inactive" and set file ShredDate foreach (File file in consumerToEdit.Files) { file.SetShredDate(editConsumerVM); _context.Update(file); } } } // If inactive consumer becomes active, wipe EndDate and change status of files to "OK" if (editConsumerVM.Active == true) { consumerToEdit.Active = true; consumerToEdit.EndDate = null; editConsumerVM.EndDate = null; if (consumerToEdit.Files.Count > 0) { foreach (File file in consumerToEdit.Files) { file.Status = Status.OK; file.SetShredDate(editConsumerVM); _context.Update(file); } } } } // If the active state remains unchanged, but an inactive consumer's EndDate is changed: if (editConsumerVM.EndDate != consumerToEdit.EndDate) { // NOT that we'll allow it to be wiped... if (editConsumerVM.EndDate == null && editConsumerVM.Active == false) { consumerToEdit.EndDate = DateTime.Now; } else // Otherwise, set the change to the consumer { consumerToEdit.EndDate = editConsumerVM.EndDate; } // And update their files' ShredDate if (consumerToEdit.Files != null) { foreach (File file in consumerToEdit.Files) { file.SetShredDate(editConsumerVM); _context.Update(file); } } } _context.Update(consumerToEdit); await _context.SaveChangesAsync(); return(Redirect("/Consumers/Index")); } ; return(View(editConsumerVM)); }