Beispiel #1
0
        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);
        }
Beispiel #7
0
 /// <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));
 }