import TravelProductServiceInterface from './TravelProductServiceInterface'; import TravelProduct from '../entity/TravelProduct'; import BaseEntityService from '../../common/services/BaseEntityService/BaseEntityService'; import TravelProductAdapterInterface from '../adapter/TravelProductAdapterInterface'; import TravelProductClientInterface from '../clients/TravelProductClientInterface'; import JourneyGroupServiceInterface from '../../JourneyGroup/services/JourneyGroupServiceInterface'; import RequestPromise from '../../common/DTO/RequestPromise'; export default class TravelProductService extends BaseEntityService implements TravelProductServiceInterface { protected client: TravelProductClientInterface; protected transformer: TravelProductAdapterInterface; journeyGroupService: JourneyGroupServiceInterface; constructor(client: TravelProductClientInterface, transformer: TravelProductAdapterInterface, journeyGroupService: JourneyGroupServiceInterface) { super(client, transformer); this.journeyGroupService = journeyGroupService; } getFullProduct(travel_product_id: string, not_get_journeys_detail: boolean): RequestPromise { const promise = this.getById(travel_product_id).promise; return new RequestPromise(promise.requestId, new Promise(async (resolve, reject) => { const product = await promise; const jg= await this.journeyGroupService.getByTravelProductId(travel_product_id).promise; let journeyGroups; if(not_get_journeys_detail) { journeyGroups = jg.data } else { journeyGroups = await Promise.all(jg.data.map(each => { return this.journeyGroupService.getFull(each.id).promise; })); } product.journey_groups = journeyGroups; resolve(product); })); } }