mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
7bb7ab6f13
Base functionality:
DB
email sending
user registration & login
storing new characters and reading them back
Notes:
Functionality is "hidden" with no links pointing to it.
Most pages are scaffolded and not reviewed at all :(
local Dev db setup is pushed to git
NO local email setup :(
53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using Kemkas.Web.Db.Models;
|
|
using Kemkas.Web.Services;
|
|
using Kemkas.Web.Services.Character;
|
|
using Kemkas.Web.ViewModels;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Kemkas.Web.Controllers;
|
|
|
|
[ApiController]
|
|
[Route("[controller]")]
|
|
public class CharacterController(
|
|
ICharacterValidationService validationService,
|
|
ICharacterDtoToDbModelService dtoToDbModelService,
|
|
ICharacterDbModelToDtoService dbModelToDtoService,
|
|
ICharacterPersistenceService persistenceService)
|
|
: ControllerBase
|
|
{
|
|
[HttpPost]
|
|
public async Task<ActionResult<Guid>> StoreNewCharacter([FromBody] CharacterDto dto)
|
|
{
|
|
var errors = validationService.Validate(dto);
|
|
if (errors != null)
|
|
{
|
|
return BadRequest(errors);
|
|
}
|
|
|
|
V1Karakter model;
|
|
try
|
|
{
|
|
model = dtoToDbModelService.Convert(dto);
|
|
}
|
|
catch (ValidationException ex)
|
|
{
|
|
return BadRequest(ex.Message);
|
|
}
|
|
var id = await persistenceService.StoreNewCharacter(model);
|
|
return id;
|
|
}
|
|
|
|
[HttpGet("{id:guid}")]
|
|
public async Task<ActionResult<CharacterDto>> GetCharacterById([FromRoute] Guid id)
|
|
{
|
|
var entity = await persistenceService.GetCharacterById(id);
|
|
if (entity is null)
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
return dbModelToDtoService.Convert(entity);
|
|
}
|
|
} |