using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Services
{
    /// <summary>
    /// Сервис загрузки и обработки плановой траектории из файла
    /// </summary>
    public interface IPlannedTrajectoryImportService
    {
        /// <summary>
        /// скачать шаблон для заполнения плановой траектории
        /// </summary>
        /// <returns></returns>
        Stream GetTemplateFile();
        /// <summary>
        /// Получить имя файла (исходя из названия скважины)
        /// </summary>
        /// <returns></returns>
        Task<string> GetFileNameAsync(int idWell, CancellationToken token);

        /// <summary>
        /// загрузить текущую плановую траекторию в .xlsx
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<Stream> ExportAsync(int idWell, CancellationToken token);
        /// <summary>
        /// импортировать из excel плановую траекторию
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="idUser"></param>
        /// <param name="stream"></param>
        /// <param name="token"></param>
        /// <param name="deleteBeforeImport">Очистить старые координаты перед импортом (если файл проходит валидацию)</param>
        Task<int> ImportAsync(int idWell, int idUser, Stream stream, bool deleteBeforeImport, CancellationToken token);
    }
}