Files
myoffice/MyOffice.Web/Controllers/AccountController.cs
T
2023-06-17 14:25:51 +03:00

62 lines
1.6 KiB
C#

namespace MyOffice.Web.Controllers;
using Core.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Models.Account;
using MyOffice.Data.Models.Accounts;
using MyOffice.Web.Models.AccountMotion;
using Services.Account;
using Services.Account.Domain;
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class AccountController : BaseApiController
{
private readonly ILogger<AccountController> _logger;
private readonly AccountService _accountService;
public AccountController(
ILogger<AccountController> logger,
AccountService accountService
)
{
_logger = logger;
_accountService = accountService;
}
[HttpGet("~/api/accounts")]
public object AccountsGet(string category)
{
var list = _accountService.GetByCategoryDetailed(UserId, category!.AsGuid());
return list.Select(x => x.ToModel());
}
[HttpGet("~/api/accounts/{id}/motions")]
public object AccountsMotionsGet(string category)
{
var list = _accountService.GetByCategoryDetailed(UserId, category!.AsGuid());
return list.Select(x => x.ToModel());
}
[HttpPost("~/api/accounts/{id}/motions")]
public object AccountsMotionsPost(string id, AccountMotionRequest accountMotion)
{
var exec = _accountService.AccountMotionAdd(UserId, id.AsGuid(), accountMotion.FromModel());
switch (exec.Status)
{
case AccountMotionAddResult.account_not_found:
return ProblemBadRequest("Account failed.");
case AccountMotionAddResult.failure:
return ProblemBadRequest("Adding motion failed.");
case AccountMotionAddResult.success:
return exec.Result!;
default:
throw new NotSupportedException(exec.Status.ToString());
}
}
}