131 lines
3.9 KiB
C#
131 lines
3.9 KiB
C#
using BlueWest.Data;
|
|
using BlueWest.WebApi.Tools;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using PerformanceSolution.Data;
|
|
|
|
namespace BlueWest.WebApi.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("[controller]")]
|
|
public class UserController : ControllerBase
|
|
{
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[HttpGet]
|
|
public ActionResult Get()
|
|
{
|
|
if (MemoryData.UserList != null)
|
|
{
|
|
return Ok(MemoryData.UserList);
|
|
|
|
}
|
|
|
|
return new NotFoundResult();
|
|
}
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
|
[HttpGet("{userId}", Name = nameof(GetUserById))]
|
|
public ActionResult GetUserById(int userId)
|
|
{
|
|
User user = MemoryData.GetUserById(userId);
|
|
|
|
if (user != null)
|
|
{
|
|
return Ok(user);
|
|
|
|
}
|
|
|
|
return new NotFoundResult();
|
|
}
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[HttpGet("{userId}/transactions")]
|
|
public ActionResult GetTransactions(int userId)
|
|
{
|
|
var user = MemoryData.GetUserById(userId);
|
|
var transactions = user.FinanceTransactions;
|
|
if (transactions != null)
|
|
{
|
|
return Ok(transactions);
|
|
|
|
}
|
|
return new NotFoundResult();
|
|
}
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[HttpGet("{userId}/transactions/{transactionId}")]
|
|
public ActionResult GetTransactionsById(int userId, int transactionId)
|
|
{
|
|
var user = MemoryData.GetUserById(userId);
|
|
|
|
var transactions = user?.FinanceTransactions;
|
|
|
|
FinanceTransaction? transaction = transactions?.FirstOrNull(t => t.Id == transactionId);
|
|
|
|
if (transaction != null)
|
|
{
|
|
return Ok(transaction);
|
|
}
|
|
|
|
return new NotFoundResult();
|
|
}
|
|
|
|
|
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
|
[HttpPost]
|
|
public ActionResult AddOrModifyUser(UserUpdateDto userUpdateDto)
|
|
{
|
|
var user = MemoryData.AddOrModify(userUpdateDto);
|
|
return CreatedAtRoute(nameof(GetUserById), new {userId = user.Id}, user);
|
|
}
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[HttpPut("{userId}")]
|
|
public ActionResult UpdateUser(int userId, UserUpdateDto userUpdate)
|
|
{
|
|
var result = MemoryData.UpdateUser(userId, userUpdate);
|
|
|
|
if (result != null) return Ok(result);
|
|
|
|
return BadRequest();
|
|
}
|
|
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[HttpDelete("{id}")]
|
|
public ActionResult DeleteUser(int id)
|
|
{
|
|
|
|
bool result = MemoryData.RemoveUser(id);
|
|
|
|
if (result)
|
|
{
|
|
return NoContent();
|
|
}
|
|
|
|
return new BadRequestResult();
|
|
}
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[HttpPost("{userId}/transactions")]
|
|
public ActionResult PostTransaction(int userId, FinanceTransaction financeTransaction)
|
|
{
|
|
FinanceTransaction? result = MemoryData.AddFinanceTransaction(userId, financeTransaction);
|
|
|
|
if(result != null) return Ok(result);
|
|
|
|
return new BadRequestResult();
|
|
}
|
|
|
|
|
|
}
|
|
} |