public async Task <ActionResult> Create(int?replyToMessageId, long?orderId) { if (replyToMessageId.HasValue) { var participantId = await GetParticipantIdAsync(); var svcMessage = await CommunicationMicroService.GetMessageAsync(replyToMessageId.Value, false, participantId); var model = ModelFactory.CreateMessageReplyModel(svcMessage); return(View("Reply", model)); } else { var model = new MessageCreateModel() { Subject = null, Subjects = CreateSubjects(), Text = null, OrderId = orderId }; return(View("Create", model)); } }
public async Task <ActionResult> Create(MessageCreateModel model) { if (!ModelState.IsValid) { model.Subjects = CreateSubjects(); return(View("Create", model)); } try { var participantId = await GetParticipantIdAsync(); long?topicId = await GetTopicIdAsync(model.OrderId); _ = await CommunicationMicroService.SendMessageFromParticipantAsync(participantId, model.Subject, model.Text, null, topicId); AddFeedbackMessage(FeedbackMessageTypes.Informational, "Message sent."); return(RedirectToAction("Index", new { id = "" })); } catch (ServiceException ex) { AddModelErrors(ex); model.Subjects = CreateSubjects(); return(View("Create", model)); } }
public async Task <ActionResult <MessageModel> > PostMessage(Guid conversationId, [FromBody] MessageCreateModel messageCreateModel) { //TODO: check that user is authorized for the conversation var conversation = await _context.Conversations.FindAsync(conversationId); var message = new Persistence.Models.Message { AuthorId = Guid.Parse(User.Identity.GetSubjectId()), Text = messageCreateModel.Text, Created = _systemClock.UtcNow, Conversation = conversation }; _context.Messages.Add(message); await _context.SaveChangesAsync(); //TODO: error handling var messageModel = new MessageModel { Id = message.Id, ConversationId = message.Conversation.Id, UserId = message.AuthorId, Text = message.Text, Created = message.Created }; var toBeNotifiedUserIds = await _context.ConversationUsers.Where(x => x.ConversationId == conversationId) .Select(x => x.UserId.ToString().ToLowerInvariant()).ToListAsync(); //toBeNotifiedUserIds.Remove(User.Identity.GetSubjectId()); await _conversationHubContext.Clients.Users(toBeNotifiedUserIds).NewMessage(messageModel); return(messageModel); }
public ActionResult Create(MessageCreateModel model) { bool success = true; string html = ""; if (!ModelState.IsValid) { success = false; } else { MessageCreateDTO messageDTO = Mapper.Map <MessageCreateModel, MessageCreateDTO>(model); ServiceMessage serviceMessage = service.Create(messageDTO); if (!serviceMessage.Succeeded) { foreach (string error in serviceMessage.Errors) { ModelState.AddModelError("", error); } success = false; } } if (!success) { html = RenderHelper.PartialView(this, "~/Views/Message/Create.cshtml", model); } return(Json(new { success = success, html = html })); }
public async Task <IActionResult> Post([FromBody] MessageCreateModel model) { try { if (ModelState.IsValid) { await chatService.SendMessage(new MessageDTO { User = new UserDTO { Id = model.User.Id, }, RoomId = model.RoomId, Text = model.Text }); await chatHub.Clients.All.SendAsync("transferchartdata", model); return(ApiResult(true)); } return(Error(ModelState)); } catch (Exception ex) { return(HandleException(ex)); } }
public async Task <ActionResult> PostMessage(MessageCreateModel messageCreateModel) { MessageDto messageCreateDto = _mapper.Map <MessageDto>(messageCreateModel); messageCreateDto.SenderId = User.GetUserID(); MessageDto createdMessageDto = await _messageService.CreateMessage(messageCreateDto); MessageWebModel createdMessageModel = _mapper.Map <MessageWebModel>(createdMessageDto); return(CreatedAtAction("GetById", new { id = createdMessageModel.MessageId }, createdMessageModel)); }
public async Task <ActionResult> Create(MessageCreateModel messageCreateModel) { Message message = new Message { Content = messageCreateModel.Content, User = messageCreateModel.User, CreatedOn = DateTime.UtcNow }; await this.context.Messages.AddAsync(message); await this.context.SaveChangesAsync(); return(this.Ok()); }
public async Task <IActionResult> Create([FromHeader(Name = "Authorisation")] string userToken, [FromRoute] Guid conversationId, [FromBody, Required] MessageCreateModel model) { if (model == null) { return(BadRequest("Missing create model")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } User user = _userService.GetUserByToken(userToken); if (user == null || !_userService.IsValid(user)) { return(Unauthorized()); } Conversation conv = _conversationService.Get(conversationId, user.Name); if (conv == null) { return(NotFound()); } if (!conv.Participants.Contains(user.Name)) { return(Unauthorized("You're not part of the conversation")); } await _messangesService.Create(user.Name, conversationId, model.Text, HttpContext.RequestAborted) .ConfigureAwait(false); return(NoContent()); }
public ActionResult SendMessage(string messageContext, HttpPostedFileBase[] images, Guid?parentMessageId = null) { // 驗證 if (messageContext.Length > 300) { return(this.Json(PoResult.Fail("訊息內容超出限制,最多為300字"))); } // 驗證 if (messageContext.Length == 0 && images == null) { return(this.Json(PoResult.Fail("沒有可以儲存的訊息內容"))); } // 組裝model var messageCreateModel = new MessageCreateModel { UserId = this.CurrentUser.Id, Context = messageContext, ParentMessageId = parentMessageId }; if (images != null) { foreach (var image in images) { if (image == null || image.ContentLength == 0) { continue; } if (image.ContentLength > 1024 * 1024) { return(this.Json(PoResult.Fail($"檔案「{image.FileName}」大小超出限制,最大1MB"))); } try { using (new System.Drawing.Bitmap(image.InputStream)) { // ignore } } catch (Exception) { return(this.Json(PoResult.Fail($"檔案「{image.FileName}」格式錯誤,請確定上傳的是圖片"))); } image.InputStream.Position = 0; } foreach (var image in images) { var fileResult = image.SaveAsLocal("AttachmentImages"); messageCreateModel.Images.Add(($"{fileResult.OriName}{fileResult.Extension}", fileResult.VirtualPath)); } } var saveResult = this.messageService.SaveMessage(messageCreateModel); if (saveResult.Success) { var messageListVmResult = this.messageService.GetMessageListVm(saveResult.Data.Id); if (messageListVmResult.Success) { if (saveResult.Data.ParentMessageId == null) { // not reply this.hub.Clients.All.updateMessage(messageListVmResult.Data.MessageId, "newMessage", messageListVmResult.Data); } else { // is reply this.hub.Clients.All.updateMessage(saveResult.Data.ParentMessageId, "newReply", messageListVmResult.Data); } } } else { if (images != null) { foreach (var image in messageCreateModel.Images) { var mapPath = this.Server.MapPath(image.Path); if (System.IO.File.Exists(mapPath)) { System.IO.File.Delete(mapPath); } } } } return(this.Json(new PoResult { Success = saveResult.Success, Message = saveResult.Message })); }