forked from SoDOff-Project/sodoff
add system message support
This commit is contained in:
parent
c8c70b220e
commit
7e29d5cd4a
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user