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

namespace AsbCloudApp.Services
{
    /// <summary>
    /// Сервис по работе с контактной информацией по скважине
    /// </summary>
    public interface IWellContactService
    {
        /// <summary>
        /// Полуение пользователей по ключу скважины и типу контакта
        /// </summary>
        /// <param name="wellId">ключ скважины</param>
        /// <param name="contactTypeId">тип контакта</param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<IEnumerable<CompanyWithUsersDto>> GetAsync(int wellId, int contactTypeId, CancellationToken token);

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

        /// <summary>
        /// Обновление контактов по ключу скважины, типу контакта и ключам пользователей
        /// </summary>
        /// <param name="idWell">ключ скважины</param>
        /// <param name="contactTypeId">ключ типа контакта</param>
        /// <param name="userIds">ключи пользователей</param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<int> UpdateRangeAsync(int idWell, int contactTypeId, IEnumerable<int> userIds, CancellationToken token);
    }
}