import { UrlParamFilterService } from '../service/url-param-filter.service'; import { UrlParamSortService } from '../service/url-param-sort.service'; import { UrlParamPageService } from '../service/url-param-page.service'; import { CardService } from './card.service'; import { AuthHttp } from 'angular2-jwt'; import { CardConverter } from './card.converter'; import { CardDeserializer } from './card.deserializer'; import { LeadDeserializer } from '../lead/lead.deserializer'; import { ErrorHandlerService } from '../error/error-handler.service'; import { FallbackErrorHandler } from '../error/fallback-error-handler'; import { ApiErrorHandler } from '../error/api-error-handler'; import { UrlParamBuilderService } from '../service/url-param-builder.service'; import { CardCollectionConverter } from './card.collection.converter'; import { MemberDeserializer } from '../member/member.deserializer'; export function CardFactory(authHttp: AuthHttp, baseUrl: string, defaultSort: string[], defaultLimit: number): CardService { const converter: CardCollectionConverter = new CardCollectionConverter( new CardConverter( new CardDeserializer(), new LeadDeserializer(), new MemberDeserializer() ) ); const urlParamBuilder: UrlParamBuilderService = new UrlParamBuilderService( new UrlParamFilterService(), new UrlParamSortService(defaultSort), new UrlParamPageService(defaultLimit) ); const errorHandler: ErrorHandlerService = new ErrorHandlerService(new ApiErrorHandler(), new FallbackErrorHandler()); return new CardService(authHttp, converter, baseUrl, urlParamBuilder, errorHandler); }