초기커밋
This commit is contained in:
204
ServerCommon/Entity/Attribute/CaliumAttribute.cs
Normal file
204
ServerCommon/Entity/Attribute/CaliumAttribute.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user