154 lines
6.3 KiB
C#
154 lines
6.3 KiB
C#
using Newtonsoft.Json;
|
|
using ServerCore; using ServerBase;
|
|
|
|
namespace ServerCommon;
|
|
|
|
public class CaliumStorageAttribute : EntityAttributeBase, ICopyEntityAttributeFromDoc, IMergeWithEntityAttribute
|
|
{
|
|
[JsonProperty]
|
|
public double ConverterTotalCalium { get; set; }
|
|
|
|
[JsonProperty]
|
|
public double DailyConvertRate { get; set; }
|
|
|
|
[JsonProperty]
|
|
public double OperatorTotalCalium { get; set; }
|
|
|
|
[JsonProperty]
|
|
public int DailyApplyEpoch { get; set; }
|
|
|
|
[JsonProperty]
|
|
public double DailyInflationRate { get; set; }
|
|
|
|
[JsonProperty]
|
|
public DateTime DailyPivotDate { get; set; } = DateTimeHelper.MinTime;
|
|
|
|
public CaliumStorageAttribute(EntityBase owner) : base(owner, false) {}
|
|
|
|
public override void onClear()
|
|
{
|
|
ConverterTotalCalium = 0.0;
|
|
DailyConvertRate = 0.0;
|
|
OperatorTotalCalium = 0.0;
|
|
DailyApplyEpoch = 0;
|
|
DailyInflationRate = 0.0;
|
|
DailyPivotDate = DateTimeHelper.MinTime;
|
|
|
|
getAttributeState().reset();
|
|
}
|
|
|
|
public override EntityAttributeBase onCloned()
|
|
{
|
|
var cloned = new CaliumStorageAttribute(getOwner());
|
|
cloned.ConverterTotalCalium = ConverterTotalCalium;
|
|
cloned.DailyConvertRate = DailyConvertRate;
|
|
cloned.OperatorTotalCalium = OperatorTotalCalium;
|
|
cloned.DailyApplyEpoch = DailyApplyEpoch;
|
|
cloned.DailyInflationRate = DailyInflationRate;
|
|
cloned.DailyPivotDate = DailyPivotDate;
|
|
|
|
return cloned;
|
|
}
|
|
|
|
public override IEntityAttributeTransactor onNewEntityAttributeTransactor()
|
|
{
|
|
return new CaliumStorageAttributeTransactor(getOwner());
|
|
}
|
|
|
|
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_storage_attribute = otherEntityAttribute as CaliumStorageAttribute;
|
|
if (null == calium_storage_attribute)
|
|
{
|
|
err_msg = $"Failed to cast CaliumAttribute !!!, calium_storage_attribute is null - {toBasicString()}, {owner.toBasicString()}";
|
|
result.setFail(ServerErrorCode.ClassTypeCastIsNull, err_msg);
|
|
Log.getLogger().error(result.toBasicString());
|
|
|
|
return result;
|
|
}
|
|
|
|
ConverterTotalCalium = calium_storage_attribute.ConverterTotalCalium;
|
|
DailyConvertRate = calium_storage_attribute.DailyConvertRate;
|
|
OperatorTotalCalium = calium_storage_attribute.OperatorTotalCalium;
|
|
DailyApplyEpoch = calium_storage_attribute.DailyApplyEpoch;
|
|
DailyInflationRate = calium_storage_attribute.DailyInflationRate;
|
|
DailyPivotDate = calium_storage_attribute.DailyPivotDate;
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool copyEntityAttributeFromDoc(DynamoDbDocBase? newDocBase)
|
|
{
|
|
var owner = getOwner();
|
|
|
|
var calium_storage_doc = newDocBase as CaliumStorageDoc;
|
|
if (null == calium_storage_doc)
|
|
{
|
|
var err_msg = $"calium_doc is null !!!, in copyEntityAttributeFromDoc() - docName:{nameof(CaliumStorageDoc)} - {owner.toBasicString()}";
|
|
Log.getLogger().error(err_msg);
|
|
return false;
|
|
}
|
|
|
|
//=====================================================================================
|
|
// Origin Doc => Attribute
|
|
//=====================================================================================
|
|
var calium_storage_attrib = calium_storage_doc.getAttrib<CaliumStorageAttrib>();
|
|
NullReferenceCheckHelper.throwIfNull(calium_storage_attrib, () => $"calium_storage_attrib is null !!! - {owner.toBasicString()}");
|
|
|
|
ConverterTotalCalium = calium_storage_attrib.ConverterStorage.TotalCalium;
|
|
DailyConvertRate = calium_storage_attrib.ConverterStorage.DailyConvertRate;
|
|
DailyPivotDate = calium_storage_attrib.DailyPivotDate;
|
|
DailyApplyEpoch = calium_storage_attrib.DailyEpoch;
|
|
|
|
OperatorTotalCalium = calium_storage_attrib.OperatorStorage.TotalCalium;
|
|
|
|
DailyInflationRate = calium_storage_attrib.ExchangerStorage.DailyInflationRate;
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public class CaliumStorageAttributeTransactor : EntityAttributeTransactorBase<CaliumAttribute>, ICopyEntityAttributeTransactorFromEntityAttribute
|
|
{
|
|
public CaliumStorageAttributeTransactor(EntityBase owner) : base(owner) { }
|
|
|
|
public bool copyEntityAttributeTransactorFromEntityAttribute(EntityAttributeBase? entityAttributeBase)
|
|
{
|
|
string err_msg;
|
|
|
|
var copy_from_calium_storage_attribute = entityAttributeBase as CaliumStorageAttribute;
|
|
|
|
if (null == copy_from_calium_storage_attribute)
|
|
{
|
|
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_from_calium_storage_attribute is null :{nameof(CaliumAttribute)}";
|
|
Log.getLogger().error(err_msg);
|
|
return false;
|
|
}
|
|
|
|
var copy_to_calium_storage_attribute = getClonedEntityAttribute() as CaliumStorageAttribute;
|
|
if (null == copy_to_calium_storage_attribute)
|
|
{
|
|
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_to_calium_storage_attribute is null :{nameof(CaliumAttribute)}";
|
|
Log.getLogger().error(err_msg);
|
|
return false;
|
|
}
|
|
|
|
copy_to_calium_storage_attribute.ConverterTotalCalium = copy_from_calium_storage_attribute.ConverterTotalCalium;
|
|
copy_to_calium_storage_attribute.DailyConvertRate = copy_from_calium_storage_attribute.DailyConvertRate;
|
|
copy_to_calium_storage_attribute.OperatorTotalCalium = copy_from_calium_storage_attribute.OperatorTotalCalium;
|
|
copy_to_calium_storage_attribute.DailyApplyEpoch = copy_from_calium_storage_attribute.DailyApplyEpoch;
|
|
copy_to_calium_storage_attribute.DailyInflationRate = copy_from_calium_storage_attribute.DailyInflationRate;
|
|
copy_to_calium_storage_attribute.DailyPivotDate = copy_from_calium_storage_attribute.DailyPivotDate;
|
|
|
|
return true;
|
|
}
|
|
} |