using ServerCommon; using ServerCore; using ServerBase; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameServer { internal class BuildingRentalHistoryAgentAction : EntityActionBase { ConcurrentBag m_building_rental_historys = new(); public BuildingRentalHistoryAgentAction(Building owner) : base(owner) { } public override async Task onInit() { var result = new Result(); return await Task.FromResult(result); } public override void onClear() { return; } public async Task tryLoadBuildingRentalHistoryFromDb(int buildingMetaId) { var result = new Result(); var err_msg = string.Empty; var server_logic = GameServerApp.getServerLogic(); var db_client = server_logic.getDynamoDbClient(); var doc = new BuildingRentalHistoryDoc(); doc.setCombinationKeyForPK(buildingMetaId.ToString()); var error_code = doc.onApplyPKSK(); if (error_code.isFail()) { err_msg = $"Failed to onApplyPKSK() !!! : {error_code.toBasicString()}"; result.setFail(error_code, err_msg); Log.getLogger().error(result.toBasicString()); return result; } var query_config = db_client.makeQueryConfigWithPKSKBySKBeginWith(doc.getPK(), BuildingRentalHistoryDoc.getPrefixOfSK()); (result, var read_docs) = await db_client.simpleQueryDocTypesWithQueryOperationConfig(query_config); if (result.isFail()) { err_msg = $"Failed to simpleQueryDocTypesWithQueryOperationConfig() !!! : {result.toBasicString()}"; Log.getLogger().error(err_msg); return result; } var building = getOwner() as Building; NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!"); foreach (var read_doc in read_docs) { var building_rental_history = new BuildingRentalHistory(building); await building_rental_history.onInit(); var building_rental_history_action = building_rental_history.getEntityAction(); NullReferenceCheckHelper.throwIfNull(building_rental_history_action, () => $"building_rental_history_action is null !!!"); result = building_rental_history_action.tryLoadBuildingRentalHistoryFromDoc(read_doc); if (result.isFail()) { err_msg = $"Failed to tryLoadBuildingRentalHistoryFromDoc() !!! : {result.toBasicString()}"; Log.getLogger().error(err_msg); return result; } var building_rental_history_attribute = building_rental_history.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(building_rental_history_attribute, () => $"building_rental_history_attribute is null !!!"); m_building_rental_historys.Add(building_rental_history); } return result; } public async Task> getBuildingRentalHistoryInfos() { var building_rental_story_infos = new List(); foreach (var building_rental_history in m_building_rental_historys) { var building_rental_history_info = await building_rental_history.toBuildingRentalHistoryInfo(); building_rental_story_infos.Add(building_rental_history_info); } return building_rental_story_infos; } public void addBuildingRentalHistory(BuildingRentalHistory buildingRentalHistory) { m_building_rental_historys.Add(buildingRentalHistory); } } }