using AsbCloudApp.Data;
using AsbCloudApp.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
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;

        public AdminTelemetryController(ICrudRepository<TelemetryDto> service,
            ITelemetryService telemetryService)
            : base(service)
        {
            this.telemetryService = telemetryService;
        }

        /// <summary>
        /// Merge telemetries. No body required.
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("/merge/{idFrom}/{idTo}")]
        [Permission]
        public async Task<IActionResult> MergeTelemetriesAsync(int idFrom, int idTo, CancellationToken token = default)
        {
            var count = await telemetryService.MergeAsync(idFrom, idTo, token)
                .ConfigureAwait(false);
            return Ok(count);
        }
    }
}