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;
|
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
|
// get execution UTC timestamp
|
||||||
DateTime now = DateTime.UtcNow;
|
DateTime now = DateTime.UtcNow;
|
||||||
|
|
||||||
// for generating ConversationId and QueueId
|
// for generating ConversationId and QueueId
|
||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
|
|
||||||
// construct message
|
// construct message
|
||||||
Model.Message message = new Model.Message
|
Model.Message message = new Model.Message
|
||||||
{
|
{
|
||||||
Viking = viking,
|
|
||||||
VikingId = viking.Id,
|
|
||||||
ToViking = toViking,
|
ToViking = toViking,
|
||||||
ToVikingId = toViking.Id,
|
ToVikingId = toViking.Id,
|
||||||
QueueID = rnd.Next(1000, 9999),
|
QueueID = rnd.Next(1000, 9999),
|
||||||
@ -46,6 +44,16 @@ public class MessagingService
|
|||||||
IsPrivate = isPrivate
|
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)
|
if (isReply && parentMessageId > 0)
|
||||||
{
|
{
|
||||||
// get message this is in reply to
|
// get message this is in reply to
|
||||||
@ -139,7 +147,7 @@ public class MessagingService
|
|||||||
MessageID = message.Id,
|
MessageID = message.Id,
|
||||||
ConversationID = message.ConversationID ?? 0,
|
ConversationID = message.ConversationID ?? 0,
|
||||||
ReplyToMessageID = message.ParentMessageId,
|
ReplyToMessageID = message.ParentMessageId,
|
||||||
Creator = msgAuthor.Uid.ToString() ?? "Ghost",
|
Creator = msgAuthor.Uid.ToString() ?? new Guid().ToString(),
|
||||||
CreateTime = message.CreatedAt,
|
CreateTime = message.CreatedAt,
|
||||||
UpdateDate = message.LastUpdatedAt,
|
UpdateDate = message.LastUpdatedAt,
|
||||||
MessageType = message.MessageType.Value,
|
MessageType = message.MessageType.Value,
|
||||||
@ -169,7 +177,7 @@ public class MessagingService
|
|||||||
UserMessageQueueID = message.QueueID,
|
UserMessageQueueID = message.QueueID,
|
||||||
MessageID = message.Id,
|
MessageID = message.Id,
|
||||||
MessageTypeID = (int?)message.MessageTypeID,
|
MessageTypeID = (int?)message.MessageTypeID,
|
||||||
FromUserID = msgAuthor.Uid.ToString() ?? "NotFound",
|
FromUserID = msgAuthor.Uid.ToString() ?? new Guid().ToString(),
|
||||||
MemberMessage = message.MemberMessage ?? "NoData",
|
MemberMessage = message.MemberMessage ?? "NoData",
|
||||||
NonMemberMessage = message.NonMemberMessage ?? "NoData",
|
NonMemberMessage = message.NonMemberMessage ?? "NoData",
|
||||||
Data = data
|
Data = data
|
||||||
@ -182,7 +190,7 @@ public class MessagingService
|
|||||||
UserMessageQueueID = message.QueueID,
|
UserMessageQueueID = message.QueueID,
|
||||||
MessageID = message.Id,
|
MessageID = message.Id,
|
||||||
MessageTypeID = (int?)message.MessageTypeID,
|
MessageTypeID = (int?)message.MessageTypeID,
|
||||||
FromUserID = msgAuthor.Uid.ToString() ?? "NotFound",
|
FromUserID = msgAuthor.Uid.ToString() ?? new Guid().ToString(),
|
||||||
MemberMessage = message.MemberMessage ?? "NoData",
|
MemberMessage = message.MemberMessage ?? "NoData",
|
||||||
NonMemberMessage = message.NonMemberMessage ?? "NoData",
|
NonMemberMessage = message.NonMemberMessage ?? "NoData",
|
||||||
Data = message.Data
|
Data = message.Data
|
||||||
@ -205,7 +213,7 @@ public class MessagingService
|
|||||||
MessageID = reply.Id,
|
MessageID = reply.Id,
|
||||||
ConversationID = reply.ConversationID ?? 0,
|
ConversationID = reply.ConversationID ?? 0,
|
||||||
ReplyToMessageID = reply.ParentMessageId,
|
ReplyToMessageID = reply.ParentMessageId,
|
||||||
Creator = replyAuthor.Uid.ToString() ?? "Ghost",
|
Creator = replyAuthor.Uid.ToString() ?? new Guid().ToString(),
|
||||||
CreateTime = reply.CreatedAt,
|
CreateTime = reply.CreatedAt,
|
||||||
UpdateDate = reply.LastUpdatedAt,
|
UpdateDate = reply.LastUpdatedAt,
|
||||||
MessageType = reply.MessageType.Value,
|
MessageType = reply.MessageType.Value,
|
||||||
@ -252,13 +260,13 @@ public class MessagingService
|
|||||||
Viking? msgAuthor = ctx.Vikings.FirstOrDefault(e => e.Id == message.VikingId) ?? new Viking();
|
Viking? msgAuthor = ctx.Vikings.FirstOrDefault(e => e.Id == message.VikingId) ?? new Viking();
|
||||||
|
|
||||||
if(message.IsDeleted) { ctx.Messages.Remove(message); continue; }
|
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;
|
if(!message.IsNew && !showOldMessages) continue;
|
||||||
messageInfos.Add(new MessageInfo
|
messageInfos.Add(new MessageInfo
|
||||||
{
|
{
|
||||||
MessageID = message.Id,
|
MessageID = message.Id,
|
||||||
UserMessageQueueID = message.QueueID,
|
UserMessageQueueID = message.QueueID,
|
||||||
FromUserID = msgAuthor.Uid.ToString() ?? "NotFound",
|
FromUserID = msgAuthor.Uid.ToString() ?? new Guid().ToString(),
|
||||||
MessageTypeID = (int?)message.MessageTypeID,
|
MessageTypeID = (int?)message.MessageTypeID,
|
||||||
Data = message.Data ?? "NoData",
|
Data = message.Data ?? "NoData",
|
||||||
MemberMessage = message.MemberMessage ?? "NoMessage",
|
MemberMessage = message.MemberMessage ?? "NoMessage",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user