using AsbCloudApp.Data;
using AsbCloudApp.Data.SAUB;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Services
{
    public interface ITelemetryService
    {
        ITimezoneService TimeZoneService { get; }
        ITelemetryTracker TelemetryTracker { get; }
        int? GetIdWellByTelemetryUid(string uid);
        int GetOrCreateTelemetryIdByUid(string uid);
        SimpleTimezoneDto GetTimezone(int idTelemetry);
        IEnumerable<TelemetryDto> GetTransmittingTelemetries();
        DateTime GetLastTelemetryDate(int idTelemetry, bool useUtc = false);
        int? GetIdTelemetryByIdWell(int idWell);
        DatesRangeDto GetDatesRange(int idTelemetry);
        Task UpdateInfoAsync(string uid, TelemetryInfoDto info, CancellationToken token);
        Task UpdateTimezoneAsync(string uid, SimpleTimezoneDto telemetryTimeZoneInfo, CancellationToken token);

        /// <summary>
        /// Слить данные телеметрии в одну
        /// </summary>
        /// <param name="from">старая (исходная)</param>
        /// <param name="to">новая</param>
        /// <returns></returns>
        Task<int> MergeAsync(int from, int to, CancellationToken token);
        void SaveRequestDate(string uid, DateTimeOffset remoteDate);
    }
}