using Google.Protobuf.WellKnownTypes; using ServerCommon; using ServerCore; using ServerBase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameServer { internal static class BuildingFloorHelper { public static async Task<(Result, BuildingFloorInfo)> tryGetBuildingFloorInfo(this BuildingFloor buildingFloor) { var result = new Result(); var err_msg = string.Empty; var building_floor_info = new BuildingFloorInfo(); var building_floor_attribute = buildingFloor.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!"); (result, var nickname_attrib) = await NicknameDoc.findNicknameFromGuid(building_floor_attribute.OwnerGuid); if (result.isFail()) { err_msg = $"Failed to findNicknameFromGuid() !!! : userGuid:{building_floor_attribute.OwnerGuid}, {result.toBasicString()}"; Log.getLogger().error(err_msg); return (result, building_floor_info); } NullReferenceCheckHelper.throwIfNull(nickname_attrib, () => $"nickname_attrib is null !!!"); building_floor_info.Floor = (int)building_floor_attribute.Floor; building_floor_info.InstanceName = building_floor_attribute.InstanceName; building_floor_info.RenteeUserGuid = building_floor_attribute.OwnerGuid; building_floor_info.RenteeUserNickname = nickname_attrib.Nickname; building_floor_info.RentalFinishTime = building_floor_attribute.RentalFinishTime.ToTimestamp(); return (result, building_floor_info); } public static async Task<(Result, BuildingFloor?, DynamoDbDocBase?)> tryMakeBuildingFloor(Building building, RentFloorRequestInfo rentFloorRequestInfo) { var result = new Result(); var err_msg = string.Empty; var building_floor = new BuildingFloor(building); await building_floor.onInit(); var building_floor_attribute = building_floor.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!"); var rental_period = TimeSpan.FromDays(rentFloorRequestInfo.RentalPeriod); building_floor_attribute.LandMetaId = rentFloorRequestInfo.LandId; building_floor_attribute.BuildingMetaId = rentFloorRequestInfo.BuildingId; building_floor_attribute.Floor = rentFloorRequestInfo.Floor; building_floor_attribute.OwnerGuid = rentFloorRequestInfo.OwnerGuid; building_floor_attribute.MyhomeGuid = rentFloorRequestInfo.MyhomeGuid; building_floor_attribute.InstanceName = rentFloorRequestInfo.InstanceName; building_floor_attribute.ThumbnailImageId = rentFloorRequestInfo.ThumbnailImageId; building_floor_attribute.ListImageId = rentFloorRequestInfo.ListImageId; building_floor_attribute.EnterPlayerCount = rentFloorRequestInfo.EnterPlayerCount; building_floor_attribute.RentalPeriod = rental_period; building_floor_attribute.RentalStartTime = rentFloorRequestInfo.RentalStartTime.ToDateTime(); building_floor_attribute.RentalFinishTime = rentFloorRequestInfo.RentalFinishTime.ToDateTime(); building_floor_attribute.modifiedEntityAttribute(true); (result, var building_floor_doc) = await building_floor_attribute.toDocBase(); if (result.isFail()) { err_msg = $"Failed to toDocBase() !!! : {result.toBasicString()}"; Log.getLogger().error(err_msg); return (result, null, null); } return (result, building_floor, building_floor_doc); } } }