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)); }
//[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; } }