示例#1
0
        public PlotElementViewModel([CanBeNull] Character?character,
                                    int?currentUserId,
                                    [NotNull] ILinkRenderer linkRendrer,
                                    [NotNull] PlotElementTexts plotElementVersion,
                                    IUriService uriService)
        {
            if (linkRendrer == null)
            {
                throw new ArgumentNullException(nameof(linkRendrer));
            }

            if (plotElementVersion == null)
            {
                throw new ArgumentNullException(nameof(plotElementVersion));
            }

            var p = plotElementVersion.PlotElement;

            Content           = plotElementVersion.Content.ToHtmlString(linkRendrer);
            TodoField         = plotElementVersion.TodoField;
            HasMasterAccess   = p.HasMasterAccess(currentUserId);
            HasEditAccess     = p.HasMasterAccess(currentUserId) && p.Project.Active;
            PlotFolderId      = p.PlotFolderId;
            PlotElementId     = p.PlotElementId;
            ProjectId         = p.ProjectId;
            Status            = p.GetStatus();
            TargetsForDisplay = p.GetTargets().AsObjectLinks(uriService).ToList();
            CharacterId       = character?.CharacterId;
            PublishMode       = !HasMasterAccess && !(character?.HasPlayerAccess(currentUserId) ?? false);
        }
示例#2
0
        private void UpdateElementText(string contents, string todoField, PlotElement plotElement, DateTime now)
        {
            if (plotElement.LastVersion().Content.Contents == contents &&
                plotElement.LastVersion().TodoField == todoField)
            {
                return;
            }
            var text = new PlotElementTexts()
            {
                Content          = new MarkdownString(contents),
                TodoField        = todoField,
                Version          = plotElement.Texts.Select(t => t.Version).Max() + 1,
                PlotElementId    = plotElement.PlotElementId,
                ModifiedDateTime = now,
                AuthorUserId     = CurrentUserId,
            };

            plotElement.Texts.Add(text);
            plotElement.IsCompleted = false;
        }