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

namespace AsbCloudApp.Services
{
    public interface IDrillParamsService : ICrudService<DrillParamsDto>
    {
        Task<DrillParamsDto> GetDefaultDrillParamsAsync(int idWell, double startDepth, 
            double endDepth, CancellationToken token = default);

        Task<IEnumerable<DrillParamsDto>> GetAllAsync(int idWell,
            CancellationToken token = default);

        Task<IEnumerable<DrillParamsDto>> GetCompositeAllAsync(int idWell,
            CancellationToken token = default);

        Task<int> InsertAsync(int idWell, DrillParamsDto dto,
            CancellationToken token = default);
        
        Task<int> InsertRangeAsync(int idWell, IEnumerable<DrillParamsDto> dtos,
            CancellationToken token = default);

        Task<int> UpdateAsync(int idWell, int dtoId, DrillParamsDto dto,
            CancellationToken token = default);
        Task<int> SaveAsync(int idWell, IEnumerable<DrillParamsDto> dtos, CancellationToken token = default);
    }
}