import { EventEmitter } from '@angular/core'; import { Observable } from 'rxjs/Rx'; import { ErrorInCommand } from './../models/index'; import { IEmptyConstruct, IDataStructure, IFieldFilter, IComposableFilter, IActionInfo, IDataChanged } from './index'; import { ChangesCommit, EntityWithTotalCount } from './index'; import { Message } from 'primeng/primeng'; /** * Entity data service interface */ export declare abstract class IEntityDataService { data: Array; dataObserver: EventEmitter; errorObserver: EventEmitter; /** * register new Changes Stream * @param newStream Observable */ abstract registerNewChangesStream(newStream: Observable): void; /** * Get Entity NameID * @param DataStructure Type of data * @returns ModuleName() + '_' + EntityName(); */ abstract getEntityNameID(DataStructure: IEmptyConstruct): string; /** * Reload data (push entity result to data variable) * @param DataStructure Type of data * @param loadDataID ID of data * @returns load data ID */ abstract reloadData(DataStructure: IEmptyConstruct, loadDataID?: string, apiEndpoint?: string): string; /** * Find data by Filter condition array * @param DataStructure Type of data * @param filters Filter condition array */ abstract getCurrentLibrary(DataStructure: IEmptyConstruct, filters?: IFieldFilter[]): Array; /** * Find all entity (any type) by ID * @param ID ID of Entity */ abstract fetchEntityWithID(ID: string): void; /** * Find entity by ID * @param DataStructure Type of data * @param ID ID of Entity * @param serverReload */ abstract fetchEntity(DataStructure: IEmptyConstruct, ID: string, serverReload?: boolean, apiEndpoint?: string): Promise; /** * Update entity * @param DataStructure Type of data * @param entity Data entity * @param emitID emit event ID */ abstract updateEntity(DataStructure: IEmptyConstruct, entity: any, emitID?: string, apiEndpoint?: string): void; /** * Create entity * @param DataStructure Type of data * @param entity Data entity * @param emitID emit event ID */ abstract createEntity(DataStructure: IEmptyConstruct, entity: IDataStructure, emitID?: string, apiEndpoint?: string): void; /** * Delete entity * @param DataStructure Type of data * @param entity Data entity */ abstract deleteEntity(DataStructure: IEmptyConstruct, entity: IDataStructure, emitID?: string, apiEndpoint?: string): void; /** * Execute On entity * @param DataStructure IEmptyConstruct * @param actionName Action method name * @param entity Data entity * @param successMessage Success message * @param emitID Emit event ID */ abstract executeOnEntityList(DataStructure: IEmptyConstruct, actionName: string, entity: IDataStructure[], successMessage: Message, emitID?: string): void; /** * Execute method On Entity * @param DataStructure Type of data * @param actionName Action method name * @param entity Data entity * @param emitID emit event ID */ abstract executeOnEntity(DataStructure: IEmptyConstruct, actionName: string, entity: IDataStructure, successMessage: Message, emitID?: string): void; /** * Load data * @param DataStructure Type of data * @param filters Filter condition array * @param predefinedFilters * @param sort Sort column * @param top Litmit row * @param skip Number row per page * @returns Promise */ abstract loadData(DataStructure: IEmptyConstruct, filters: IFieldFilter[], predefinedFilters?: IComposableFilter[], sort?: string, top?: number, skip?: number, apiEndpoint?: string): Promise; /** * Get single by data id * @param DataStructure IEmptyConstruct * @param ID ID of Entity */ abstract getSingleByID(DataStructure: IEmptyConstruct, ID: string, apiEndpoint?: string): Promise; /** * Get single * @param DataStructure * @param route * @param filters */ abstract getSingle(DataStructure: IEmptyConstruct, route: string, filters?: IFieldFilter[], apiEndpoint?: string): Promise; /** * Get Find Entity * @param DataStructure Type of data * @param filters Filter condition array * @param predefinedFilters * @param sort Sort column * @param top Litmit row * @param skip Number row per page */ abstract findEntity(DataStructure: IEmptyConstruct, route: string, filters?: IFieldFilter[], top?: number, skip?: number): Promise; /** * Find instances of DataStructure * @param DataStructure Type of data */ abstract getDummy(DataStructure: IEmptyConstruct): IDataStructure; /** * Check permission action of User * @param DataStructure Type of data * @param permissionRight Permission right */ abstract userHasPermission(DataStructure: IEmptyConstruct, permissionRight: string): Promise; /** * invoke action * @param ActionInfo * @param data * @returns Promise */ abstract invokeAction(ActionInfo: IActionInfo, data: any, apiEndpoint?: string): Promise; abstract getCurrentPrincipal(): Promise; }