using AutoMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using YAPContracts.AdapterContracts;
using YAPContracts.BindingModels;
using YAPContracts.BusinessLogicContracts;
using YAPContracts.DataModels;
using YAPContracts.ViewModels;
namespace YAPWebAPI.Controllers
{
[Authorize]
[Route("api/[controller]")]
[ApiController]
[Produces("application/json")]
public class PurchaseController(IPurchaseAdapter adapter) : ControllerBase
{
private readonly IPurchaseAdapter _adapter = adapter;
///
/// Получить все покупки
///
[HttpGet]
public IActionResult GetAll()
{
return _adapter.GetList().GetResponse(Request, Response);
}
///
/// Получить покупку по Id
///
[HttpGet("{id}")]
public IActionResult GetById(string id)
{
return _adapter.GetElement(id).GetResponse(Request, Response);
}
///
/// Получить покупки по пользователю за период
///
[HttpGet("byUser/{userId}")]
public IActionResult GetByUserAndPeriod(string userId, DateTime fromDate, DateTime toDate)
{
return _adapter.GetByUserAndPeriod(userId, fromDate, toDate).GetResponse(Request, Response);
}
///
/// Получить покупки за период
///
[HttpGet("byPeriod")]
public IActionResult GetByPeriod(DateTime fromDate, DateTime toDate)
{
return _adapter.GetByPeriod(fromDate, toDate).GetResponse(Request, Response);
}
///
/// Добавить покупку
///
[HttpPost]
public IActionResult Create([FromBody] PurchaseBindingModel model)
{
return _adapter.InsertPurchase(model).GetResponse(Request, Response);
}
///
/// Обновить покупку
///
[HttpPut]
public IActionResult Update([FromBody] PurchaseBindingModel model)
{
return _adapter.UpdatePurchase(model).GetResponse(Request, Response);
}
///
/// Удалить покупку
///
[HttpDelete("{id}")]
public IActionResult Delete(string id)
{
return _adapter.DeletePurchase(id).GetResponse(Request, Response);
}
}
}