public async Task <IActionResult> Edit(CompositionEditViewModel model) { IActionResult result = RedirectToAction("Index", "Home"); if (await _rightService.CheckRights(model.Id, _userManager.GetUserAsync(HttpContext.User).Result)) { if (ModelState.IsValid) { if (_dbCompositionService.FindById(model.Id) != null) { var nameBefore = _dbCompositionService.FindById(model.Id).Name; if (nameBefore == model.Name || _dbCompositionService.FindByName(model.Name) == null) { Composition composition = new Composition() { Id = model.Id, Annotation = model.Annotation, GenreId = _dbGenreService.FindByGenreString(model.GenreString).Id, Name = model.Name, }; _dbCompositionService.Update(composition); var tagsBefore = _dbTagService.FindByCompositionId(composition.Id); var tagsBeforeString = _tagFormatter.FormatTagsToString(tagsBefore); var listTagStrings = _tagFormatter.FormatTagsToListEdit(tagsBeforeString, model.Tags); _dbTagService.AddTagsIfNotExist(listTagStrings); var tags = _dbTagService.FindAllByTagStrings(listTagStrings); _dbTagService.UpdateCompositionTags(model.Id, tags); var callbackUri = Url.Action("Index", "Composition", new { id = model.Id }, protocol: HttpContext.Request.Scheme); result = Redirect(callbackUri); } else { ModelState.AddModelError("", "A composition with this name already exists."); result = View(); } } else { result = BadRequest(); } } } else { result = RedirectToAction("AccessDenied", "Notifications"); } return(result); }
public async Task <IActionResult> Delete(CompositionEditViewModel model) { IActionResult result = BadRequest(); if (await _rightService.CheckRights(model.Id, _userManager.GetUserAsync(HttpContext.User).Result)) { var composition = _dbCompositionService.FindById(model.Id); if (composition != null) { _dbCompositionService.Delete(composition); result = RedirectToAction("Index", "Home"); } } else { result = RedirectToAction("AccessDenied", "Notifications"); } return(result); }