using AsbCloudApp.Data;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Services
{
//TODO: refactor IFileService
///
/// Сервис доступа к файлам
///
public interface IFileService
{
///
/// Директория хранения файлов
///
string RootPath { get; }
///
/// получить url Google drive
///
///
///
///
///
///
Task GetSharedUrlAsync(int idFileInfo, int idUser, IFileShareService fileShareService, CancellationToken token);
///
/// получить url Google drive
///
///
///
///
///
///
Task GetSharedUrlAsync(FileInfoDto dto, int idUser, IFileShareService fileShareService,
CancellationToken token = default);
///
/// Сохранить файл
///
///
///
///
///
///
///
///
Task SaveAsync(int idWell, int? idUser, int idCategory, string fileFullName, Stream fileStream, CancellationToken token = default);
///
/// Получить список файлов в контейнере
///
///
///
///
///
///
///
///
///
///
///
Task> GetInfosAsync(int idWell,
int idCategory, string companyName = default, string fileName = default, DateTime begin = default, DateTime end = default,
int skip = 0, int take = 32, CancellationToken token = default);
///
/// Инфо о файле
///
///
///
///
Task GetInfoAsync(int idFile,
CancellationToken token);
///
/// Пометить файл как удаленный
///
///
///
///
Task MarkAsDeletedAsync(int idFile,
CancellationToken token = default);
///
/// Получить файлы определенной категории
///
///
///
///
///
Task> GetInfosByCategoryAsync(int idWell, int idCategory, CancellationToken token = default);
///
/// удалить файл
///
///
///
///
Task DeleteAsync(int id, CancellationToken token);
///
/// удалить файлы
///
///
///
///
Task DeleteAsync(IEnumerable ids, CancellationToken token);
///
/// получить путь для скачивания
///
///
///
string GetUrl(FileInfoDto fileInfo);
///
/// получить путь для скачивания
///
///
///
string GetUrl(int idFile);
///
/// получить путь для скачивания
///
///
///
///
///
///
string GetUrl(int idWell, int idCategory, int idFile, string dotExtention);
///
/// добавить метку на файл
///
///
///
///
///
Task CreateFileMarkAsync(FileMarkDto fileMarkDto, int idUser, CancellationToken token);
///
/// пометить метку файла как удаленную
///
///
///
///
Task MarkFileMarkAsDeletedAsync(int idMark, CancellationToken token);
///
/// переместить файл
///
///
///
///
///
///
///
///
Task MoveAsync(int idWell, int? idUser, int idCategory, string destinationFileName, string srcFileFullName, CancellationToken token = default);
///
/// получить инфо о файле по метке
///
///
///
///
Task GetByMarkId(int idMark, CancellationToken token);
///
/// пометить метки файлов как удаленные
///
///
///
///
Task MarkFileMarkAsDeletedAsync(IEnumerable idsMarks, CancellationToken token);
}
}