fix issues with replies

This commit is contained in:
Alan Moon 2025-03-02 19:56:11 -08:00
parent 157f8fc455
commit 4922223bb2

View File

@ -1,4 +1,5 @@
using System; using System;
using Microsoft.EntityFrameworkCore;
using sodoff.Model; using sodoff.Model;
using sodoff.Schema; using sodoff.Schema;
using sodoff.Util; using sodoff.Util;
@ -52,6 +53,7 @@ public class MessagingService
{ {
message.ParentMessage = messageToReplyTo; message.ParentMessage = messageToReplyTo;
message.ParentMessageId = messageToReplyTo.Id; message.ParentMessageId = messageToReplyTo.Id;
message.ConversationID = messageToReplyTo.ConversationID;
} else throw new InvalidOperationException("Tried To Reply To A Message That Doesn't Exist"); } 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) public ArrayOfCombinedListMessage ConstructCombinedMessageArray(Viking viking)
{ {
// get all messages in viking board // get all messages in viking board
List<Model.Message> messages = ctx.Messages.Where(e => e.ToVikingId == viking.Id) List<Model.Message> messages = ctx.Messages.Where(e => e.ToVikingId == viking.Id).ToList();
.ToList();
List<CombinedListMessage> combinedListMessages = new List<CombinedListMessage>(); List<CombinedListMessage> combinedListMessages = new List<CombinedListMessage>();
ArrayOfCombinedListMessage response = new ArrayOfCombinedListMessage(); ArrayOfCombinedListMessage response = new ArrayOfCombinedListMessage();
@ -181,13 +182,40 @@ public class MessagingService
// add clm to list // add clm to list
combinedListMessages.Add(clm); 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 // save any changes made to db
ctx.SaveChanges(); ctx.SaveChanges();
// sort messages by newest first // reverse list
combinedListMessages = combinedListMessages.OrderBy(e => e.MessageDate).ToList(); combinedListMessages.Reverse();
// add list as array to response // add list as array to response
response.CombinedListMessage = combinedListMessages.ToArray(); response.CombinedListMessage = combinedListMessages.ToArray();