import type { AutomaticOffer, Destination, House, HouseOffboardedReason, Link, LocalizedString, Photo, } from '@entities' import type { HttpClient } from '@services' import type { ApiError, Response } from '@types' export type ModifyHouseInput = { houseId: string formData?: FormData house?: { additional_address?: string address?: string audit_comment?: string availabilities_updated_at?: string bathrooms?: number bedrooms?: number brand_friendly?: boolean capacity?: number capacity_adults?: number comment?: string concierge_service_offer?: 'essential' description?: LocalizedString destination_id?: number display_availabilities?: boolean domain_surface?: number drive_link?: string commission_rate?: number commission_rate_b2b2c?: number event_maximum_number_of_people_allowed?: number event_type_ids?: string[] included_service_ids?: string[] exclusivity?: boolean exclusivity_type?: number figaro?: boolean flexible_cancelation?: boolean flexible_cancelation_type?: number floor?: number gpslatitude?: string gpslongitude?: string house_architectural_style_id?: number house_style_id?: number inside_parking?: boolean inside_parking_places?: number is_pinned_house?: boolean is_last_minute?: boolean name?: string lead_text?: LocalizedString licence_number?: string live_in_staff?: boolean live_in_staff_bedrooms?: number live_in_staff_comment?: string old_name?: string online_reservation?: boolean outside_parking_places?: number outside_parking?: boolean owner_link?: string platform_description?: LocalizedString platform_reference_id?: number prices_updated_at?: string seasonal_exclusivity_end_at?: string seasonal_exclusivity_start_at?: string suitable_for_events_comment?: string suitable_for_events?: boolean surface?: number surrounding?: LocalizedString state?: 'published' state_change_reason?: HouseOffboardedReason theme_ids?: number[] vat_recovery?: boolean } } export type ModifyHouseIncluded = [AutomaticOffer, Destination, Link, Photo] const modifyHouse = (http: HttpClient) => ({ query: ( input: ModifyHouseInput, ): Promise> => { return input.formData ? http.put(`v3/admin/houses/${input.houseId}`, input.formData, { headers: { 'Content-Type': 'multipart/form-data' }, }) : http.put(`v3/admin/houses/${input.houseId}`, { house: input.house, }) }, }) export default modifyHouse