83 lines
3.9 KiB
C#
83 lines
3.9 KiB
C#
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<BuildingFloorAttribute>();
|
|
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<BuildingFloorAttribute>();
|
|
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);
|
|
}
|
|
}
|
|
}
|