import { EventEmitter, Injector } from '@angular/core'; import { Http } from '@angular/http'; import { Observable } from 'rxjs/Rx'; import { MyClaim } from './../models/index'; import { PermissionProvider } from './../services/permission-provider.service'; import { IDataChanged, IActionInfo, IDataStructure, IEntityDataService, IComposableFilter, IEmptyConstruct, IFieldFilter } from './../interfaces/index'; import { ErrorInCommand, DataStructureWithClaims } from './../models/index'; import { ChangesCommit, EntityWithTotalCount } from './../interfaces/index'; import { NotificationService } from "./index"; import { Message } from 'primeng/primeng'; /** * Web API Rest service * @class * @classdesc Data access layer. */ export declare class WebAPIRestService implements IEntityDataService { private injector; private permissionProvider; private notificationService; /** Data container */ data: Array; /** An EventEmitter to listen to change events from server*/ dataObserver: EventEmitter; /** An EventEmitter to listen to error events from server*/ errorObserver: EventEmitter; /** The changed stream for request action */ changesStream: Observable; /** Http */ protected _http: Http; /** The dummy instances of entity*/ protected _dummyEntityInstances: Array; /** * Find instances of DataStructure in dummy data * @param DataStructure Type of data * @returns Promise */ private getDummyWithClaim(DataStructure); private getHasReadRowPermissions(DataStructure); /** * create Entity Instance * @param DataStructure Type of data * @param entity Data entity * @returns DataStructure */ private createEntityInstance(DataStructure, model); /** * register new Changes Stream * @param newStream Observable */ registerNewChangesStream(newStream: Observable): void; /** * Get Module Name * @param DataStructure Type of data * @returns ModuleName() */ getModuleName(DataStructure: IEmptyConstruct): string; /** * Get Entity Name * @param DataStructure Type of data * @returns EntityName(); */ getEntityName(DataStructure: IEmptyConstruct): string; /** * Get Entity NameID * @param DataStructure Type of data * @returns ModuleName() + '_' + EntityName(); */ getEntityNameID(DataStructure: IEmptyConstruct): string; /** * To JSON format * @param entity IDataStructure * @returns JSON data */ entityToJSON(entity: IDataStructure): string; /** * get Entity from instances dummy * @param DataStructure Type of data * @param entity Data entity * @returns IDataStructure */ fromRawEntity(DataStructure: IEmptyConstruct, entity: IDataStructure): IDataStructure; /** * Represents a LocalStorage service. * @constructor * @param injector Injector * @param http Http */ constructor(http: Http, injector: Injector, permissionProvider: PermissionProvider, notificationService: NotificationService); userHasPermission(DataStructure: IEmptyConstruct, permissionRight: string): Promise; /** * Find instances of DataStructure * @param DataStructure Type of data * @returns instances of DataStructure */ getDummy(DataStructure: IEmptyConstruct): IDataStructure; /** * Check permission action of User * @param DataStructure Type of data * @param permissionRight Permission right * @returns Promise TRUE: Has permission; FALSE: None */ updatePermissions(permissions: MyClaim[]): void; /** * Find all entity (any type) by ID * @param ID ID of Entity */ fetchEntityWithID(id: string): void; /** * Find entity by ID * @param DataStructure Type of data * @param ID ID of Entity * @param serverReload * @returns Promise */ fetchEntity(DataStructure: IEmptyConstruct, id: string, serverReload?: boolean): Promise; /** * Create entity * @param DataStructure Type of data * @param entity Data entity * @param emitID emit event ID */ createEntity(DataStructure: IEmptyConstruct, entity: IDataStructure, emitID?: string): void; /** * Update entity * @param DataStructure Type of data * @param entity Data entity * @param emitID emit event ID */ updateEntity(DataStructure: IEmptyConstruct, entity: IDataStructure, emitID?: string): void; /** * Delete entity * @param DataStructure Type of data * @param entity Data entity */ deleteEntity(DataStructure: IEmptyConstruct, entity: IDataStructure, emitID?: string): void; /** * Find data by Filter condition array * @param DataStructure Type of data * @param filters Filter condition array * @returns Array */ getCurrentLibrary(DataStructure: IEmptyConstruct, filters?: IFieldFilter[]): Array; /** * Reload data (push entity result to data variable) * @param DataStructure Type of data * @param loadDataID ID of data * @returns load data ID */ reloadData(DataStructure: IEmptyConstruct, loadID?: string): string; /** * 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 */ loadData(DataStructure: IEmptyConstruct, filters: IFieldFilter[], predefinedFilters?: IComposableFilter[], sort?: string, top?: number, skip?: number): Promise; /** * Get Single Entity * @param DataStructure * @param ID The identifier. */ getSingleByID(DataStructure: IEmptyConstruct, ID: string): Promise; /** * Get Single Entity * @param DataStructure * @param route * @param filters */ getSingle(DataStructure: IEmptyConstruct, route: string, filters?: IFieldFilter[]): 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 */ findEntity(DataStructure: IEmptyConstruct, route: string, filters?: IFieldFilter[], top?: number, skip?: number): Promise; /** * Execute On entity * @param DataStructure IEmptyConstruct * @param actionName Action method name * @param entity Data entity * @param successMessage Success message * @param emitID Emit event ID */ executeOnEntityList(DataStructure: IEmptyConstruct, actionName: string, entity: IDataStructure[], successMessage: Message, emitID?: 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 */ executeOnEntity(DataStructure: IEmptyConstruct, actionName: string, entity: IDataStructure, successMessage: Message, emitID?: string): void; /** * invoke action * @param ActionInfo * @param data * @returns Promise */ invokeAction(ActionInfo: IActionInfo, data: any): Promise; getCurrentPrincipal(): Promise; }