private void insertMessage(IEnumerable <ChatParticipantViewModel> usersInGroupToNotify, MessageViewModel message, ChatParticipantViewModel sender) { var fromUser = this._ctx.Users.FirstOrDefault(d => d.Id == sender.UserId); var m = new ChatMessageSeen() { DateSeen = DateTime.UtcNow, User = fromUser }; var msg = new ChatMessage() { DownloadUrl = message.DownloadUrl, DateSent = message.DateSent, FileSizeInBytes = message.FileSizeInBytes, FromUser = fromUser, Message = message.Message, ChatGroup = this._ctx.ChatGroups.FirstOrDefault(d => d.Id.ToString() == message.GroupId) }; var participants = new List <Participant>(); foreach (var item in usersInGroupToNotify) { var participant = new Participant(); participant.User = this._ctx.Users.FirstOrDefault(d => d.Id == item.UserId); participants.Add(participant); } this._ctx.ChatMessages.Add(msg); this._ctx.SaveChanges(); }
public IActionResult MarkMessageAsSeen(int id, int messageId, [FromHeader] int UserID, [FromHeader] string UserRole) { var chat = _context.Chats.Find(id); if (chat == null) { return(StatusCode(StatusCodes.Status404NotFound)); } if (_user.GetUserById(UserID) == null) { return(StatusCode(StatusCodes.Status400BadRequest)); } _context.Entry(chat).Collection(chat => chat.ChatMessages).Load(); _context.Entry(chat).Collection(chat => chat.ChatUsers).Load(); var currentUserIsParticipant = true; if (!chat.ChatUsers.Any(chatUser => chatUser.UserId == UserID)) { currentUserIsParticipant = false; } if (!currentUserIsParticipant && UserRole != "Admin") { return(StatusCode(StatusCodes.Status403Forbidden)); } var chatUser = chat.ChatUsers.FirstOrDefault(chatUser => chatUser.UserId == UserID); if (chatUser.RequestPending) { return(StatusCode(StatusCodes.Status403Forbidden)); } var currentChatMessage = chat.ChatMessages.FirstOrDefault(chatMessage => chatMessage.Id == messageId); if (currentChatMessage == null) { return(StatusCode(StatusCodes.Status404NotFound)); } _context.Entry(currentChatMessage).Collection(chatMessage => chatMessage.ChatMessageSeens).Load(); var newChatMessageSeen = new ChatMessageSeen() { ChatMessage = currentChatMessage, UserId = UserID }; currentChatMessage.ChatMessageSeens.Add(newChatMessageSeen); try { var success = _context.SaveChanges(); if (success < 1) { return(StatusCode(StatusCodes.Status400BadRequest)); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status400BadRequest, ex.Message)); } foreach (ChatMessage chatMessage in chat.ChatMessages) { _context.Entry(chatMessage).Collection(chatMessage => chatMessage.ChatMessageSeens).Load(); } return(StatusCode(StatusCodes.Status201Created, new JsonResult(chat.ChatMessages))); }