using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Persistence.Models; using Persistence.Repositories; namespace Persistence.API.Controllers; /// /// Работа с состояниями систем автобурения (АБ) /// [ApiController] [Authorize] [Route("api/[controller]")] public class TechMessagesController : ControllerBase { private readonly ITechMessagesRepository techMessagesRepository; public TechMessagesController(ITechMessagesRepository techMessagesRepository) { this.techMessagesRepository = techMessagesRepository; } /// /// Получить список технологических сообщений в виде страницы /// /// /// /// [HttpGet] public async Task>> GetPage([FromQuery] RequestDto request, CancellationToken token) { var result = await techMessagesRepository.GetPage(request, token); return Ok(result); } /// /// Получить статистику по системам /// /// /// /// /// [HttpGet("statistics/{autoDrillingSystem}")] public async Task> GetStatistics([FromRoute] string? autoDrillingSystem, int? importantId, CancellationToken token) { var result = await techMessagesRepository.GetStatistics(importantId, autoDrillingSystem, token); return Ok(result); } /// /// Получить список всех систем /// /// /// [HttpGet("systems")] public async Task>> GetSystems(CancellationToken token) { var result = await techMessagesRepository.GetSystems(token); return Ok(result); } /// /// Добавить новые технологические сообщения /// /// /// /// [HttpPost] public async Task> InsertRange([FromBody] IEnumerable dtos, CancellationToken token) { var result = await techMessagesRepository.InsertRange(dtos, token); return CreatedAtAction(nameof(InsertRange), result); } /// /// Получить словарь категорий /// /// [HttpGet("categories")] public ActionResult> GetImportantCategories() { var result = new Dictionary() { { 0, "System" }, { 1, "Авария" }, { 2, "Предупреждение" }, { 3, "Инфо" }, { 4, "Прочее" } }; return Ok(result); } }