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 { TaskService } from './task.service'; import { AuthHttp } from 'angular2-jwt'; import { TaskConverter } from './task.converter'; import { TaskSerializer } from './task.serializer'; import { TaskDeserializer } from './task.deserializer'; import { LeadDeserializer } from '../lead/lead.deserializer'; import { UrlParamBuilderService } from '../service/url-param-builder.service'; import { TaskCollectionConverter } from './task.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 TaskFactory(authHttp: AuthHttp, baseUrl: string, defaultSort: string[], defaultLimit: number): TaskService { const taskConverter: TaskConverter = new TaskConverter(new TaskDeserializer(), new LeadDeserializer()); const collectionConverter: TaskCollectionConverter = new TaskCollectionConverter(taskConverter); const serializer: TaskSerializer = new TaskSerializer(); const urlParamBuilder: UrlParamBuilderService = new UrlParamBuilderService( new UrlParamFilterService(), new UrlParamSortService(defaultSort), new UrlParamPageService(defaultLimit) ); const errorHandler: ErrorHandlerService = new ErrorHandlerService(new ApiErrorHandler(), new FallbackErrorHandler()); return new TaskService(authHttp, taskConverter, collectionConverter, serializer, baseUrl, urlParamBuilder, errorHandler); }