public IActionResult Edit(int id, ResolutionEditModel viewResolutionToEdit) { // finish this Put method if (ModelState.IsValid) { //reassign the values of the resolution's properties with the values we've received // in the view model var resolutionToUpdate = _resolutionService.GetResolutionToEdit(id, viewResolutionToEdit); _resolutionService.EditResolution(resolutionToUpdate); return(RedirectToAction("Index")); } else { return(View(viewResolutionToEdit)); } }
// get this working first and refactor later public Resolution GetResolutionToEdit(int id, ResolutionEditModel viewResolution) { var allResolutions = _resolutionReader.GetAllResolutions(); var resolutionToEdit = _resolutionReader.GetResolutionById(id); var musicResolutions = _resolutionReader.GetMusicResolutions().Where(m => m.Id.Equals(id)); var healthResolutions = _resolutionReader.GetHealthResolutions().Where(h => h.Id.Equals(id)); var codingResolutions = _resolutionReader.GetCodingResolutions().Where(c => c.Id.Equals(id)); var languageResolutions = _resolutionReader.GetLanguageResolutions().Where(l => l.Id.Equals(id)); var percentageWithoutPercentageSign = viewResolution.PercentageCompletion.RemovePercentageSign(); var dateCompleted = viewResolution.ResolutionIsComplete ? DateTime.Parse(viewResolution.ResolutionDateCompleted) : resolutionToEdit.DateCompleted; // general properties that we can update regardless of specific type resolutionToEdit.Title = viewResolution.ResolutionTitle; resolutionToEdit.Description = viewResolution.ResolutionDescription; resolutionToEdit.Deadline = DateTime.Parse(viewResolution.ResolutionDeadline); resolutionToEdit.DateCompleted = dateCompleted; resolutionToEdit.PercentageCompleted = Int32.Parse(percentageWithoutPercentageSign); // abstract this into separate method if (musicResolutions.Any()) { var musicResolutionToEdit = musicResolutions.Where(m => m.Id.Equals(id)).SingleOrDefault(); musicResolutionToEdit.MusicGenre = viewResolution.MusicGenre; musicResolutionToEdit.Instrument = viewResolution.MusicalInstrument; } else if (healthResolutions.Any()) { var healthResolutionToEdit = healthResolutions.Where(h => h.Id.Equals(id)).SingleOrDefault(); healthResolutionToEdit.HealthArea = viewResolution.HealthArea; } else if (codingResolutions.Any()) { var codingResolutionToEdit = codingResolutions.Where(c => c.Id.Equals(id)).SingleOrDefault(); codingResolutionToEdit.Technology = viewResolution.CodingTechnology; } else { var languageResolutionToEdit = languageResolutions.Where(l => l.Id.Equals(id)).SingleOrDefault(); languageResolutionToEdit.Language = viewResolution.Language; languageResolutionToEdit.Skill = viewResolution.LanguageSkill; } return(resolutionToEdit); }
// map a resolution to its view model equivalent public ResolutionEditModel GetResolutionEditObject(int id) { var resolutionToEdit = _resolutionReader.GetResolutionById(id); var viewResolutionToEdit = new ResolutionEditModel() { ResolutionId = resolutionToEdit.Id.ToString(), ResolutionTitle = resolutionToEdit.Title, ResolutionDescription = resolutionToEdit.Description, ResolutionDeadline = resolutionToEdit.Deadline.ToString(), ResolutionType = GetResolutionType(id), PercentageCompletion = resolutionToEdit.PercentageCompleted.ToString(), MusicGenre = _resolutionReader.GetMusicGenre(id), MusicalInstrument = _resolutionReader.GetInstrument(id), HealthArea = _resolutionReader.GetHealthArea(id), CodingTechnology = _resolutionReader.GetTechnology(id), Language = _resolutionReader.GetLanguage(id), LanguageSkill = _resolutionReader.GetSkill(id) }; return(viewResolutionToEdit); }