public IActionResult PutMessage(int id, [FromBody] MessageUpdateModel model) { try { var message = _mapper.Map <Message>(model); message.Id = id; // Update _messageService.Update(message); return(Ok()); } catch (Exception ex) { return(BadRequest(new { message = ex.Message })); } }
public async Task <MessageViewModel> UpdateAsync(Guid id, MessageUpdateModel model) { if (model is null) { throw new ArgumentNullException(nameof(model)); } var message = await _dbContext.Messages.SingleOrDefaultAsync(x => x.Guid.Equals(id)).ConfigureAwait(false); message.Payload = model.Payload; await _dbContext.SaveChangesAsync().ConfigureAwait(false); return(new MessageViewModel() { CreationDate = message.CreationDate, Id = message.Guid.ToString(), Payload = message.Payload, UserName = message.FromUser.FullName ?? "" }); }
public ActionResult UpdateMessage(Guid messageId, string context, Guid[] deleteImages, HttpPostedFileBase[] images) { // 驗證 if (context.Length > 300) { return(this.Json(PoResult.Fail("訊息內容超出限制,最多為300字"))); } // 驗證 if (context.Length == 0 && images == null && deleteImages == null) { return(this.Json(PoResult.Fail("沒有可以儲存的訊息內容"))); } // 組裝model var messageUpdateModel = new MessageUpdateModel() { MessageId = messageId, Context = context, DeleteAttachmentIds = deleteImages?.ToList() ?? new List <Guid>() }; 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"); messageUpdateModel.NewAttachments.Add(($"{fileResult.OriName}{fileResult.Extension}", fileResult.VirtualPath)); } } var updateResult = this.messageService.UpdateMessage(this.CurrentUser.Id, messageUpdateModel); if (updateResult.Success) { var messageListVmResult = this.messageService.GetMessageListVm(updateResult.Data.Id); if (messageListVmResult.Success) { this.hub.Clients.All.updateMessage(messageListVmResult.Data.MessageId, "updateMessage", messageListVmResult.Data); } } else { if (images != null) { foreach (var image in messageUpdateModel.NewAttachments) { var mapPath = this.Server.MapPath(image.Path); if (System.IO.File.Exists(mapPath)) { System.IO.File.Delete(mapPath); } } } } return(this.Json(new PoResult { Success = updateResult.Success, Message = updateResult.Message })); }