import { injectable } from "inversify"; import BaseService from "../../service"; import { IService, IResourceMapper, IFindParams } from "../../interfaces"; import { IPartnerActivity, IPartnerActivityResource, IPartnerActivityResponse, partnerActivityType } from "./"; import Mapper from "./mapper"; export interface IPartnerActivityService extends IService { findByPoiId(poiId: string, options: IFindParams): Promise; findByLodgingId(lodgingId: string, options: IFindParams): Promise; } @injectable() export default class PartnerActivityService extends BaseService implements IPartnerActivityService { resource: string = partnerActivityType; mapper: IResourceMapper = new Mapper(); public url() { return `${this.host}/partner-activities`; } public async findByPoiId(poiId: string, options: IFindParams = {}): Promise { return this.findByResourceId("pois", poiId, options); } public async findByLodgingId(lodgingId: string, options: IFindParams = {}): Promise { return this.findByResourceId("lodgings", lodgingId, options); } private async findByResourceId(collection: string, id: string, options: IFindParams): Promise { const url = `${this.host}/${collection}/${id}/partner-activities${this.qs(options)}`; const response = await this.http.fetch(url, { method: "GET", headers: this.headers(), }); return this.mapper.map(response); } }