using AsbCloudApp.Data;
using AsbCloudApp.Data.WellOperation;
using AsbCloudApp.Requests;
using Microsoft.AspNetCore.Mvc;
using Refit;

namespace AsbCloudWebApi.IntegrationTests.Clients;

public interface IWellOperationClient
{
   private const string BaseRoute = "/api/well/{idWell}/wellOperations";

   [Post(BaseRoute + "/{deleteBeforeInsert}")]
   Task<IApiResponse<int>> InsertRangeAsync(int idWell,
      bool deleteBeforeInsert,
      [Body] IEnumerable<WellOperationDto> dtos);

   [Put(BaseRoute)]
   Task<IApiResponse<int>> UpdateRangeAsync(int idWell, [Body] IEnumerable<WellOperationDto> dtos);

   [Get(BaseRoute)]
   Task<IApiResponse<PaginationContainer<WellOperationDto>>> GetPageOperationsAsync(int idWell, [Query] WellOperationRequestBase request);

   [Multipart]
   [Post(BaseRoute + "/parse/{idType}")]
   Task<IApiResponse<ParserResultDto<WellOperationDto>>> ParseAsync(int idWell,
      int idType,
      [AliasAs("file")] StreamPart file);

   [Get(BaseRoute + "/export")]
   Task<IApiResponse<PhysicalFileResult>> ExportAsync(int idWell, int idType);

    [Get(BaseRoute + "/template")]
    Task<IApiResponse<Stream>> GetTemplate(int idWell, int idType);

    [Get(BaseRoute + "/categories")]
    Task<IApiResponse<IEnumerable<WellOperationCategoryDto>>> GetCategories(int idWell, bool includeParents, bool includeHidden);
}