using System.Globalization; using Asp.Versioning; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; using UGQApiServer.Converter; using UGQApiServer.Models; using UGQApiServer.UGQData; using UGQDataAccess; using ServerCommon.UGQ; using ServerCommon.UGQ.Models; using ServerCommon; using UGQApiServer.Auth; using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; using UGQApiServer.Controllers.Common; using MetaAssets; using ServerBase; namespace UGQApiServer.Controllers { [Authorize] [ApiController] [ApiVersion("1.0")] [Route("api/v{version:apiVersion}/[controller]")] [UGQWebApi] [AllowWhenSingleLogin] public class MetaDataController : ControllerBase { const int PAGE_SIZE = 30; UGQMetaData _ugqMetaData; DynamoDbClient _dynamoDbClient; MetaDataApi _metaDataApi; public MetaDataController(UGQMetaData ugqMetaData, DynamoDbClient dynamoDbClient, MetaDataApi metaDataApi) { _ugqMetaData = ugqMetaData; _dynamoDbClient = dynamoDbClient; _metaDataApi = metaDataApi; } string? userGuidFromToken() { return User.Claims.FirstOrDefault(c => c.Type == "Id")?.Value; } /// /// »ç¿ë°¡´ÉÇÑ ½ÃÀÛ npc °¡Á®¿À±â /// /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("assignable-npcs")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(UGQNpcMetaDataList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getAssignableNpcs([FromQuery] int pageNumber, [FromQuery] int pageSize) { var userGuid = userGuidFromToken(); if (userGuid == null) return Results.Unauthorized(); return await _metaDataApi.getAssignableNpcs(userGuid, pageNumber, pageSize); } /// /// »ç¿ë°¡´ÉÇÑ task action °¡Á®¿À±â /// /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("available-task-actions")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(TaskActionList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getAvailableTaskActions([FromQuery] int pageNumber, [FromQuery] int pageSize) { return await _metaDataApi.getAvailableTaskActions(pageNumber, pageSize); } /// /// ¾×¼ÇÀÇ ÀԷ°¡´ÉÇÑ °ª ¸®½ºÆ® ¾ò¾î¿À±â /// /// /// Task ActionÀÌ ÀÇ»óÀåÂøÀÎ °æ¿ì¿¡ »ç¿ë /// /// TaskActionÀÇ ¾ÆÀ̵ð /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("task-action-values")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(TaskActionValueList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getActionValues([FromQuery] int taskActionId, [FromQuery] int pageNumber, [FromQuery] int pageSize) { var userGuid = userGuidFromToken(); if (userGuid == null) return Results.Unauthorized(); return await _metaDataApi.getActionValues(userGuid, taskActionId, pageNumber, pageSize); } /// /// »ç¿ë°¡´ÉÇÑ dialog À¯Çü °¡Á®¿À±â /// /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("dialog-types")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(DialogTypeList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getDialogTypes([FromQuery] int pageNumber, [FromQuery] int pageSize) { return await _metaDataApi.getDialogTypes(pageNumber, pageSize); } /// /// dialog À¯Çü¿¡ µû¶ó »ç¿ë°¡´ÉÇÑ dialog ¾×¼Ç °¡Á®¿À±â /// /// dialog À¯Çü /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("dialog-actions")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(DialogActionList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getDialogActions([FromQuery] int dialogType, [FromQuery] int pageNumber, [FromQuery] int pageSize) { return await _metaDataApi.getDialogActions(dialogType, pageNumber, pageSize); } /// /// dialog ¾×¼Ç¿¡ µû¶ó ÀÔ·Â °¡´ÉÇÑ °ª °¡Á®¿À±â /// /// ´ÙÀ̾ó·Î±× ŸÀÔ /// Á¶°Ç Á¾·ù /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("dialog-action-values")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(DialogActionValueList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getDialogConditionValues([FromQuery] int dialogType, [FromQuery] int dialogActionId, [FromQuery] int pageNumber, [FromQuery] int pageSize) { return await _metaDataApi.getDialogConditionValues(dialogType, dialogActionId, pageNumber, pageSize); } /// /// NPC ¿¬Ãâ µ¥ÀÌÅÍ °ª °¡Á®¿À±â /// /// npc gender /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("npc-action-values")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(NpcActionValueList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getNpcActionValues([FromQuery] EGenderType gender, [FromQuery] int pageNumber, [FromQuery] int pageSize) { return await _metaDataApi.getNpcActionValues(pageNumber, pageSize, gender); } /// /// Map µ¥ÀÌÅÍ °ª °¡Á®¿À±â /// /// ÆäÀÌÁö /// pageSize (ÃÖ´ë 100) [HttpGet] [Route("map-data-values")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(MapDataValueList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getNpcActionValues([FromQuery] int pageNumber, [FromQuery] int pageSize) { return await _metaDataApi.getMapDataValues(pageNumber, pageSize); } [HttpGet] [Route("preset-images")] [Produces("application/json")] [SwaggerResponse(StatusCodes.Status200OK, Type = typeof(DialogActionValueList))] [SwaggerResponse(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))] public async Task getPresetImages([FromQuery] PresetKind kind, [FromQuery] PresetCategory category) { return await _metaDataApi.getPresetImages(kind, category); } } }