using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Threading; using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers { [Route("api/admin/schedule")] [ApiController] [Authorize] public class AdminScheduleController : ControllerBase { private readonly IScheduleService scheduleService; public AdminScheduleController(IScheduleService service) { this.scheduleService = service; } /// /// Добавить запись графика работы /// /// Объект-запись /// /// Идентификатор добавленой записи [HttpPost] public async Task> InsertAsync([FromBody] ScheduleDto value, CancellationToken token = default) { var result = await scheduleService.InsertAsync(value, token).ConfigureAwait(false); return Ok(result); } /// /// Получить все записи графика /// /// /// Список записей графика [HttpGet("all")] public async Task> GetAllAsync(CancellationToken token = default) { var result = await scheduleService.GetAllAsync(token); return Ok(result); } /// /// Получить список записей графика для конкретной скважины /// /// Идентификатор скважины /// Начало периода /// Конец периода /// /// Список записей графика [HttpGet] public async Task> GetScheduleAsync(int idWell, DateTimeOffset dateStart, DateTimeOffset dateEnd, CancellationToken token = default) { var result = await scheduleService.GetSchedule(idWell,dateStart,dateEnd, token); return Ok(result); } /// /// Обновить график /// /// Идентификатор записи /// Элемент графика /// /// Количнство обновленных записей [HttpPut("{ScheduleId}")] public async Task UpdateAsync(int ScheduleId, ScheduleDto dto, CancellationToken token = default) { var result = await scheduleService.UpdateAsync(ScheduleId, dto, token) .ConfigureAwait(false); return Ok(result); } /// /// Удалить запись из графика /// /// Идентификатор записи /// /// [HttpDelete("{ScheduleId}")] public async Task> DeleteAsync(int ScheduleId, CancellationToken token = default) { var result = await scheduleService.DeleteAsync(ScheduleId, token) .ConfigureAwait(false); return Ok(result); } } }