diff --git a/src/Services/MessagingService.cs b/src/Services/MessagingService.cs index 50976a3..fc13216 100644 --- a/src/Services/MessagingService.cs +++ b/src/Services/MessagingService.cs @@ -16,19 +16,17 @@ public class MessagingService this.ctx = ctx; } - public Model.Message AddMessageToViking(Viking viking, Viking? toViking, MessageType messageType, MessageTypeID messageTypeID, MessageLevel messageLevel, string data, string memberMessage = "", string nonMemberMessage = "", bool IsNew = true, bool IsDeleted = false, bool isReply = false, bool isPrivate = false, int parentMessageId = 0) + public Model.Message AddMessageToViking(Viking? viking, Viking toViking, MessageType messageType, MessageTypeID messageTypeID, MessageLevel messageLevel, string data, string memberMessage = "", string nonMemberMessage = "", bool IsNew = true, bool IsDeleted = false, bool isReply = false, bool isPrivate = false, int parentMessageId = 0) { // get execution UTC timestamp DateTime now = DateTime.UtcNow; // for generating ConversationId and QueueId Random rnd = new Random(); - + // construct message Model.Message message = new Model.Message { - Viking = viking, - VikingId = viking.Id, ToViking = toViking, ToVikingId = toViking.Id, QueueID = rnd.Next(1000, 9999), @@ -46,6 +44,16 @@ public class MessagingService IsPrivate = isPrivate }; + if (viking == null) + { + message.Viking = null; + message.VikingId = -1; // -1 = System Message + } else + { + message.Viking = viking; + message.VikingId = viking.Id; + } + if (isReply && parentMessageId > 0) { // get message this is in reply to @@ -139,7 +147,7 @@ public class MessagingService MessageID = message.Id, ConversationID = message.ConversationID ?? 0, ReplyToMessageID = message.ParentMessageId, - Creator = msgAuthor.Uid.ToString() ?? "Ghost", + Creator = msgAuthor.Uid.ToString() ?? new Guid().ToString(), CreateTime = message.CreatedAt, UpdateDate = message.LastUpdatedAt, MessageType = message.MessageType.Value, @@ -169,7 +177,7 @@ public class MessagingService UserMessageQueueID = message.QueueID, MessageID = message.Id, MessageTypeID = (int?)message.MessageTypeID, - FromUserID = msgAuthor.Uid.ToString() ?? "NotFound", + FromUserID = msgAuthor.Uid.ToString() ?? new Guid().ToString(), MemberMessage = message.MemberMessage ?? "NoData", NonMemberMessage = message.NonMemberMessage ?? "NoData", Data = data @@ -182,7 +190,7 @@ public class MessagingService UserMessageQueueID = message.QueueID, MessageID = message.Id, MessageTypeID = (int?)message.MessageTypeID, - FromUserID = msgAuthor.Uid.ToString() ?? "NotFound", + FromUserID = msgAuthor.Uid.ToString() ?? new Guid().ToString(), MemberMessage = message.MemberMessage ?? "NoData", NonMemberMessage = message.NonMemberMessage ?? "NoData", Data = message.Data @@ -205,7 +213,7 @@ public class MessagingService MessageID = reply.Id, ConversationID = reply.ConversationID ?? 0, ReplyToMessageID = reply.ParentMessageId, - Creator = replyAuthor.Uid.ToString() ?? "Ghost", + Creator = replyAuthor.Uid.ToString() ?? new Guid().ToString(), CreateTime = reply.CreatedAt, UpdateDate = reply.LastUpdatedAt, MessageType = reply.MessageType.Value, @@ -252,13 +260,13 @@ public class MessagingService Viking? msgAuthor = ctx.Vikings.FirstOrDefault(e => e.Id == message.VikingId) ?? new Viking(); if(message.IsDeleted) { ctx.Messages.Remove(message); continue; } - if(DateTime.Compare(now, message.CreatedAt.AddMinutes(30)) > 0) { message.IsNew = false; continue; } // sometimes clients won't set IsNew flag when updating messages, so do not add messages more than 30 minutes old to response + if(DateTime.Compare(now, message.CreatedAt.AddMinutes(30)) > 0 && !showOldMessages) { message.IsNew = false; continue; } // sometimes clients won't set IsNew flag when updating messages, so do not add messages more than 30 minutes old to response if(!message.IsNew && !showOldMessages) continue; messageInfos.Add(new MessageInfo { MessageID = message.Id, UserMessageQueueID = message.QueueID, - FromUserID = msgAuthor.Uid.ToString() ?? "NotFound", + FromUserID = msgAuthor.Uid.ToString() ?? new Guid().ToString(), MessageTypeID = (int?)message.MessageTypeID, Data = message.Data ?? "NoData", MemberMessage = message.MemberMessage ?? "NoMessage",