import type { SupportedCurrencies } from '@entities' import type { HttpClient } from '@services' import type { ApiError, Response } from '@types' export type HousePeriodsInput = { currency?: SupportedCurrencies destinationIds?: string[] endDate: string houseIds: string[] maxBudget?: string minBudget?: string page?: string sortBy?: string startDate: string } export type HousePeriodsResponseData = { id: string allMinimumDurationValid: boolean endAt: string currentHubspotContracts: Record | null currentSalesOptionDates: [string, string] | null currentSalesOptionOwner: string | null fullyCovered: boolean operationalCosts: null | number publicPrice: number startAt: string currency: SupportedCurrencies commissionRate: number commissionRatePublicPrice: number definitivePrices: boolean lcCommission: number ownerPriceWithoutOpCosts: string publicPriceWithoutOpCosts: number } const getHousePeriods = (http: HttpClient) => { return { query: ({ currency = 'EUR', endDate, maxBudget = '1000000', minBudget = '0', page = 'all', sortBy = 'recommended', startDate, houseIds, destinationIds = [], }: HousePeriodsInput): Promise< Response > => { const houseIdsQuery = `&${houseIds .map((num) => `house_ids[]=${num.toString()}`) .concat( ...destinationIds.map((id) => `destination_ids[]=${id.toString()}`), ) .join('&')}` return http.get( `v1/house_periods?currency=${currency}&end_at=${endDate}&max_budget=${maxBudget}&min_budget=${minBudget}&page=${page}&start_at=${startDate}&sort_by=${sortBy}${houseIdsQuery}`, ) }, } } export default getHousePeriods