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); }
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; }