From 4922223bb29bdfe06e3d7a8825b71c1147452c37 Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Sun, 2 Mar 2025 19:56:11 -0800 Subject: [PATCH] fix issues with replies --- src/Services/MessagingService.cs | 36 ++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/Services/MessagingService.cs b/src/Services/MessagingService.cs index aa21370..9c60a33 100644 --- a/src/Services/MessagingService.cs +++ b/src/Services/MessagingService.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.EntityFrameworkCore; using sodoff.Model; using sodoff.Schema; using sodoff.Util; @@ -52,6 +53,7 @@ public class MessagingService { message.ParentMessage = messageToReplyTo; message.ParentMessageId = messageToReplyTo.Id; + message.ConversationID = messageToReplyTo.ConversationID; } else throw new InvalidOperationException("Tried To Reply To A Message That Doesn't Exist"); } @@ -98,8 +100,7 @@ public class MessagingService public ArrayOfCombinedListMessage ConstructCombinedMessageArray(Viking viking) { // get all messages in viking board - List messages = ctx.Messages.Where(e => e.ToVikingId == viking.Id) - .ToList(); + List messages = ctx.Messages.Where(e => e.ToVikingId == viking.Id).ToList(); List combinedListMessages = new List(); ArrayOfCombinedListMessage response = new ArrayOfCombinedListMessage(); @@ -181,13 +182,40 @@ public class MessagingService // add clm to list combinedListMessages.Add(clm); + + // ensure all replies are included in response + foreach(var reply in message.Replies) + { + Viking? replyAuthor = ctx.Vikings.FirstOrDefault(e => e.Id == reply.VikingId) ?? new Viking(); + + CombinedListMessage clmReply = new CombinedListMessage + { + MessageType = (int)reply.MessageType, + MessageBody = XmlUtil.SerializeXml(new Schema.Message + { + MessageID = reply.Id, + ConversationID = reply.ConversationID ?? 0, + ReplyToMessageID = reply.ParentMessageId, + Creator = replyAuthor.Uid.ToString() ?? "Ghost", + CreateTime = reply.CreatedAt, + UpdateDate = reply.LastUpdatedAt, + MessageType = reply.MessageType.Value, + MessageLevel = reply.MessageLevel, + Content = reply.Data ?? "No Data Found In This Message. This Might Be An Error.", + DisplayAttribute = "C=White" // still having it always white :) + }), + MessageDate = reply.CreatedAt + }; + + combinedListMessages.Add(clmReply); + } } // save any changes made to db ctx.SaveChanges(); - // sort messages by newest first - combinedListMessages = combinedListMessages.OrderBy(e => e.MessageDate).ToList(); + // reverse list + combinedListMessages.Reverse(); // add list as array to response response.CombinedListMessage = combinedListMessages.ToArray();