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>>> GetPageOperationsPlanAsync(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);
}