using AsbCloudApp.Data;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TimeZoneInfo = AsbCloudApp.Data.TimeZoneInfo;

namespace AsbCloudApp.Services
{
    public interface ITelemetryService
    {
        int? GetidWellByTelemetryUid(string uid);
        int GetOrCreateTemetryIdByUid(string uid);
        double GetTimezoneOffsetByTelemetryId(int idTelemetry);
        Task UpdateInfoAsync(string uid, TelemetryInfoDto info, CancellationToken token);
        Task<DateTime> FixDateToTimeZoneAsync(int idTelemetry, DateTime date,
            CancellationToken token);
        Task<DatesRangeDto> FixDatesRangeByTimeZoneAsync(int telemetryId, DatesRangeDto result,
            CancellationToken token);
        Task<TimeZoneInfo> GetTimeZoneInfoAsync(int idWell, CancellationToken token);
        Task UpdateTimeZoneAsync(string uid, TelemetryTimeZoneDto telemetryTimeZoneInfo, CancellationToken token);
        int? GetIdTelemetryByIdWell(int idWell);
        int Merge(IEnumerable<int> telemetryIds);
        IEnumerable<(string Key, int[] Ids)> GetRedundentRemoteUids();
        IEnumerable<TelemetryDto> GetTransmittingTelemetriesAsync(int idCompany);
        DateTime GetLastTelemetryDate(string telemetryUid);
        DateTime GetLastTelemetryDate(int telemetryId);
        void SaveRequestDate(string uid, DateTime remoteDate);
    }
}