forked from SoDOff-Project/sodoff
fix issues with replies
This commit is contained in:
parent
157f8fc455
commit
4922223bb2
@ -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<Model.Message> messages = ctx.Messages.Where(e => e.ToVikingId == viking.Id)
|
||||
.ToList();
|
||||
List<Model.Message> messages = ctx.Messages.Where(e => e.ToVikingId == viking.Id).ToList();
|
||||
|
||||
List<CombinedListMessage> combinedListMessages = new List<CombinedListMessage>();
|
||||
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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user