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 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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user