초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,204 @@
using Newtonsoft.Json;
using ServerCore;
using ServerBase;
namespace ServerCommon;
public class CaliumAttribute : EntityAttributeBase, ICopyEntityAttributeFromDoc, IMergeWithEntityAttribute
{
[JsonProperty]
public double DailyCalium
{
get { return m_daily_calium; }
set
{
var recorder = getEntityRecorder();
if (null != recorder)
{
recorder.applyDeltaCounter(EntityDeltaType.MoneyCalium, value - m_daily_calium, value);
}
m_daily_calium = value;
}
}
private double m_daily_calium = 0.0;
[JsonProperty]
public DateTime ProvidedDate { get; set; }
public CaliumAttribute(UserBase owner) : base(owner, false){}
public override void onClear()
{
DailyCalium = 0.0;
ProvidedDate = DateTimeHelper.MinTime;
getAttributeState().reset();
}
public override EntityAttributeBase onCloned()
{
var owner = getOwner() as UserBase;
NullReferenceCheckHelper.throwIfNull(owner, () => "owner is null !!!");
var cloned = new CaliumAttribute(owner);
cloned.DailyCalium = DailyCalium;
cloned.ProvidedDate = ProvidedDate;
return cloned;
}
public override IEntityAttributeTransactor onNewEntityAttributeTransactor()
{
return new CaliumAttributeTransactor(getOwner());
}
public override async Task<(Result, DynamoDbDocBase?)> toDocBase(bool isForQuery = true)
{
var result = new Result();
var owner = getOwner();
var user_attribute = owner.getEntityAttribute<UserAttribute>();
NullReferenceCheckHelper.throwIfNull(user_attribute, () => $"user_attribute is null !!! - {owner.toBasicString()}");
var user_guid = user_attribute.UserGuid;
var to_copy_doc = new CaliumDoc(user_guid);
if (false == getAttributeState().hasFlag(StateType.Created))
{
var origin_doc_base = getOriginDocBase<CaliumAttribute>();
NullReferenceCheckHelper.throwIfNull(origin_doc_base, () => $"origin_doc_base is null !!! - {owner.toBasicString()}");
to_copy_doc.copyTimestampsFromOriginDocBase(origin_doc_base);
}
var to_copy_calium_attrib = to_copy_doc.getAttrib<CaliumAttrib>();
NullReferenceCheckHelper.throwIfNull(to_copy_calium_attrib, () => $"to_copy_calium_attrib is null !!! - {owner.toBasicString()}");
to_copy_calium_attrib.DailyCalium = DailyCalium;
to_copy_calium_attrib.ProvidedDate = ProvidedDate;
if (false == isForQuery)
{
return (result, to_copy_doc);
}
(result, var to_query_doc) = await applyDoc4Query(to_copy_doc);
if (result.isFail())
{
return (result, null);
}
return (result, to_query_doc);
}
public Result onMerge(EntityAttributeBase otherEntityAttribute)
{
var owner = getOwner();
ArgumentNullReferenceCheckHelper.throwIfNull(otherEntityAttribute, () => $"otherEntityAttribute is null !!! - {owner.toBasicString()}");
var result = new Result();
string err_msg;
//=====================================================================================
// OtherAttribute => Attribute
//=====================================================================================
var calium_attribute = otherEntityAttribute as CaliumAttribute;
if (null == calium_attribute)
{
err_msg = $"Failed to cast CaliumAttribute !!!, calium_attribute is null - {toBasicString()}, {owner.toBasicString()}";
result.setFail(ServerErrorCode.ClassTypeCastIsNull, err_msg);
Log.getLogger().error(result.toBasicString());
return result;
}
DailyCalium = calium_attribute.DailyCalium;
ProvidedDate = calium_attribute.ProvidedDate;
//=====================================================================================
// Attribute => Origin Doc
//=====================================================================================
var origin_doc = getOriginDocBase<CaliumAttribute>() as CaliumDoc;
if (null == origin_doc)
{
err_msg = $"getOriginDocBase<CaliumAttribute>() is null !!! - docName:{nameof(CaliumDoc)} - {toBasicString()}";
Log.getLogger().warn(err_msg);
}
else
{
var calium_attrib = origin_doc.getAttrib<CaliumAttrib>();
NullReferenceCheckHelper.throwIfNull(calium_attrib, () => $"calium_attrib is null !!! - {toBasicString()}");
calium_attrib.DailyCalium = DailyCalium;
calium_attrib.ProvidedDate = ProvidedDate;
}
return result;
}
public bool copyEntityAttributeFromDoc(DynamoDbDocBase? newDocBase)
{
var owner = getOwner();
var calium_doc = newDocBase as CaliumDoc;
if (null == calium_doc)
{
var err_msg = $"calium_doc is null !!!, in copyEntityAttributeFromDoc() - docName:{nameof(CaliumDoc)} - {owner.toBasicString()}";
Log.getLogger().error(err_msg);
return false;
}
//=====================================================================================
// New Doc => Origin Doc
//=====================================================================================
syncOriginDocBaseWithNewDoc<CaliumAttribute>(calium_doc);
//=====================================================================================
// Origin Doc => Attribute
//=====================================================================================
var calium_attrib = calium_doc.getAttrib<CaliumAttrib>();
NullReferenceCheckHelper.throwIfNull(calium_attrib, () => $"calium_attrib is null !!! - {owner.toBasicString()}");
DailyCalium = calium_attrib.DailyCalium;
ProvidedDate = calium_attrib.ProvidedDate;
return true;
}
}
public class CaliumAttributeTransactor : EntityAttributeTransactorBase<CaliumAttribute>, ICopyEntityAttributeTransactorFromEntityAttribute
{
public CaliumAttributeTransactor(EntityBase owner) : base(owner) { }
public bool copyEntityAttributeTransactorFromEntityAttribute(EntityAttributeBase? entityAttributeBase)
{
string err_msg;
var copy_from_calium_attribute = entityAttributeBase as CaliumAttribute;
if (null == copy_from_calium_attribute)
{
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_from_calium_attribute is null :{nameof(CaliumAttribute)}";
Log.getLogger().error(err_msg);
return false;
}
var copy_to_calium_attribute = getClonedEntityAttribute() as CaliumAttribute;
if (null == copy_to_calium_attribute)
{
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_to_calium_attribute is null :{nameof(CaliumAttribute)}";
Log.getLogger().error(err_msg);
return false;
}
copy_to_calium_attribute.DailyCalium = copy_from_calium_attribute.DailyCalium;
copy_to_calium_attribute.ProvidedDate = copy_from_calium_attribute.ProvidedDate;
return true;
}
}