2022-08-17 23:17:37 +03:00
|
|
|
using System.Collections.Generic;
|
2022-08-18 22:59:13 +03:00
|
|
|
using System.Collections.Immutable;
|
2022-08-13 06:35:36 +03:00
|
|
|
using System.Linq;
|
|
|
|
using BlueWest.Data;
|
|
|
|
using BlueWest.WebApi.MySQL;
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
2022-08-17 23:21:00 +03:00
|
|
|
namespace BlueWest.WebApi.Controllers
|
2022-08-13 06:35:36 +03:00
|
|
|
{
|
2022-08-18 18:46:20 +03:00
|
|
|
/// <summary>
|
|
|
|
/// The controller responsible to fetch currency data
|
|
|
|
/// </summary>
|
2022-08-17 23:21:00 +03:00
|
|
|
[ApiController]
|
|
|
|
[Route("[controller]")]
|
2022-08-18 22:59:13 +03:00
|
|
|
public class CurrencyController : ControllerBase
|
2022-08-13 06:35:36 +03:00
|
|
|
{
|
2022-08-19 06:22:55 +03:00
|
|
|
private readonly CountryDbContext _dbContext;
|
2022-08-13 06:35:36 +03:00
|
|
|
|
2022-08-19 06:22:55 +03:00
|
|
|
public CurrencyController(CountryDbContext dbContext)
|
2022-08-17 23:21:00 +03:00
|
|
|
{
|
|
|
|
_dbContext = dbContext;
|
|
|
|
}
|
2022-08-13 06:35:36 +03:00
|
|
|
|
2022-08-18 22:59:13 +03:00
|
|
|
/// <summary>
|
|
|
|
/// Gets the currency data from currency table
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
|
|
[HttpGet]
|
|
|
|
public ActionResult GetCurrencies()
|
|
|
|
{
|
|
|
|
var dbContext = _dbContext.Currencies;
|
|
|
|
|
|
|
|
if (dbContext != null)
|
|
|
|
{
|
|
|
|
return Ok(dbContext.ToArray());
|
|
|
|
}
|
|
|
|
|
|
|
|
return new NotFoundResult();
|
|
|
|
}
|
2022-08-13 06:35:36 +03:00
|
|
|
|
2022-08-18 18:46:20 +03:00
|
|
|
/// <summary>
|
|
|
|
/// Add Currency to the table of currencies
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="currencyToCreate">Currency data to create</param>
|
2022-08-18 22:59:13 +03:00
|
|
|
/// <param name="currencyAssociatedCountries">Countries</param>
|
2022-08-18 18:46:20 +03:00
|
|
|
/// <returns></returns>
|
2022-08-17 23:21:00 +03:00
|
|
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
|
|
|
[HttpPost]
|
2022-08-18 18:46:20 +03:00
|
|
|
public ActionResult AddCurrency(CurrencyCreate currencyToCreate)
|
2022-08-13 06:35:36 +03:00
|
|
|
{
|
2022-08-18 22:59:13 +03:00
|
|
|
|
|
|
|
var newCurrency = currencyToCreate.ToCurrency();
|
2022-08-17 23:21:00 +03:00
|
|
|
_dbContext.Currencies.Add(newCurrency);
|
2022-08-17 23:17:37 +03:00
|
|
|
_dbContext.SaveChanges();
|
2022-08-18 22:59:13 +03:00
|
|
|
return CreatedAtRoute(nameof(GetCurrencyById), new {CurrencyId = newCurrency.Code}, newCurrency);
|
2022-08-13 06:35:36 +03:00
|
|
|
}
|
|
|
|
|
2022-08-18 18:46:20 +03:00
|
|
|
/// <summary>
|
|
|
|
/// Update a currency data from the Currency table in the database
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="currencyNumber">The currency number we want to update</param>
|
|
|
|
/// <param name="currencyToUpdate">Currency Data to update</param>
|
|
|
|
/// <returns></returns>
|
2022-08-17 23:21:00 +03:00
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
|
|
[HttpPut("{currencyNumber}")]
|
|
|
|
public ActionResult UpdateCurrency(int currencyNumber, CurrencyUpdate currencyToUpdate)
|
2022-08-13 06:35:36 +03:00
|
|
|
{
|
2022-08-17 23:21:00 +03:00
|
|
|
var currency = _dbContext.Currencies.FirstOrDefault(x => x.Num == currencyNumber);
|
|
|
|
|
|
|
|
if (currency != null)
|
|
|
|
{
|
|
|
|
var updatedCurrency = new Currency(currencyToUpdate, currencyNumber, new List<Country>());
|
|
|
|
_dbContext.Update(updatedCurrency);
|
|
|
|
_dbContext.SaveChanges();
|
|
|
|
return Ok(updatedCurrency);
|
|
|
|
}
|
|
|
|
|
|
|
|
return new NotFoundResult();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2022-08-18 18:46:20 +03:00
|
|
|
/// <summary>
|
|
|
|
/// Gets a currency by the currency number (id)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="currencyId">The id of the currency to get</param>
|
|
|
|
/// <returns></returns>
|
2022-08-17 23:21:00 +03:00
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
|
|
[HttpGet("{currencyId}", Name = nameof(GetCurrencyById))]
|
|
|
|
public ActionResult GetCurrencyById(int currencyId)
|
|
|
|
{
|
|
|
|
var array = _dbContext.Countries.FirstOrDefault(x => x.Code == currencyId);
|
|
|
|
|
|
|
|
if (array != null)
|
|
|
|
{
|
|
|
|
return Ok(array);
|
|
|
|
}
|
|
|
|
|
|
|
|
return new NotFoundResult();
|
2022-08-13 06:35:36 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|