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);
}
}
}