import { HttpService } from "./http.service"; import { CurrentUserService } from "./current-user.service"; import { ResponseListModel } from "../models/response-list.model"; import { IRealty } from "../intefraces/realty.interface"; import { StorageInterface } from "../intefraces/storage.interface"; import { Subscription } from "rxjs/Subscription"; export declare class RealtyService { private httpService; private currentUser; private cache; static readonly LAST_MODIFIED_INFO_KEY: string; static readonly FULL_FORM_METADATA_KEY: string; static ESB_REALTY_CHANNEL_NAME: string; static ESB_REALTY_FAVORITES_CHANGE: string; static ESB_REALTY_PUBLISHED_CHANGE: string; static ESB_REALTY_SALE_PUBLISHED_CHANGE: string; static ESB_REALTY_REMOVE: string; private realtyChannel; constructor(httpService: HttpService, currentUser: CurrentUserService, cache: StorageInterface); getAllFormMetadata(): Promise; /** * Получить метаданные для формы фильтрации объявлений * * @param actionGuid тип действия/сделки (куплю, продам, сниму и сдам) */ getFilterMetaData(sessionGeoGuid: string): Promise; /** * Создать объявление * * @param {string} actionGuid тип сделки * @param {string} entityGuid тип объекта недвижимости * @param data данные для сохранения * @returns {Promise} */ create(action: string, entity: string, data: any): Promise; /** * Обновить объявление * @param {string} actionGuid Тип сделки * @param {string} entityGuid Тип объекта недвижимости * @param {string} guid Идентификатор объявления * @param data Данные объявления * @returns {Promise} */ update(action: string, entity: string, guid: string, data: any): Promise; /** * Возвращает список объявлений * @param body Тело запроса (@todo: разработать формат для передачи фильтров и передавать эту модель) * @param query Параметры запроса * @returns {Promise>} */ filter(body: any, query?: any): Promise>; /** * Возвращает список объявлений пользователя * @param body Тело запроса (@todo: разработать формат для передачи фильтров и передавать эту модель) * @param query Параметры запроса * @returns {Promise>} */ getMyRealty(body: any, query?: any): Promise>; /** * Возвращает список объявлений добавленных текущим пользователем в избранное * @param body Тело запроса (@todo: разработать формат для передачи фильтров и передавать эту модель) * @param query Параметры запроса * @returns {Promise>} */ getFavoritesRealty(body: any, query?: any): Promise>; /** * Публикует объявление * @param actionGuid Идентификатор действия * @param entityGuid Идентификатор типа недвижимости * @param guid Идентификатор объявления */ publish(actionGuid: string, entityGuid: string, guid: string): Promise; /** * Снимает объявление с публикации * @param actionGuid Идентификатор действия * @param entityGuid Идентификатор типа недвижимости * @param guid Идентификатор объявления */ unPublish(actionGuid: string, entityGuid: string, guid: string): Promise; /** * Добавляет подписчика на публикацию/снятие с публикации объявления * @param {Function} then Функция-подписчик * @returns {Subscription} */ onPublishedChange(then: (info: { actionGuid: string; entityGuid: boolean; guid: string; state: boolean; }) => void): Subscription; onSalePublishedChange(then: (info: { actionGuid: string; entityGuid: boolean; guid: string; state: boolean; }) => void): Subscription; /** * Удаляет объявление * @param actionGuid Идентификатор действия * @param entityGuid Идентификатор типа недвижимости * @param guid Идентификатор объявления */ remove(actionGuid: string, entityGuid: string, guid: string): Promise; /** * Добавляет подписчика на удаление объявления * @param {Function} then Функция-подписчик * @returns {Subscription} */ onRemove(then: (info: { actionGuid: string; entityGuid: boolean; guid: string; }) => void): Subscription; /** * Добавляет объявление в избранное текущего пользователя * * @param {string} realtyGuid Идентификатор объявления * @returns {Promise>} */ addRealtyToFavorite(realtyGuid: string): Promise>; /** * Удалляет объявление из избранного текущего пользователя * * @param {string} realtyGuid Идентификатор объявления * @returns {Promise>} */ removeRealtyFromFavorite(realtyGuid: string): Promise>; /** * Добавляет подписчика на добавление/удаление объявления из избранного * @param {Function} then Функция-подписчик * @returns {Subscription} */ onFavoriteChange(then: (info: { guid: string; state: boolean; }) => void): Subscription; /** * Возвращает данные о указанном объявлении * @param guid Идентификатор объявления * @returns {Promise} */ load(guid: string): Promise; /** * Синхронизирует метаданные формы с бэкендом * @returns {Promise} */ synchronizeFormMetaInfo(): Promise; /** * Получение объявлений по списку идентификаторов * @param {string[]} realtyGuids * @returns {Promise} */ getRealtyByGuids(realtyGuids: string[]): Promise; private loadList(url, body, query?); /** * Сравнивает локальные метаданные и удаленные. * При обнаружении измененных, добавленных или удаленных метаданных - удаляет все записи из кеша относящиеся к этим метаданным * * @param {any} localInfo Объект с локальными метаданными, где ключ - результат конкатенации actionGuid & entityGuid, значение - timestamp последнего изменения * @param {any[]} remoteInfo Массив объектов метаинформации на сервере * @returns {Promise<[]>} */ private processFormMetaInfo(localInfo, remoteInfo); salePublish(actionGuid: string, entityGuid: string, guid: string): Promise; saleUnPublish(actionGuid: string, entityGuid: string, guid: string): Promise; cancelSaleModeration(actionGuid: string, entityGuid: string, guid: string): Promise; }