コード例 #1
0
        public IActionResult Send([FromBody] MessageViewModel mVMessage)
        {
            IActionResult result       = new ObjectResult(false);
            GenericResult removeResult = null;

            var authenticationHeader = Request?.Headers["Authorization"];
            var token   = authenticationHeader?.FirstOrDefault().Split(' ')[1];
            var subject = _jwtFormater.GetSubject(token);

            var user = _userRepository.GetSingleByUsername(subject);

            var message = new Message()
            {
                Text     = mVMessage.Text,
                SenderId = user.Id,
                ChatId   = mVMessage.ChatId,
                Date     = DateTime.Now.ToString()
            };

            try
            {
                _messageRepository.Add(message);
                _messageRepository.Commit();

                removeResult = new GenericResult()
                {
                    Succeeded = true,
                    Message   = message.SenderId.ToString()
                };
            }
            catch (Exception ex)
            {
                removeResult = new GenericResult()
                {
                    Succeeded = false,
                    Message   = ex.Message
                };

                _loggingRepository.Add(new Error()
                {
                    Severity    = "Error",
                    Message     = ex.Message,
                    StackTrace  = ex.StackTrace,
                    DateCreated = DateTime.Now
                });
                _loggingRepository.Commit();
            }

            result = new ObjectResult(removeResult);
            this.Clients.Group(message.ChatId.ToString()).InvokeAsync("AddChatMessage", message);

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// 意見メッセージの保存
        /// </summary>
        /// <param name="sendTo">送信対象者</param>
        /// <param name="detail">メッセージ本文</param>
        public bool Save(string sendTo, string detail)
        {
            try
            {
                var result = false;

                // トランザクション開始
                repository.BeginTransaction();

                // DB更新
                result = repository.Save(Message.Create(sendTo, detail));

                // 更新結果を受けてCommit/Rollback
                if (result)
                {
                    repository.Commit();
                }
                else
                {
                    repository.Rollback();
                }

                return(result);
            }
            catch (Exception ex)
            {
                repository.Rollback();
                throw ex;
            }
        }
コード例 #3
0
        public override MessageModel Update(string id, MessageModel model)
        {
            MessageModel message = GetOneEnabled(id);

            if (message != null)
            {
                message.Copy(model);
            }
            _repo.Commit();

            return(message);
        }
コード例 #4
0
ファイル: ChatHub.cs プロジェクト: Shiloff/terem
        public void ReadMessage(List <long> messageIds, long profileId, long profileIdTo)
        {
            foreach (var id in messageIds)
            {
                _messageRepository.ReadMessage(id, profileId);
            }
            _messageRepository.Commit();
            var chats   = _chatRepository.GetChats(profileIdTo);
            var myChats = _chatRepository.GetChats(profileId);

            foreach (var chat in myChats)
            {
                Clients.Client(chat.ConnectionId).SendReadMessage(messageIds);
            }
            foreach (var chat in chats)
            {
                Clients.Client(chat.ConnectionId).SendReadMessage(messageIds);
            }
        }
コード例 #5
0
        public IActionResult OnPost(Guid threadId)
        {
            Thread = threadRepository.GetById(threadId);
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            if (Message.Id != Guid.Parse("00000000-0000-0000-0000-000000000000"))
            {
                messageRepository.Update(Message);
            }
            else
            {
                messageRepository.Add(Message, Thread);
            }
            messageRepository.Commit();
            TempData["Notice"] = "Message saved";
            return(RedirectToPage("./Detail", new { threadId = threadId }));
        }