public void VerifyThatDiscussionsItemAreAddedAndRemoved() { this.permissionService.Setup(x => x.CanWrite(It.IsAny <Thing>())).Returns(true); var discussion1 = new EngineeringModelDataDiscussionItem(Guid.NewGuid(), this.assembler.Cache, this.uri); discussion1.Author = this.participant; discussion1.Content = "discussion 1"; this.rid.Discussion.Add(discussion1); var vm = new AnnotationFloatingDialogViewModel(this.rid, this.session.Object); Assert.AreEqual(1, vm.DiscussionRows.Count); var discussionRow = vm.DiscussionRows.Single(); discussionRow.Content = "mod"; discussionRow.SaveCommand.Execute(null); this.session.Verify(x => x.Write(It.IsAny <OperationContainer>())); discussionRow.CancelCommand.Execute(null); Assert.AreEqual(discussion1.Content, discussionRow.Content); this.rid.Discussion.Clear(); this.rev.SetValue(this.rid, 10); CDPMessageBus.Current.SendObjectChangeEvent(this.rid, EventKind.Updated); Assert.AreEqual(0, vm.DiscussionRows.Count); }
/// <summary> /// Initializes a new instance of the <see cref="DiscussionItemViewModel"/> class /// </summary> /// <param name="discussionItem">The <see cref="DiscussionItem"/></param> /// <param name="session">The <see cref="ISession"/></param> /// <param name="containerviewModel">The container <see cref="IViewModelBase{T}"/></param> public DiscussionItemViewModel(EngineeringModelDataDiscussionItem discussionItem, ISession session, IViewModelBase <Thing> containerviewModel) : base(discussionItem, session, containerviewModel) { this.CanEditDiscussionItem = this.Session.PermissionService.CanWrite(this.Thing); this.EventPublisher = new EventPublisher(); this.InitializeCommands(); this.UpdateProperties(); }
/// <summary> /// Remove the view-model representing the <paramref name="discussionItem"/> /// </summary> /// <param name="discussionItem">The <see cref="DiscussionItem"/> to remove</param> private void RemoveDiscussionItem(EngineeringModelDataDiscussionItem discussionItem) { var vm = this.DiscussionRows.SingleOrDefault(x => x.Thing == discussionItem); if (vm != null) { this.DiscussionRows.RemoveAndDispose(vm); } }
/// <summary> /// Serialize the <see cref="EngineeringModelDataDiscussionItem"/> /// </summary> /// <param name="engineeringModelDataDiscussionItem">The <see cref="EngineeringModelDataDiscussionItem"/> to serialize</param> /// <returns>The <see cref="JObject"/></returns> private JObject Serialize(EngineeringModelDataDiscussionItem engineeringModelDataDiscussionItem) { var jsonObject = new JObject(); jsonObject.Add("author", this.PropertySerializerMap["author"](engineeringModelDataDiscussionItem.Author)); jsonObject.Add("classKind", this.PropertySerializerMap["classKind"](Enum.GetName(typeof(CDP4Common.CommonData.ClassKind), engineeringModelDataDiscussionItem.ClassKind))); jsonObject.Add("content", this.PropertySerializerMap["content"](engineeringModelDataDiscussionItem.Content)); jsonObject.Add("createdOn", this.PropertySerializerMap["createdOn"](engineeringModelDataDiscussionItem.CreatedOn)); jsonObject.Add("excludedDomain", this.PropertySerializerMap["excludedDomain"](engineeringModelDataDiscussionItem.ExcludedDomain.OrderBy(x => x, this.guidComparer))); jsonObject.Add("excludedPerson", this.PropertySerializerMap["excludedPerson"](engineeringModelDataDiscussionItem.ExcludedPerson.OrderBy(x => x, this.guidComparer))); jsonObject.Add("iid", this.PropertySerializerMap["iid"](engineeringModelDataDiscussionItem.Iid)); jsonObject.Add("languageCode", this.PropertySerializerMap["languageCode"](engineeringModelDataDiscussionItem.LanguageCode)); jsonObject.Add("modifiedOn", this.PropertySerializerMap["modifiedOn"](engineeringModelDataDiscussionItem.ModifiedOn)); jsonObject.Add("replyTo", this.PropertySerializerMap["replyTo"](engineeringModelDataDiscussionItem.ReplyTo)); jsonObject.Add("revisionNumber", this.PropertySerializerMap["revisionNumber"](engineeringModelDataDiscussionItem.RevisionNumber)); jsonObject.Add("thingPreference", this.PropertySerializerMap["thingPreference"](engineeringModelDataDiscussionItem.ThingPreference)); return jsonObject; }
/// <summary> /// Executes the <see cref="PostDiscussionItemCommand"/> /// </summary> private async Task ExecutePostDiscussionItemCommand() { this.ErrorMessage = string.Empty; this.IsBusy = true; var clone = this.Thing.Clone(false); var discussionItem = new EngineeringModelDataDiscussionItem(); discussionItem.Content = this.NewDiscussionItemText; discussionItem.Author = this.currentParticipant; discussionItem.LanguageCode = "en-GB"; discussionItem.CreatedOn = DateTime.UtcNow; clone.Discussion.Add(discussionItem); var context = TransactionContextResolver.ResolveContext(clone); var transaction = new ThingTransaction(context, clone); transaction.Create(discussionItem); await this.DalWrite(transaction); this.IsBusy = false; this.NewDiscussionItemText = string.Empty; }
/// <summary> /// Add the view-model representing the <paramref name="discussionItem"/> /// </summary> /// <param name="discussionItem">The <see cref="DiscussionItem"/> to add</param> private void AddDiscussionItem(EngineeringModelDataDiscussionItem discussionItem) { var vm = new DiscussionItemViewModel(discussionItem, this.Session, this); this.DiscussionRows.Add(vm); }
/// <summary> /// Add an Discussion row view model to the list of <see cref="Discussion"/> /// </summary> /// <param name="discussion"> /// The <see cref="Discussion"/> that is to be added /// </param> private EngineeringModelDataDiscussionItemRowViewModel AddDiscussionRowViewModel(EngineeringModelDataDiscussionItem discussion) { return(new EngineeringModelDataDiscussionItemRowViewModel(discussion, this.Session, this)); }