using BankContracts.AdapterContracts;
using BankContracts.BindingModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace BankWebApi.Controllers;
[Authorize]
[Route("api/[controller]/[action]")]
[ApiController]
[Produces("application/json")]
public class PeriodController(IPeriodAdapter adapter) : ControllerBase
{
private readonly IPeriodAdapter _adapter = adapter;
///
/// получение всех записей сроков
///
/// список сроков
[HttpGet]
public IActionResult GetAllRecords()
{
return _adapter.GetList().GetResponse(Request, Response);
}
///
/// получние записи о сроке по данным
///
/// уникальный идентификатор или другое поле
/// запись срока
[HttpGet("{data}")]
public IActionResult GetRecord(string data)
{
return _adapter.GetElement(data).GetResponse(Request, Response);
}
///
/// получение записей сроков по уникальному идентификатору кладовщика
///
/// уникальный идентификатор кладовщика
/// список сроков
[HttpGet("{data}")]
public IActionResult GetRecordByStorekeeper(string data)
{
return _adapter.GetListByStorekeeper(data).GetResponse(Request, Response);
}
///
/// получение записей сроков по дате начала
///
/// дата начала
/// список сроков
[HttpGet("{data}")]
public IActionResult GetRecordByStartTime(DateTime data)
{
return _adapter.GetListByStartTime(data).GetResponse(Request, Response);
}
///
/// получение записей сроков по дате конца
///
/// дата конца
/// список сроков
[HttpGet("{data}")]
public IActionResult GetRecordByEndTime(DateTime data)
{
return _adapter.GetListByEndTime(data).GetResponse(Request, Response);
}
///
/// создание записи срока
///
/// модель от пользователя
///
[HttpPost]
public IActionResult Register([FromBody] PeriodBindingModel model)
{
return _adapter.RegisterPeriod(model).GetResponse(Request, Response);
}
///
/// изменение записи срока
///
/// новая модель
///
[HttpPut]
public IActionResult ChangeInfo([FromBody] PeriodBindingModel model)
{
return _adapter.ChangePeriodInfo(model).GetResponse(Request, Response);
}
}