public async Task CreatePlotFolder(int projectId, string masterTitle, string todo) { if (masterTitle == null) { throw new ArgumentNullException(nameof(masterTitle)); } var project = await UnitOfWork.GetDbSet <Project>().FindAsync(projectId); project.RequestMasterAccess(CurrentUserId, acl => acl.CanManagePlots); var startTimeUtc = DateTime.UtcNow; var plotFolder = new PlotFolder { CreatedDateTime = startTimeUtc, ModifiedDateTime = startTimeUtc, ProjectId = projectId, MasterTitle = Required(masterTitle.RemoveTagNames()), TodoField = todo, IsActive = true, }; await AssignTagList(plotFolder.PlotTags, masterTitle); project.PlotFolders.Add(plotFolder); await UnitOfWork.SaveChangesAsync(); }
public void Fill(PlotFolder folder, int?currentUserId, IUriService uriService) { PlotFolderMasterTitle = folder.MasterTitle; Status = folder.GetStatus(); Elements = folder.Elements.Select(e => new PlotElementListItemViewModel(e, currentUserId, uriService)).OrderBy(e => e.Status); TagNames = folder.PlotTags.Select(tag => tag.TagName).OrderBy(tag => tag).ToList(); HasEditAccess = folder.HasMasterAccess(currentUserId, acl => acl.CanManagePlots) && folder.Project.Active; HasMasterAccess = folder.HasMasterAccess(currentUserId); }
public PlotFolderListItemViewModel(PlotFolder folder, int?currentUserId) { PlotFolderId = folder.PlotFolderId; PlotFolderMasterTitle = folder.MasterTitle; ProjectId = folder.ProjectId; Status = folder.GetStatus(); ElementsCount = folder.Elements.Count; TodoField = folder.TodoField; HasEditAccess = folder.HasMasterAccess(currentUserId, acl => acl.CanManagePlots) && folder.Project.Active; }
public EditPlotFolderViewModel(PlotFolder folder, int?currentUserId) { PlotFolderMasterTitle = folder.MasterTitle; PlotFolderId = folder.PlotFolderId; TodoField = folder.TodoField; ProjectId = folder.ProjectId; Elements = folder.Elements.Select(e => new PlotElementListItemViewModel(e, currentUserId)).OrderBy(e => e.Status); Status = folder.GetStatus(); HasEditAccess = folder.HasMasterAccess(currentUserId, acl => acl.CanManagePlots) && folder.Project.Active; HasMasterAccess = folder.HasMasterAccess(currentUserId); }
public async Task <ActionResult> Delete(int projectId, int plotFolderId) { PlotFolder folder = await _plotRepository.GetPlotFolderAsync(projectId, plotFolderId); var error = AsMaster(folder, acl => acl.CanManagePlots); if (error != null) { return(null); } return(View(new EditPlotFolderViewModel(folder, CurrentUserId))); }
protected ActionResult WithPlot(PlotFolder plot) { if (plot == null) { return(HttpNotFound()); } if (!plot.HasMasterAccess(CurrentUserIdOrDefault) && plot.Project?.Details?.PublishPlot == false) { return(NoAccesToProjectView(plot.Project)); } return(WithEntity(plot)); }
public PlotFolderListFullItemViewModel(PlotFolder folder, int?currentUserId, IUriService uriService) : base(folder, currentUserId) { Summary = folder.MasterSummary.ToHtmlString(); if (folder.Elements.Any()) { var linkRenderer = new JoinrpgMarkdownLinkRenderer(folder.Elements.First().Project); Elements = folder.Elements.Where(p => p.ElementType == PlotElementType.RegularPlot) .Select( p => new PlotElementViewModel(null, currentUserId, linkRenderer, p.LastVersion(), uriService)) .MarkFirstAndLast(); } else { Elements = Enumerable.Empty <PlotElementViewModel>(); } }
public EditPlotFolderViewModel([NotNull] PlotFolder folder, int?currentUserId, IUriService uriService) { if (folder == null) { throw new ArgumentNullException(nameof(folder)); } PlotFolderId = folder.PlotFolderId; TodoField = folder.TodoField; ProjectId = folder.ProjectId; Fill(folder, currentUserId, uriService); if (TagNames.Any()) { PlotFolderTitleAndTags = folder.MasterTitle + " " + folder.PlotTags.GetTagString(); } else { PlotFolderTitleAndTags = folder.MasterTitle; } }
public PlotFolderListFullItemViewModel(PlotFolder folder, int?currentUserId) : base(folder, currentUserId) { Summary = folder.MasterSummary.ToHtmlString(); Elements = folder.Elements.ToViewModels(currentUserId); }
public static PlotStatus GetStatus(this PlotFolder folder) { return(folder.IsActive ? (folder.InWork ? PlotStatus.InWork : PlotStatus.Completed) : PlotStatus.Deleted); }