Files
2025-05-01 07:20:41 +09:00

151 lines
5.0 KiB
C#

using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using ServerCore;
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using MetaAssets;
namespace GameServer;
public class SystemMetaMail : EntityBase
{
private SystemMetaMail(EntityBase parent)
: base(EntityType.SystemMail, parent)
{
}
public override async Task<Result> onInit()
{
addEntityAttribute(new SystemMetaMailAttribute(this));
return await base.onInit();
}
public static async Task<(Result, SystemMetaMail?)> createTestSystemMail(EntityBase owner, int mail_sequence_num)
{
var system_mail = new SystemMetaMail(owner);
var result = await system_mail.onInit();
if (result.isFail())
{
return (result, null);
}
var err_msg = string.Empty;
DateTime now = DateTime.UtcNow;
var system_meta_mail_attribute = system_mail.getEntityAttribute<SystemMetaMailAttribute>();
NullReferenceCheckHelper.throwIfNull(system_meta_mail_attribute, () => $"system_meta_mail_attribute is null !!! - {owner.toBasicString()}");
List<ServerCommon.MailItem> data = new List<ServerCommon.MailItem>();
data.Add(new ServerCommon.MailItem() { ItemId = 15231470, Count = 1 });
data.Add(new ServerCommon.MailItem() { ItemId = 31020014, Count = 1 });
system_meta_mail_attribute.MailId = mail_sequence_num + 1;
List<OperationSystemMessage> titles = new();
OperationSystemMessage title_ko = new();
title_ko.LanguageType = LanguageType.Ko;
title_ko.Text = "한국어 타이틀";
titles.Add(title_ko);
OperationSystemMessage title_ja = new();
title_ja.LanguageType = LanguageType.Ja;
title_ja.Text = "日本語 タイトル";//メッセージ 送信者
titles.Add(title_ja);
OperationSystemMessage title_en = new();
title_en.LanguageType = LanguageType.En;
title_en.Text = "English Title";
titles.Add(title_en);
system_meta_mail_attribute.Title = titles;
List<OperationSystemMessage> messages = new();
OperationSystemMessage msg_ko = new();
msg_ko.LanguageType = LanguageType.Ko;
msg_ko.Text = "한국어 메시지";
messages.Add(msg_ko);
OperationSystemMessage msg_ja = new();
msg_ja.LanguageType = LanguageType.Ja;
msg_ja.Text = "日本語 メッセージ";// 送信者
messages.Add(msg_ja);
OperationSystemMessage msg_en = new();
msg_en.LanguageType = LanguageType.En;
msg_en.Text = "English Message";
messages.Add(msg_en);
system_meta_mail_attribute.Text = messages;
List<OperationSystemMessage> senders = new();
OperationSystemMessage senders_ko = new();
senders_ko.LanguageType = LanguageType.Ko;
senders_ko.Text = "한국어 보낸이";
senders.Add(senders_ko);
OperationSystemMessage senders_ja = new();
senders_ja.LanguageType = LanguageType.Ja;
senders_ja.Text = "日本語 送信者";//
senders.Add(senders_ja);
OperationSystemMessage senders_en = new();
senders_en.LanguageType = LanguageType.En;
senders_en.Text = "English Sender";
senders.Add(senders_en);
system_meta_mail_attribute.SenderNickName = messages;
system_meta_mail_attribute.StartTime = now;
system_meta_mail_attribute.EndTime = now.AddDays(2);
system_meta_mail_attribute.ItemList.AddRange(data);
system_meta_mail_attribute.newEntityAttribute();
return (result, system_mail);
}
public static async Task<(Result, SystemMetaMail?)> createMailFromDoc(EntityBase parent, SystemMetaMailDoc doc)
{
var system_mail = new SystemMetaMail(parent);
var result = await system_mail.onInit();
if (result.isFail())
{
return (result, null);
}
var err_msg = string.Empty;
var system_mail_attribute = system_mail.getEntityAttribute<SystemMetaMailAttribute>();
NullReferenceCheckHelper.throwIfNull(system_mail_attribute, () => $"system_mail_attribute is null !!! - {parent.toBasicString()}");
if (system_mail_attribute.copyEntityAttributeFromDoc(doc) == false)
{
err_msg = $"Failed to copyEntityAttributeFromDoc !!! : doc_type {doc.GetType()} - {system_mail.getRootParent()?.toBasicString()}";
result.setFail(ServerErrorCode.DynamoDbDocCopyToEntityAttributeFailed, err_msg);
Log.getLogger().error(err_msg);
return (result, null);
}
return (result, system_mail);
}
public override string toBasicString()
{
return $"{this.getTypeName()} - {getRootParent()?.toBasicString()}";
}
public override string toSummaryString()
{
return $"{this.getTypeName()} - {getRootParent()?.toSummaryString()}";
}
}