Пример #1
0
        public void DeleteMessage(Guid userId, Guid msgId)
        {
            var message = DataService.PerThread.MessageSet.SingleOrDefault(x => x.Id == msgId);

            if (message == null)
            {
                throw new BusinessLogicException("Указан неверный идентификатор сообщения");
            }

            if (message.AuthorId != userId && message.RecipientId != userId)
            {
                throw new BusinessLogicException("Пользователь не имеет права удалять данное сообщение");
            }

            if (message.AuthorId == userId)
            {
                message.IsDeletedByAuthor = true;
            }
            else if (message.RecipientId == userId)
            {
                message.IsRead = true;
                message.IsDeletedByRecipient = true;
            }

            DataService.PerThread.SaveChanges();

            if (message.RecipientId == userId)
            {
                UserContextService.Abandon(userId);
            }
        }
Пример #2
0
        public void MarkAsRead(Guid userId, Guid?contactId)
        {
            var messages = DataService.PerThread.MessageSet.Where(x => x.RecipientId == userId);

            if (contactId.HasValue)
            {
                messages = messages.Where(x => x.AuthorId == contactId.Value);
            }
            else
            {
                messages = messages.Where(x => !x.AuthorId.HasValue);
            }

            foreach (var msg in messages)
            {
                msg.IsRead = true;
            }

            DataService.PerThread.SaveChanges();

            UserContextService.Abandon(userId);
        }
Пример #3
0
        public Message Send(MessageStruct messageInfo)
        {
            if (DataService.PerThread.BaseUserSet.Count(u => u.Id == messageInfo.RecipientId) == 0)
            {
                throw new BusinessLogicException("Получатель не найден!");
            }

            if (messageInfo.AuthorId.HasValue)
            {
                if (DataService.PerThread.BaseUserSet.SingleOrDefault(u => u.Id == messageInfo.AuthorId) == null)
                {
                    throw new BusinessLogicException("Отправитель не найден!");
                }

                if (messageInfo.AuthorId == messageInfo.RecipientId)
                {
                    throw new BusinessLogicException("Нельзя посылать самому себе!");
                }
            }

            var message = new Message
            {
                AuthorId             = messageInfo.AuthorId,
                Date                 = messageInfo.Date,
                RecipientId          = messageInfo.RecipientId,
                Text                 = messageInfo.Text,
                Type                 = messageInfo.Type,
                IsDeletedByAuthor    = false,
                IsDeletedByRecipient = false
            };

            DataService.PerThread.MessageSet.AddObject(message);
            DataService.PerThread.SaveChanges();

            UserContextService.Abandon(message.RecipientId);

            return(message);
        }