void AddViewedMessage(ViewedMessage viewedMessage) { this.viewedMessagesById.Add(viewedMessage.MessageId, viewedMessage); if (viewedMessage.Read) { ++this.readMessageCount; } }
void RemoveViewedMessage(ViewedMessage viewedMessage) { if (!this.viewedMessagesById.Remove(viewedMessage.MessageId)) { throw new KeyNotFoundException(); } if (viewedMessage.Read) { --this.readMessageCount; } }
void UpdateViewWithMessage(YamsterMessage message) { bool shouldBeInView = false; if (CompiledFunc != null) { var executionContext = new YqlExecutionContext(this.appContext); executionContext.Message = message; shouldBeInView = CompiledFunc(executionContext); } ViewedMessage viewedMessage = null; bool isInView = viewedMessagesById.TryGetValue(message.MessageId, out viewedMessage); bool statisticsChanged = false; if (isInView) { if (!shouldBeInView) { this.RemoveViewedMessage(viewedMessage); NotifyViewChanged(YamsterViewChangeType.ModelLeaveView, message); // TotalItemCount changed statisticsChanged = true; } else { if (message.Read != viewedMessage.Read) { this.readMessageCount += message.Read ? +1 : -1; viewedMessage.Read = message.Read; statisticsChanged = true; } } } else { if (shouldBeInView) { AddViewedMessage(new ViewedMessage(message)); NotifyViewChanged(YamsterViewChangeType.ModelEnterView, message); // TotalItemCount changed statisticsChanged = true; } } if (statisticsChanged) { NotifyViewChanged(YamsterViewChangeType.StatisticsChanged, null); } }
/// <summary> /// Adds a student Viewed Message. /// </summary> /// <param name="alertId">The messageId.</param> /// <param name="studentId">The studentId.</param> /// <returns></returns> public void AddStudentViewedMessage(int messageId, int studentId) { try { ViewedMessage studentViewedMessage = ObjectMapper.Map <StudentViewedMessageViewModel, Model.Entities.ViewedMessage>(StudentMessageViewModelFactory.CreateStudentViewedMessageModel(messageId, studentId)); StudentViewedMessageManager.Add(studentViewedMessage); } catch (Exception ex) { ExceptionManager.HandleException(ex, PolicyNameType.ExceptionReplacing); } }