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 { LeadService } from './lead.service'; import { LeadSerializer } from './lead.serializer'; import { LeadConverter } from './lead.converter'; import { AuthHttp } from 'angular2-jwt'; import { LeadDeserializer } from './lead.deserializer'; import { ClientDeserializer } from '../client/client.deserializer'; import { TaskDeserializer } from '../task/task.deserializer'; import { CardDeserializer } from '../card/card.deserializer'; import { MemberDeserializer } from '../member/member.deserializer'; import { LeadMetricDeserializer } from '../lead/lead-metric.deserializer'; import { UrlParamBuilderService } from '../service/url-param-builder.service'; import { LeadCollectionConverter } from './lead.collection.converter'; import { ErrorHandlerService } from '../error/error-handler.service'; import { FallbackErrorHandler } from '../error/fallback-error-handler'; import { ApiErrorHandler } from '../error/api-error-handler'; export function LeadFactory(authHttp: AuthHttp, baseUrl: string, defaultSort: string[], defaultLimit: number): LeadService { const leadConverter: LeadConverter = new LeadConverter( new LeadDeserializer(), new ClientDeserializer(), new TaskDeserializer(), new CardDeserializer(), new MemberDeserializer() ); const leadCollectionConverter: LeadCollectionConverter = new LeadCollectionConverter(leadConverter); const serializer: LeadSerializer = new LeadSerializer(); const urlParamBuilder: UrlParamBuilderService = new UrlParamBuilderService( new UrlParamFilterService(), new UrlParamSortService(defaultSort), new UrlParamPageService(defaultLimit) ); const errorHandler: ErrorHandlerService = new ErrorHandlerService(new ApiErrorHandler(), new FallbackErrorHandler()); return new LeadService(authHttp, leadConverter, leadCollectionConverter, new LeadMetricDeserializer(), serializer, baseUrl, urlParamBuilder, errorHandler); }