Ejemplo n.º 1
0
        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);
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
        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)));
        }
Ejemplo n.º 6
0
        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>();
            }
        }
Ejemplo n.º 8
0
 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;
     }
 }
Ejemplo n.º 9
0
 public PlotFolderListFullItemViewModel(PlotFolder folder, int?currentUserId) : base(folder, currentUserId)
 {
     Summary  = folder.MasterSummary.ToHtmlString();
     Elements = folder.Elements.ToViewModels(currentUserId);
 }
Ejemplo n.º 10
0
 public static PlotStatus GetStatus(this PlotFolder folder)
 {
     return(folder.IsActive ? (folder.InWork ? PlotStatus.InWork : PlotStatus.Completed) : PlotStatus.Deleted);
 }