public async Task <IActionResult> Details(int ID) { string userId = Common.ExtensionMethods.getUserId(this.User); MediaObject mediaObject = context.MediaObjects. Include(s => s.MediaSubType). Where(u => u.OwnerId == userId). SingleOrDefault(o => o.ID == ID); if (mediaObject != null) { EditMediaObjectViewModel editMediaObjectViewModel = new EditMediaObjectViewModel(mediaObject, GetSelectListSubTypes()); if (mediaObject.DatabaseSource == 1) { OMDbTitle omdbTitle = await GetImdbData(mediaObject.ExternalId); editMediaObjectViewModel.OMDbTitle = omdbTitle; } return(View(editMediaObjectViewModel)); } return(Redirect("/Media/Index")); }
public IActionResult Edit(EditMediaObjectViewModel editMediaObjectViewModel) { if (ModelState.IsValid) { string userId = Common.ExtensionMethods.getUserId(this.User); bool countUpdate = false; MediaObject editCandidate = context.MediaObjects. Where(u => u.OwnerId == userId). Where(i => i.ID == editMediaObjectViewModel.ID). SingleOrDefault(); //compare existing values to new values if (editCandidate.Title != editMediaObjectViewModel.Title) { editCandidate.Title = editMediaObjectViewModel.Title; countUpdate = true; } if (editCandidate.SubTypeID != editMediaObjectViewModel.SubTypeID) { editCandidate.SubTypeID = editMediaObjectViewModel.SubTypeID; countUpdate = true; } if (editCandidate.RecommendSource != editMediaObjectViewModel.RecommendSource) { editCandidate.RecommendSource = editMediaObjectViewModel.RecommendSource; countUpdate = true; } //check if Interest value has changed if (editCandidate.Interest != editMediaObjectViewModel.Interest) { //check if value is in range if (1 <= editMediaObjectViewModel.Interest & editMediaObjectViewModel.Interest <= 10) { //check if new value is > existing value, if not don't count the update if (editMediaObjectViewModel.Interest > editCandidate.Interest) { countUpdate = true; } editCandidate.Interest = editMediaObjectViewModel.Interest; } } if (editCandidate.Image != editMediaObjectViewModel.Image) { editCandidate.Image = editMediaObjectViewModel.Image; countUpdate = true; } //strip double values //started List <bool> startedBools = StripAndConvertIntArrayToListBool(editMediaObjectViewModel.StartedValue); //completed List <bool> completedBools = StripAndConvertIntArrayToListBool(editMediaObjectViewModel.CompletedValue); //check if Started value has changed, then add to UpdateCount if (editCandidate.Started != startedBools[0]) { editCandidate.Started = startedBools[0]; countUpdate = true; } //check if Completed value has changed if (editCandidate.Completed != completedBools[0]) { editCandidate.Completed = completedBools[0]; countUpdate = true; } if (countUpdate) { editCandidate.UpdateCount += 1; } context.SaveChanges(); } //Then check for deleted Id and pass any to the DeletePrompt route if (editMediaObjectViewModel.DeletedIDs != null) { List <MediaObject> mediaToDelete = new List <MediaObject>(); mediaToDelete = ArrayIdsToListMediaObjects(editMediaObjectViewModel.DeletedIDs); return(View("DeletePrompt", mediaToDelete)); } return(Redirect("/Media/Details?id=" + editMediaObjectViewModel.ID)); }