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

namespace AsbCloudApp.Repositories
{
    /// <summary>
    /// Репозиторий "Дело скважины"
    /// </summary>
    public interface IWellFinalDocumentsRepository
    {
        /// <summary>
        /// Обновление всех записей по скважине
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="dtos"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<IEnumerable<WellFinalDocumentDBDto>> UpdateRangeAsync(int idWell, IEnumerable<WellFinalDocumentInputDto> dtos, CancellationToken token);

        /// <summary>
        /// Получение всех записей
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="idUser"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<WellCaseDto> GetByWellIdAsync(int idWell, int idUser, CancellationToken token);

        /// <summary>
        /// Получение списка ответственных
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<IEnumerable<UserDto>> GetAvailableUsersAsync(int idWell, CancellationToken token);

        /// <summary>
        /// Возвращаент категорию файла
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="idCategory"></param>
        /// <param name="idUser"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<WellFinalDocumentDBDto> GetCategoryAsync(int idWell, int idCategory, int idUser, CancellationToken token);
    }
}