This commit is contained in:
2023-06-17 14:16:09 +03:00
parent 62178f1f32
commit 7ae5d3bc81
180 changed files with 12932 additions and 192 deletions
@@ -0,0 +1,95 @@
namespace MyOffice.Web.Controllers;
using Core.Extensions;
using Data.Models.Currencies;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Data.Repositories.Currency;
using Models.Currency;
using Services.Currency;
using Services.Currency.Domain;
using MyOffice.Core;
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class CurrencyController : BaseApiController
{
private readonly CurrencyService _currencyService;
private readonly ILogger<CurrencyController> _logger;
public CurrencyController(
CurrencyService currencyService,
ILogger<CurrencyController> logger
)
{
_currencyService = currencyService;
_logger = logger;
}
[HttpGet("~/api/settings/currencies")]
public object Get()
{
var list = _currencyService.GetAllWithRates(UserId);
return list.Select(x => x.Key.ToModel(x.Value));
}
[HttpPost("~/api/settings/currencies")]
public object Post(CurrencyAddModel currency)
{
var exec = _currencyService.AddCurrency(UserId, new Currency
{
UserId = UserId,
CurrencyGlobalId = currency.Id,
Name = currency.Name,
ShortName = currency.ShortName,
});
switch (exec.Status)
{
case AddCurrencyStatus.success:
case AddCurrencyStatus.exists:
_currencyService.AddCurrencyRate(UserId, exec.Result!.Id, new CurrencyRate()
{
CurrencyId = exec.Result!.Id,
Rate = currency.Rate,
Quantity = currency.Quantity,
DateTime = currency.RateDate.Date,
});
return currency;
case AddCurrencyStatus.failed:
return ProblemBadRequest("Adding currency failed.");
default:
throw new NotSupportedException(exec.Status.ToString());
}
}
[HttpPost("~/api/settings/currencies/{id}/rate")]
public object Post(string id, CurrencyRateModel currencyRate)
{
var exec = _currencyService.AddCurrencyRate(UserId, id.AsGuid(), new CurrencyRate()
{
CurrencyId = id.AsGuid(),
Quantity = currencyRate.Quantity,
Rate = currencyRate.Rate,
DateTime = currencyRate.RateDate.Date,
});
switch (exec.Status)
{
case CurrencyAddRateStatus.failed:
return ProblemBadRequest("Adding currency rate failed.");
case CurrencyAddRateStatus.not_found:
return ProblemBadRequest("Currency not found.");
case CurrencyAddRateStatus.success:
return exec.Result!;
default:
throw new NotSupportedException(exec.Status.ToString());
}
}
}