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 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(); NullReferenceCheckHelper.throwIfNull(system_meta_mail_attribute, () => $"system_meta_mail_attribute is null !!! - {owner.toBasicString()}"); List data = new List(); 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 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 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 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(); 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()}"; } }