Пример #1
0
        public IHttpActionResult PostMessage([FromBody] CNewMessageDto message)
        {
            if (message == null)
            {
                ModelState.AddModelError($"{nameof(message)}", "Incoming data is null");
                return(BadRequest(ModelState));
            }

            var messageInfoToPost = new CMessageInfo(Guid.Empty, message.DispatchDate, message.MessageText, message.Type, message.ContentUri, message.SenderId, true, String.Empty, default(Int64));

            var messageInfoRetrieved = _messageDataProvider.CreateMessage(messageInfoToPost);

            if (messageInfoRetrieved == null || messageInfoRetrieved.Id == Guid.Empty)
            {
                s_log.LogError($"{System.Reflection.MethodBase.GetCurrentMethod()}({message})", new Exception("Failed to post message: can't get message info"));
                return(InternalServerError());
            }

            var chatParticipants = _userDataProvider.GetAllChatParticipantsByChatId(message.ChatId);

            if (chatParticipants == null || chatParticipants.Count == 0)
            {
                s_log.LogError($"{System.Reflection.MethodBase.GetCurrentMethod()}({message})", new Exception("Failed to post message: can't get chat participants"));
                return(InternalServerError());
            }

            CUserInfo senderInfo = null;

            //get all participants
            foreach (var user in chatParticipants)
            {
                //TODO А если сами себе пересылаем сообщение?
                //if (user.Id == message.SenderId)
                //    continue;
                if (user.Id == message.SenderId)
                {
                    senderInfo = user;
                }

                var messageInChatInfo = new CMessageInChatInfo(
                    Guid.Empty,
                    messageInfoRetrieved.Id,
                    message.ChatId,
                    message.SenderId,
                    user.Id,
                    user.Id == message.SenderId
                    );

                var rowsAffected = _messageInChatDataProvider.CreateMessageInChat(messageInChatInfo);

                if (rowsAffected == 0)
                {
                    s_log.LogError($"{System.Reflection.MethodBase.GetCurrentMethod()}({message})", new Exception("Failed to post message: can't create message in chat"));
                    return(InternalServerError());
                }
            }

            return(Ok(new CMessagePostedDto(messageInfoRetrieved.Id, messageInfoRetrieved.DispatchDate, senderInfo != null ? senderInfo.Login : String.Empty, messageInfoRetrieved.Usn)));
        }
        public CMessageData SendMessage(String messageText, DateTimeOffset dispatchDate, Int32 type, String attachedContent, Guid chatId, Guid senderId)
        {
            _logger.LogInfo($"Supplier method '{nameof(SendMessage)}({messageText}, {type}, {attachedContent}, {chatId}, {senderId})' is called");

            var message = new CNewMessageDto(messageText, dispatchDate, type, attachedContent, chatId, senderId);

            var result = _service.SendMessage(message);

            return(result == null ? null : new CMessageData(result.Id, dispatchDate, messageText, true, true, result.SenderLogin, result.Usn));
        }
Пример #3
0
        //[ActionName("sendmsg")]
        public CMessagePostedDto SendMessage(CNewMessageDto message)
        {
            try
            {
                HttpResponseMessage response = _client.PostAsync(
                    $"api/chats/messages/new",
                    new StringContent(JsonConvert.SerializeObject(message), Encoding.UTF8, "application/json")
                    ).Result;

                return((response.IsSuccessStatusCode)
                    ? response.Content.ReadAsAsync <CMessagePostedDto>().Result
                    : null);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }