Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        [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));
        }