public MaterialViewModel PrepareMaterialViewModel(BLL.Models.Material material) { ConfigureMaterialBreadcrumbs(material); var isFavorite = _userService.IsMaterialFavorite(material, User.FindFirstValue(ClaimTypes.NameIdentifier)); return(new MaterialViewModel { MaterialId = material.MaterialId, CreatorUsername = material.Creator.Username, ApproverUsername = material.Approver?.Username, UpdaterUsername = material.Updater?.Username, Name = material.Name, Description = material.Description, UploadDate = material.UploadDate, ModificationDate = material.ModificationDate, State = material.State.Name, Files = material.Files.Select(f => new FileViewModel { FileName = f.FileName, RelativePath = f.RelativePath, ContentType = f.ContentType }).ToList(), IsFavorite = isFavorite, IsAllowedToEditOrDelete = material.IsUserAllowedToEditOrDelete(User.FindFirstValue(ClaimTypes.NameIdentifier)) || !User.IsInRole(Roles.MemberRole) }); }
private void ConfigureDeleteSuggestionBreadcrumbs(BLL.Models.Material material) { ConfigureMaterialsBreadcrumbs(material.Lesson); ViewBag.Breadcrumbs.Add( new Breadcrumb { Controller = "Materials", Action = "CreateDeleteSuggestion", Title = "Tworzenie sugestii usunięcia", Params = new Dictionary <string, string> { { "materialId", material.MaterialId.ToString() } } } ); }
private void ConfigureDeleteMaterialBreadcrumbs(BLL.Models.Material material) { ConfigureMaterialsBreadcrumbs(material.Lesson); ViewBag.Breadcrumbs.Add( new Breadcrumb { Controller = "Materials", Action = "Delete", Title = "Usuwanie materiału", Params = new Dictionary <string, string> { { "materialId", material.MaterialId.ToString() } } } ); }
[HttpPost] // AJAX request public IActionResult Add(AddMaterialViewModel vm) { var identityUserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var lesson = _traversalService.GetLesson(vm.LessonId); if (lesson == null) { return(BadRequest(new[] { "Przedmiot o podanym Id nie istnieje." })); } var creator = _userService.FindByIdentityUserId(identityUserId); var state = _service.GetState(MaterialStateEnum.PENDING); var materialToAdd = new BLL.Models.Material(vm.Name, vm.Description, lesson, creator, state); _service.AddMaterial(materialToAdd); var guid = Guid.NewGuid(); try { _filesManagement.SaveFilesToFileSystem(vm.FormFiles, materialToAdd.MaterialId, guid); } catch (Exception) { return(BadRequest(new[] { "Somethig went wrong while saving files to the file system. Try again." })); } // TODO splitted into two roundtrips to name folders with materialId (can be changed in the future) var filesToAdd = _filesManagement.ExtractFilesFromForm(vm.FormFiles, materialToAdd.MaterialId, guid); materialToAdd.AddFiles(filesToAdd); _service.UpdateMaterial(materialToAdd); return(Json(materialToAdd.MaterialId)); }
private bool IsUserAllowedToEditOrDelete(string identityUserId, BLL.Models.Material materialToEdit) { return((identityUserId != materialToEdit.Creator.IdentityUserId) && User.IsInRole(Roles.MemberRole)); }