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); } } }