Beispiel #1
0
        public async Task <bool> SendReplyUpdate(PutReplyUpdateRequest request)
        {
            var now = _repository.GetSchoolNow(request.AdmSiteId);

            var message = await _repository.FindAsync <AdmMessage>(request.AdmMessageId);

            if (message != null)
            {
                if (message.AdmUserID != request.AdmUserId && message.AdmMessagesReplies != null &&
                    !message.AdmMessagesReplies.Any())
                {
                    // add record to AdmMessagesReply to indicate the very first reply,
                    // so it would be displayed in addressee's inbox
                    AdmMessagesReply admMessagesReply = new AdmMessagesReply
                    {
                        AdmMessageID    = request.AdmMessageId,
                        SentToAdmUserID = message.AdmUserID,
                        SentByAdmUserID = request.AdmUserId,
                        SiteDescription = request.SiteName,
                        GroupName       = request.GroupName,
                        UserName        = request.FirstName + " " + request.LastName,
                        MessageDate     = now
                    };

                    message.AdmMessagesReplies.Add(admMessagesReply);
                }

                // add details
                AdmMessagesDetail admMessagesDetail =
                    new AdmMessagesDetail
                {
                    AdmMessageID    = request.AdmMessageId,
                    SentByAdmUserID = request.AdmUserId,
                    MesageText      = request.Message,
                    MessageDate     = now
                };
                message.AdmMessagesDetails.Add(admMessagesDetail);

                // reset message IsRead flag
                message.IsRead = false;

                // update the whole message and all its parts
                await _repository.UpdateAsync(message);

                // reset reply IsRead flag
                var reply = await _repository.GetAsync <AdmMessagesReply>(m =>
                                                                          m.AdmMessageID == request.AdmMessageId);

                if (reply != null)
                {
                    reply.IsRead = false;
                    await _repository.UpdateAsync(reply);
                }
            }

            return(true);
        }
Beispiel #2
0
 public async Task <ActionResult <bool> > SendReplyUpdate(PutReplyUpdateRequest request)
 {
     return(await _logic.SendReplyUpdate(request));
 }