using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Threading; using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers; /// <summary> /// Редактор телеметрий для админки /// </summary> [Route("api/admin/telemetry")] [ApiController] [Authorize] public class AdminTelemetryController : CrudController<TelemetryDto, ICrudRepository<TelemetryDto>> { private readonly ITelemetryService telemetryService; private readonly ITelemetryDataEditorService telemetryEditorService; public AdminTelemetryController(ICrudRepository<TelemetryDto> service, ITelemetryService telemetryService, ITelemetryDataEditorService telemetryEditorService) : base(service) { this.telemetryService = telemetryService; this.telemetryEditorService = telemetryEditorService; } /// <summary> /// Merge telemetries. No body required. /// </summary> /// <returns></returns> [HttpPost("/merge/{idFrom}/{idTo}")] [Permission] public async Task<IActionResult> MergeTelemetriesAsync(int idFrom, int idTo, CancellationToken token) { var count = await telemetryService.MergeAsync(idFrom, idTo, token) .ConfigureAwait(false); return Ok(count); } /// <summary> /// Удаление куска телеметрии по запросу /// </summary> /// <param name="request">запрос</param> /// <param name="token"></param> /// <returns></returns> [HttpDelete("part")] [Permission] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] public async Task<IActionResult> DeleteAsync([FromQuery] TelemetryPartDeleteRequest request,CancellationToken token) { var result = await telemetryEditorService.DeleteAsync(request, token); return Ok(result); } }