public IActionResult ApproveEditRequest(int editRequestId, bool isRedirectToMaterial) { var loggedModerator = _userService.FindByIdentityUserId(User.FindFirstValue(ClaimTypes.NameIdentifier)); var editRequest = _materialsService.GetEditRequest(editRequestId); if (editRequest == null) { return(RedirectToAction("ResourceNotFound", "Error", new { error = "sugestia edycji o podanym Id nie istnieje." })); } try { int materialToUpdateId = editRequest.MaterialToUpdateId; _materialsService.ApproveEditRequest(editRequest); _filesManagement.ReplaceMaterialFilesWithEditRequestFiles(materialToUpdateId, editRequest.EditRequestId, editRequest.Files); } catch (ArgumentException) { return(RedirectToAction("ResourceNotFound", "Error", new { error = "sugestia edycji o podanym Id nie istnieje." })); } catch (Exception) { _filesManagement.RemoveFilesFromFileSystem(editRequest.Files); return(BadRequest("Coś poszło nie tak podczas zapisywania plików. Spróbuj ponownie.")); } if (isRedirectToMaterial) { return(RedirectToAction("Material", "Materials", new { area = "Main", materialId = editRequest.MaterialToUpdateId })); } return(RedirectToAction("EditSuggestions")); }
[HttpPost] // AJAX request public IActionResult Edit(EditMaterialViewModel vm) { var identityUserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var materialToEdit = _service.GetMaterial(vm.MaterialId); if (materialToEdit == null) { return(BadRequest(new[] { "Materiał o podanym Id nie istnieje." })); } if (IsUserAllowedToEditOrDelete(identityUserId, materialToEdit)) { return(Forbid(new[] { "Nie masz uprawnień do tego działania" })); // TODO some authorization handler } var loggedUser = _userService.FindByIdentityUserId(identityUserId); if (vm.Files?.Count > 0) { var filesToRemove = materialToEdit.UpdateExistingFilesAndGetFilesToRemove( vm.Files.Select(f => new BLL.Models.File(f.FileId, f.FileName)).ToList() ); _filesManagement.RemoveFilesFromFileSystem(filesToRemove); } var guid = Guid.NewGuid(); try { _filesManagement.SaveFilesToFileSystem(vm.FormFiles, vm.MaterialId, guid); } catch (Exception) { return(BadRequest(new[] { "Coś poszło nie tak przy zapisywaniu plików do systemu plików. Spróbuj ponownie." })); } var filesFromForm = _filesManagement.ExtractFilesFromForm(vm.FormFiles, vm.MaterialId, guid); materialToEdit.Update(vm.Name, vm.Description, filesFromForm, loggedUser); _service.UpdateMaterial(materialToEdit); return(Json(vm.MaterialId)); }