kipon-xrmservice
Version:
Dynamics 365 CE web api wrapper for angular, making life easier when building angular based web resources
1 lines • 295 kB
Source Map (JSON)
{"version":3,"file":"kipon-xrmservice.mjs","sources":["../../../projects/kipon-xrmservice/src/lib/fetchxml.ts","../../../projects/kipon-xrmservice/src/lib/xrmconfig.service.ts","../../../projects/kipon-xrmservice/src/lib/xrmform.service.ts","../../../projects/kipon-xrmservice/src/lib/xrm.service.ts","../../../projects/kipon-xrmservice/src/lib/auth.service.ts","../../../projects/kipon-xrmservice/src/lib/xrmstate.service.ts","../../../projects/kipon-xrmservice/src/lib/xrm.interceptor.ts","../../../projects/kipon-xrmservice/src/lib/xrmcontext.service.ts","../../../projects/kipon-xrmservice/src/lib/metadata.service.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmservice.module.ts","../../../projects/kipon-xrmservice/src/lib/xrmsecurity.service.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmsecurity.module.ts","../../../projects/kipon-xrmservice/src/lib/xrmannotation.service.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmannotation.module.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmmetadata.module.ts","../../../projects/kipon-xrmservice/src/public-api.ts","../../../projects/kipon-xrmservice/src/kipon-xrmservice.ts"],"sourcesContent":["import { Entity, Condition } from \"./xrmcontext.service\";\r\n\r\n\r\nexport class FetchEntity {\r\n name: string;\r\n entityPrototype: Entity;\r\n attributes: string[];\r\n condition: Condition;\r\n linkedentities: Link[];\r\n parent: FetchEntity;\r\n\r\n link(prototype: Entity, property: string, condition: Condition): FetchEntity;\r\n link(prototype: Entity, property: string, condition: Condition, attributes: string[]): FetchEntity;\r\n link(prototype: Entity, property: string, condition: Condition, attributes: string[] = null): FetchEntity {\r\n var res = new FetchEntity();\r\n res.entityPrototype = prototype;\r\n res.name = prototype._logicalName;\r\n res.condition = condition;\r\n res.attributes = attributes\r\n res.parent = res;\r\n\r\n if (this.linkedentities == null) {\r\n this.linkedentities = [];\r\n }\r\n var next = new Link();\r\n next.entity = res;\r\n next.to = property;\r\n next.alias = property;\r\n this.linkedentities.push(next);\r\n return res;\r\n }\r\n\r\n innerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition): FetchEntity;\r\n innerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[]): FetchEntity;\r\n innerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[] = null): FetchEntity {\r\n var res = new FetchEntity();\r\n res.entityPrototype = prototype;\r\n res.name = prototype._logicalName;\r\n res.condition = condition;\r\n res.attributes = attributes\r\n res.parent = res;\r\n\r\n if (this.linkedentities == null) {\r\n this.linkedentities = [];\r\n }\r\n var next = new Link();\r\n next.entity = res;\r\n next.to = property;\r\n next.alias = alias;\r\n next.from = from;\r\n next.type = \"inner\";\r\n\r\n this.linkedentities.push(next);\r\n return res;\r\n }\r\n\r\n outerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition): FetchEntity;\r\n outerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[]): FetchEntity;\r\n outerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[] = null): FetchEntity {\r\n var res = new FetchEntity();\r\n res.entityPrototype = prototype;\r\n res.name = prototype._logicalName;\r\n res.condition = condition;\r\n res.attributes = attributes\r\n res.parent = res;\r\n\r\n if (this.linkedentities == null) {\r\n this.linkedentities = [];\r\n }\r\n var next = new Link();\r\n next.entity = res;\r\n next.to = property;\r\n next.alias = alias;\r\n next.from = from;\r\n next.type = \"outer\";\r\n\r\n this.linkedentities.push(next);\r\n return res;\r\n }\r\n\r\n aliasWithAttributes(): string[] {\r\n var result:string[] = [];\r\n this.resolveAlias(this.linkedentities, result);\r\n return result;\r\n }\r\n\r\n private resolveAlias(links: Link[], result: string[]): void {\r\n if (links != null && links.length > 0) {\r\n links.forEach(l => {\r\n if (l.entity.attributes != null && l.entity.attributes.length > 0) {\r\n result.push(l.alias);\r\n }\r\n this.resolveAlias(l.entity.linkedentities, result);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class Link {\r\n from: string;\r\n alias: string;\r\n type: string;\r\n to: string;\r\n\r\n entity: FetchEntity;\r\n\r\n toFetchXml(populateAttrib: boolean): string {\r\n var result: string = \"\";\r\n\r\n var fromString = \"\";\r\n if (this.from != null) {\r\n fromString = \" alias='\" + this.alias + \"' from='\" + this.from + \"' link-type='\" + this.type + \"'\";\r\n }\r\n\r\n if (this.from == null && this.alias != null && this.alias != '') {\r\n fromString = \" alias='\" + this.alias + \"'\";\r\n }\r\n\r\n result += \"<link-entity name='\" + this.entity.name + \"' to='\" + this.to + \"'\" + fromString + \">\";\r\n\r\n if (populateAttrib) {\r\n if (this.entity.attributes != null && this.entity.attributes.length > 0) {\r\n this.entity.attributes.forEach(a => {\r\n result += \"<attribute name='\" + a + \"'/>\"\r\n });\r\n }\r\n }\r\n\r\n if (this.entity.condition != null) {\r\n result += this.entity.condition.toFetchXml();\r\n }\r\n\r\n if (this.entity.linkedentities != null && this.entity.linkedentities.length > 0) {\r\n this.entity.linkedentities.forEach(l => {\r\n result += l.toFetchXml(populateAttrib);\r\n });\r\n }\r\n result += \"</link-entity>\";\r\n return result;\r\n }\r\n}\r\n\r\nexport class Fetchsort {\r\n attribute: string;\r\n descending: boolean;\r\n\r\n toFetchXml(): string {\r\n if (this.descending) {\r\n return \"<order attribute='\" + this.attribute + \"' descending='true' />\";\r\n }\r\n return \"<order attribute='\" + this.attribute + \"' />\";\r\n }\r\n}\r\n\r\nexport class Fetchxml {\r\n private root: FetchEntity;\r\n private keyname: string;\r\n\r\n count: number;\r\n page: number;\r\n distinct: boolean;\r\n private sorts: Fetchsort[];\r\n\r\n constructor(prototype: Entity, condition: Condition) {\r\n this.root = new FetchEntity();\r\n this.root.entityPrototype = prototype;\r\n this.keyname = prototype._keyName;\r\n this.root.name = prototype._logicalName;\r\n this.root.condition = condition;\r\n this.root.attributes = prototype.columns(false);\r\n }\r\n\r\n entity(): FetchEntity {\r\n return this.root;\r\n }\r\n\r\n sort(attribname: string): void;\r\n sort(attribname: string, descending: boolean): void;\r\n sort(attribname: string, descending: boolean = false): void {\r\n if (this.sorts == null) {\r\n this.sorts = [] as Fetchsort[];\r\n }\r\n let nextsort = new Fetchsort();\r\n nextsort.attribute = attribname;\r\n nextsort.descending = descending;\r\n this.sorts.push(nextsort);\r\n }\r\n\r\n\r\n toCountFetchXml(): string {\r\n let result: string = \"\";\r\n\r\n var distinct = \"\";\r\n if (this.distinct != null) {\r\n distinct = \" distinct='\" + this.distinct + \"'\"\r\n }\r\n\r\n var aggr = \"count\";\r\n\r\n var dist = '';\r\n if (this.distinct) {\r\n dist = \" distinct='true'\";\r\n aggr = \"countcolumn\"\r\n }\r\n\r\n\r\n result += \"<fetch mapping='logical'\" + distinct + \" aggregate='true'>\"\r\n result += \"<entity name='\" + this.root.name + \"'>\";\r\n result += \"<attribute name='\" + this.keyname + \"' aggregate='\"+aggr+\"' alias='count'\"+dist+\" />\";\r\n\r\n if (this.root.condition != null) {\r\n result += this.root.condition.toFetchXml();\r\n }\r\n\r\n if (this.root.linkedentities != null && this.root.linkedentities.length > 0) {\r\n this.root.linkedentities.forEach(l => {\r\n result += l.toFetchXml(false);\r\n })\r\n }\r\n\r\n result += \"</entity>\";\r\n result += \"</fetch>\";\r\n\r\n return result;\r\n }\r\n\r\n toFetchXml(): string;\r\n toFetchXml(pageCoocie: string, forPage: number): string;\r\n toFetchXml(pageCoocie: string = null, forPage: number = null): string {\r\n let result: string = \"\";\r\n\r\n var page = \"\";\r\n if (this.count != null) {\r\n if (this.page == null) {\r\n this.page = 1;\r\n }\r\n\r\n if (forPage == null) {\r\n forPage = this.page;\r\n }\r\n\r\n page = \" count='\" + this.count + \"' page='\" + forPage + \"'\";\r\n }\r\n\r\n if (pageCoocie != null) {\r\n page += \" paging-cookie='\" + pageCoocie + \"'\";\r\n } else {\r\n page += \" paging-cookie=''\";\r\n }\r\n\r\n var distinct = \"\";\r\n if (this.distinct != null) {\r\n distinct = \" distinct='\" + this.distinct + \"'\"\r\n }\r\n\r\n result += \"<fetch mapping='logical'\" + page + distinct + \">\"\r\n result += \"<entity name='\" + this.root.name + \"'>\";\r\n result += \"<attribute name='\" + this.keyname + \"' />\"\r\n this.root.attributes.forEach(a => {\r\n result += \"<attribute name='\"+a+\"'/>\"\r\n });\r\n\r\n if (this.root.condition != null) {\r\n result += this.root.condition.toFetchXml();\r\n }\r\n\r\n if (this.root.linkedentities != null && this.root.linkedentities.length > 0) {\r\n this.root.linkedentities.forEach(l => {\r\n result += l.toFetchXml(true);\r\n })\r\n }\r\n\r\n if (this.sorts != null && this.sorts.length > 0) {\r\n this.sorts.forEach(s => {\r\n result += s.toFetchXml();\r\n });\r\n }\r\n\r\n result += \"</entity>\";\r\n result += \"</fetch>\"\r\n return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { AuthConfig } from './auth.service';\r\n\r\n@Injectable()\r\nexport class XrmConfigService {\r\n private appConfig: AuthConfig;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n loadAppConfig();\r\n loadAppConfig(url: string);\r\n loadAppConfig(url: string = null) {\r\n if (url == null) {\r\n url = '/assets/xrmConfig.json';\r\n }\r\n return this.http.get<AuthConfig>(url)\r\n .toPromise()\r\n .then(data => {\r\n this.appConfig = data;\r\n }).catch(err => {\r\n console.log('unable to load configuration /assets/xrmConfig.json');\r\n console.log(err);\r\n }\r\n );\r\n }\r\n\r\n getConfig(): AuthConfig {\r\n return this.appConfig;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst KiponXrmLOCAL_getFormType = \"KiponXrmServiceLOCAL_getFormType\";\r\nconst KiponXrmLOCAL_formentityr = \"KiponXrmServiceLOCAL_formentityr\";\r\nconst KiponXrmLOCAL_context = \"KiponXrmServiceLOCAL_context\";\r\n\r\nexport interface XrmContext {\r\n getClientUrl(): string;\r\n getQueryStringParameters(): any;\r\n getVersion(): string;\r\n getUserName(): string;\r\n getUserId(): string;\r\n $devClientUrl(): string;\r\n}\r\n\r\n\r\nexport class XrmFormKey {\r\n id: string;\r\n type: string;\r\n}\r\n\r\nexport class XrmContextInstance implements XrmContext {\r\n private clientUrl: string;\r\n private queryStringParameters: any;\r\n private version: string;\r\n private userName: string;\r\n private userId: string;\r\n private apiurl: string = '/api/data/v9.0/';\r\n\r\n constructor(ctx: XrmContext) {\r\n this.clientUrl = ctx.getClientUrl();\r\n this.queryStringParameters = ctx.getQueryStringParameters();\r\n this.version = ctx.getVersion();\r\n this.userName = ctx.getUserName();\r\n this.userId = ctx.getUserId();\r\n } \r\n\r\n getClientUrl(): string {\r\n return this.clientUrl;\r\n }\r\n\r\n getQueryStringParameters(): any {\r\n return this.queryStringParameters;\r\n }\r\n\r\n getVersion(): string {\r\n return this.version;\r\n }\r\n\r\n getUserName(): string {\r\n return this.userName;\r\n }\r\n\r\n getUserId(): string {\r\n return this.userId;\r\n }\r\n $devClientUrl(): string {\r\n return this.clientUrl + this.apiurl;;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class XrmFormService {\r\n constructor() { }\r\n\r\n getContext(): XrmContext {\r\n if (window[KiponXrmLOCAL_context]) {\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n\r\n if (typeof window[\"GetGlobalContext\"] != \"undefined\") {\r\n window[KiponXrmLOCAL_context] = new XrmContextInstance(window[\"GetGlobalContext\"]());\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n\r\n if (window.parent && window.parent[KiponXrmLOCAL_context]) {\r\n window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent[KiponXrmLOCAL_context]);\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n\r\n if (window.opener && window.opener[KiponXrmLOCAL_context]) {\r\n window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener[KiponXrmLOCAL_context]);\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n\r\n if (window[\"Xrm\"] && window[\"Xrm\"][\"Page\"] && window[\"Xrm\"][\"Page\"][\"context\"]) {\r\n window[KiponXrmLOCAL_context] = new XrmContextInstance(window[\"Xrm\"][\"Page\"][\"context\"]);\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n\r\n if (window.parent && window.parent[\"Xrm\"] && window.parent[\"Xrm\"][\"Page\"] && window.parent[\"Xrm\"][\"Page\"][\"context\"]) {\r\n window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent[\"Xrm\"][\"Page\"][\"context\"]);\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n\r\n if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Page\"] && window.opener[\"Xrm\"][\"Page\"][\"context\"]) {\r\n window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener[\"Xrm\"][\"Page\"][\"context\"]);\r\n return window[KiponXrmLOCAL_context];\r\n }\r\n return null;\r\n }\r\n\r\n // \"Xrm\", \"Page\", \"ui\", \"getFormType\"\r\n\r\n\r\n getFormType();\r\n getFormType(clear: boolean);\r\n getFormType(clear: boolean = false): number {\r\n\r\n if (!clear && window[KiponXrmLOCAL_getFormType]) delete window[KiponXrmLOCAL_getFormType];\r\n if (window[KiponXrmLOCAL_getFormType]) {\r\n return window[KiponXrmLOCAL_getFormType];\r\n }\r\n\r\n if (!clear && window.parent && window.parent[KiponXrmLOCAL_getFormType]) {\r\n window[KiponXrmLOCAL_getFormType] = window.parent[KiponXrmLOCAL_getFormType];\r\n return window[KiponXrmLOCAL_getFormType];\r\n }\r\n\r\n if (!clear && window.opener && window.opener[KiponXrmLOCAL_getFormType]) {\r\n window[KiponXrmLOCAL_getFormType] = window.opener[KiponXrmLOCAL_getFormType];\r\n return window[KiponXrmLOCAL_getFormType];\r\n }\r\n\r\n if (window[\"Xrm\"] && window[\"Xrm\"][\"Page\"] && window[\"Xrm\"][\"Page\"][\"ui\"] && window[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n window[KiponXrmLOCAL_getFormType] = window[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n return window[KiponXrmLOCAL_getFormType];\r\n }\r\n\r\n if (window.parent && window.parent[\"Xrm\"] && window.parent[\"Xrm\"][\"Page\"] && window.parent[\"Xrm\"][\"Page\"][\"ui\"] && window.parent[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n window[KiponXrmLOCAL_getFormType] = window.parent[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n return window[KiponXrmLOCAL_getFormType];\r\n }\r\n\r\n if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Page\"] && window.opener[\"Xrm\"][\"Page\"][\"ui\"] && window.opener[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n window[KiponXrmLOCAL_getFormType] = window.opener[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n return window[KiponXrmLOCAL_getFormType];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // \"Xrm\", \"Page\", \"data\", \"entity\"\r\n getFormKey(id: string, type: string): XrmFormKey;\r\n getFormKey(id: string, type: string, clear: boolean): XrmFormKey;\r\n getFormKey(id: string, type: string, clear: boolean = false): XrmFormKey {\r\n if (typeof id != 'undefined' && id != null && id != '' && typeof type != 'undefined' && type != null && type != '') {\r\n let result = new XrmFormKey();\r\n result.id = id;\r\n result.type = type;\r\n window[KiponXrmLOCAL_formentityr] = result;\r\n return result;\r\n }\r\n\r\n if (clear && window[KiponXrmLOCAL_formentityr]) delete window[KiponXrmLOCAL_formentityr];\r\n if (window[KiponXrmLOCAL_formentityr]) {\r\n return window[KiponXrmLOCAL_formentityr];\r\n }\r\n\r\n\r\n if (!clear && window.parent && window.parent[KiponXrmLOCAL_formentityr]) {\r\n window[KiponXrmLOCAL_formentityr] = window.parent[KiponXrmLOCAL_formentityr];\r\n return window[KiponXrmLOCAL_formentityr];\r\n }\r\n\r\n if (!clear && window.opener && window.opener[KiponXrmLOCAL_formentityr]) {\r\n window[KiponXrmLOCAL_formentityr] = window.opener[KiponXrmLOCAL_formentityr];\r\n return window[KiponXrmLOCAL_formentityr];\r\n }\r\n\r\n if (window[\"Xrm\"] && window[\"Xrm\"][\"Page\"] && window[\"Xrm\"][\"Page\"][\"data\"] && window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n var result = new XrmFormKey();\r\n result.id = window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n result.type = window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n window[KiponXrmLOCAL_formentityr] = result;\r\n return window[KiponXrmLOCAL_formentityr];\r\n }\r\n\r\n if (window.parent && window.parent[\"Xrm\"] && window.parent[\"Xrm\"][\"Page\"] && window.parent[\"Xrm\"][\"Page\"][\"data\"] && window.parent[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n var result = new XrmFormKey();\r\n result.id = window.parent[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n result.type = window.parent[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n window[KiponXrmLOCAL_formentityr] = result;\r\n return window[KiponXrmLOCAL_formentityr];\r\n }\r\n\r\n if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Page\"] && window.opener[\"Xrm\"][\"Page\"][\"data\"] && window.opener[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n var result = new XrmFormKey();\r\n result.id = window.opener[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n result.type = window.opener[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n\r\n window[KiponXrmLOCAL_formentityr] = result;\r\n return window[KiponXrmLOCAL_formentityr];\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\n\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { XrmConfigService } from './xrmconfig.service';\r\nimport { XrmFormService, XrmFormKey, XrmContext } from './xrmform.service';\r\n\r\nexport class XrmEntityKey {\r\n id: string;\r\n entityType: string;\r\n}\r\n\r\nexport interface XrmQueryResult<T> {\r\n pages: string[];\r\n pageIndex: number;\r\n top: number;\r\n nextLink: string;\r\n context: string;\r\n count: number;\r\n value: T[];\r\n prev(): Observable<XrmQueryResult<T>>;\r\n next(): Observable<XrmQueryResult<T>>;\r\n}\r\n\r\n\r\nexport class Expand {\r\n name: string;\r\n select: string;\r\n filter: string;\r\n additional: Expand[];\r\n\r\n toExpandString(): string {\r\n let _ex = this.name;\r\n if (this.select != null || this.filter != null) {\r\n _ex += '(';\r\n }\r\n let semi = '';\r\n if (this.select != null) {\r\n _ex += '$select=' + this.select;\r\n semi = ';'\r\n }\r\n\r\n if (this.filter != null) {\r\n _ex += semi + '$filter=' + this.filter;\r\n }\r\n\r\n if (this.select != null || this.filter != null) {\r\n _ex += ')';\r\n }\r\n return _ex;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class XrmService {\r\n private defaultApiUrl: string = \"/api/data/v9.0/\";\r\n private contextFallback: XrmContext = null;\r\n apiUrl: string = '/api/data/v9.0/';\r\n apiVersion: string = 'v9.0';\r\n debug: boolean = false;\r\n token: string = null;\r\n forceHttps: boolean = false;\r\n private keyTries: number = 0;\r\n\r\n constructor(private http: HttpClient, private injector: Injector, private xrmformService: XrmFormService) {\r\n }\r\n\r\n setVersion(v: string): void {\r\n this.apiUrl = this.defaultApiUrl.replace(\"9.0\", v);\r\n }\r\n\r\n\r\n getContext(): XrmContext {\r\n if (this.contextFallback != null) {\r\n return this.contextFallback;\r\n }\r\n\r\n var x: XrmContext = this.xrmformService.getContext();\r\n\r\n if (x != null) {\r\n if (typeof x.getVersion == 'undefined') {\r\n x.getVersion = (): string => \"9.0.0.0\"\r\n }\r\n\r\n if (typeof x.$devClientUrl == 'undefined') {\r\n x.$devClientUrl = () => { return this.getContext().getClientUrl() + this.apiUrl };\r\n this.contextFallback = x;\r\n this.initializeVersion(this.contextFallback.getVersion());\r\n }\r\n return x;\r\n }\r\n\r\n this.log('using fake context');\r\n let baseUrl = \"http://localhost:4200\";\r\n let version = 'v9.0';\r\n\r\n var comesfrom = window.location.href.toLowerCase();\r\n if (comesfrom.indexOf(\"webresources\") >= 0) {\r\n var domain = window.location.href.split('/')[2];\r\n var proto = comesfrom.startsWith(\"https://\") ? \"https://\" : \"http://\";\r\n\r\n // to-do, find a better way to render multi org sub url from the url. (for now - never needed on online, therefore blank for https, but might be needed for onpre running https ... )\r\n var sub = comesfrom.startsWith(\"https://\") ? \"\" : \"/\" + window.location.href.split('/')[3];\r\n baseUrl = proto + domain + sub;\r\n }\r\n\r\n try {\r\n var configService = this.injector.get(XrmConfigService) as XrmConfigService;\r\n if (configService != null) {\r\n let config = configService.getConfig();\r\n if (config != null && config.endpoints != null && config.endpoints.orgUri != null && config.endpoints.orgUri != '') {\r\n baseUrl = config.endpoints.orgUri;\r\n }\r\n if (config != null && config.version != null && config.version != '') {\r\n version = config.version;\r\n }\r\n }\r\n } catch (err) {\r\n // no worry, XrmConfigService is optional\r\n }\r\n\r\n this.contextFallback = {\r\n getClientUrl(): string {\r\n return baseUrl;\r\n },\r\n getQueryStringParameters(): any {\r\n let search = window.location.search;\r\n let hashes = search.slice(search.indexOf('?') + 1).split('&');\r\n let params = {};\r\n hashes.map(hash => {\r\n let [key, val] = hash.split('=')\r\n params[key] = decodeURIComponent(val)\r\n })\r\n return params;\r\n },\r\n getVersion(): string {\r\n return version.substring(1) + '.0.0';\r\n },\r\n getUserId(): string {\r\n return this[\"userid\"];\r\n },\r\n getUserName(): string {\r\n return this[\"username\"];\r\n },\r\n $devClientUrl(): string {\r\n return this['$clienturl'];\r\n }\r\n };\r\n\r\n var headers = this.getDefaultHeader();\r\n\r\n this.http.get(this.forceHTTPS(baseUrl) + \"/api/data/\" + version + \"/WhoAmI()\", { headers: headers }).subscribe(r => {\r\n this.log(r);\r\n let url = r['@odata.context'] as string;\r\n\r\n let firstpart = url.split('/api/data/')[0];\r\n let version = url.split('/api/data/')[1].split('/')[0];\r\n\r\n this.contextFallback[\"$clienturl\"] = firstpart + '/api/data/' + version + '/';\r\n\r\n this.contextFallback[\"userid\"] = r[\"UserId\"];\r\n this.contextFallback[\"username\"] = \"Dev. fallback from whoami\";\r\n this.initializeVersion(this.contextFallback.getVersion());\r\n });\r\n\r\n var x = this.contextFallback;\r\n\r\n return this.contextFallback;\r\n }\r\n\r\n getCurrentUserId(): Observable<string> {\r\n var ctx = this.getContext();\r\n if (ctx.getUserId() == null || ctx.getUserId() == '') {\r\n\r\n var headers = this.getDefaultHeader();\r\n\r\n var url = this.forceHTTPS(ctx.getClientUrl()) + this.apiUrl + \"/WhoAmI()\";\r\n this.log(url);\r\n\r\n return this.http.get(url, { headers: headers }).pipe(map(r => { return r[\"UserId\"] }));\r\n } else {\r\n this.log('get user from normal crm context');\r\n this.log('should result in ' + ctx.getUserId());\r\n return new Observable<string>(obs => {\r\n setTimeout(() => obs.next(ctx.getUserId()), 100);\r\n });\r\n }\r\n }\r\n\r\n getCurrentKey(): Observable<XrmEntityKey>;\r\n getCurrentKey(repeatForCreateForm: boolean): Observable<XrmEntityKey>;\r\n getCurrentKey(repeatForCreateForm: boolean = false): Observable<XrmEntityKey> {\r\n // First we try to find id and type in the url, this allow forcing a specific entity, directly from standard url parameters\r\n let params = this.getQueryStringParameters();\r\n let result = new XrmEntityKey();\r\n\r\n let id = params[\"id\"];\r\n let type = params[\"typename\"];\r\n\r\n\r\n if (id == null || id == '') {\r\n params = this.getContext().getQueryStringParameters();\r\n id = params[\"id\"];\r\n type = params[\"typename\"];\r\n }\r\n\r\n if (this.xrmformService.getFormType() == 1 && repeatForCreateForm) {\r\n var obs = new Observable<XrmEntityKey>(sub => {\r\n this.tryGetKey(sub);\r\n });\r\n return obs;\r\n }\r\n\r\n\r\n let key: XrmFormKey = this.xrmformService.getFormKey(id, type);\r\n if (key != null && key.id != null) {\r\n result.id = this.toGuid(key.id);\r\n result.entityType = key.type;\r\n return new Observable(obs => obs.next(result));\r\n }\r\n\r\n if (this.xrmformService.getFormType() == 2) {\r\n key = this.xrmformService.getFormKey(id, type);\r\n if (key != null) {\r\n result.id = this.toGuid(key.id);\r\n result.entityType = key.type;\r\n return new Observable(obs => obs.next(result));\r\n } else {\r\n return new Observable(obs => {\r\n var iv = setInterval(() => {\r\n let key = this.xrmformService.getFormKey(id, type);\r\n if (key != null) {\r\n clearInterval(iv);\r\n result.id = this.toGuid(key.id);\r\n result.entityType = key.type;\r\n obs.next(result);\r\n }\r\n }, 800);\r\n });\r\n }\r\n } else {\r\n // it was not an entity form, or the entity form was not in edit mode.\r\n result.id = this.toGuid(result.id);\r\n return new Observable<XrmEntityKey>(obs => obs.next(result));\r\n }\r\n }\r\n\r\n get<T>(entityTypes: string, id: string, fields: string): Observable<T>;\r\n get<T>(entityTypes: string, id: string, fields: string, expand: Expand): Observable<T>;\r\n get<T>(entityTypes: string, id: string, fields: string, expand: Expand = null): Observable<T> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let addFields = '';\r\n let sep = '?';\r\n\r\n if (fields != null && fields != '') {\r\n addFields = sep + \"$select=\" + fields;\r\n sep = '&';\r\n }\r\n\r\n let _ex = this.expandString(expand, sep);\r\n\r\n let _id = id.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + entityTypes + \"(\" + _id + \")\" + addFields + _ex;\r\n this.log(url);\r\n\r\n return this.http.get<T>(this.forceHTTPS(url), { headers: headers });\r\n }\r\n\r\n query<T>(entityTypes: string, fields: string, filter: string): Observable<XrmQueryResult<T>>;\r\n query<T>(entityTypes: string, fields: string, filter: string, orderBy: string): Observable<XrmQueryResult<T>>;\r\n query<T>(entityTypes: string, fields: string, filter: string, orderBy: string, top: number): Observable<XrmQueryResult<T>>;\r\n query<T>(entityTypes: string, fields: string, filter: string, orderBy: string, top: number, count: boolean): Observable<XrmQueryResult<T>>;\r\n query<T>(entityTypes: string, fields: string, filter: string, orderBy: string = null, top: number = 0, count: boolean = false): Observable<XrmQueryResult<T>> {\r\n let me = this;\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n if (top > 0) {\r\n headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n } else {\r\n }\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + entityTypes;\r\n if ((fields != null && fields != '') || (filter != null && filter != '') || (orderBy != null && orderBy != '') || top > 0) {\r\n url += \"?\";\r\n }\r\n let sep = '';\r\n\r\n if (fields != null && fields != '') {\r\n url += '$select=' + fields;\r\n sep = '&';\r\n }\r\n\r\n if (filter != null && filter != '') {\r\n url += sep + '$filter=' + filter;\r\n sep = '&';\r\n }\r\n\r\n if (orderBy != null && orderBy != '') {\r\n url += sep + '$orderby=' + orderBy;\r\n sep = '&';\r\n }\r\n\r\n if (count) {\r\n url += sep + '$count=true';\r\n sep = '&';\r\n }\r\n\r\n return this.http.get(this.forceHTTPS(url), { headers: headers }).pipe(map(response => {\r\n let result = me.resolveQueryResult<T>(response, top, [url], 0);\r\n return result;\r\n }));\r\n }\r\n\r\n create<T>(entityType: string, entity: T): Observable<T> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n headers = headers.append(\"Prefer\", \"return=representation\");\r\n\r\n let options = {\r\n headers: headers,\r\n }\r\n\r\n return this.http.post(this.forceHTTPS(this.getContext().getClientUrl()) + this.apiUrl + entityType, entity, { headers: headers, observe: \"response\" }).pipe(map(\r\n (res: HttpResponse<any>) => {\r\n if (res.body == null) {\r\n let entityId = res.headers.get('OData-EntityId') as string;\r\n let result = { id: entityId.split('(')[1].replace(')', ''), $keyonly: true };\r\n return result;\r\n } else {\r\n return res.body;\r\n }\r\n }\r\n ));\r\n }\r\n\r\n update<T>(entityType: string, entity: T, id: string): Observable<T>;\r\n update<T>(entityType: string, entity: T, id: string, fields: string): Observable<T>;\r\n update<T>(entityType: string, entity: T, id: string, fields: string = null): Observable<T> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n headers = headers.append(\"Prefer\", \"return=representation\");\r\n\r\n let _f = '';\r\n if (fields != null) {\r\n _f = '?$select=' + fields;\r\n }\r\n\r\n let fUrl = this.getContext().getClientUrl() + this.apiUrl + entityType + \"(\" + id + \")\" + _f;\r\n this.log(fUrl);\r\n\r\n return this.http.patch(this.forceHTTPS(fUrl), entity, { headers: headers }).pipe(map(response => {\r\n if (response == null || this.getContext().getVersion().startsWith(\"8.0\") || this.getContext().getVersion().startsWith(\"8.1\")) {\r\n return entity;\r\n }\r\n return response as T;\r\n }));\r\n }\r\n\r\n put(entityType: string, id: string, field: string, value: any): Observable<null>;\r\n put(entityType: string, id: string, field: string, value: any, propertyValueAs: string): Observable<null>;\r\n put(entityType: string, id: string, field: string, value: any, propertyValueAs: string = null): Observable<null> {\r\n if (propertyValueAs == null) propertyValueAs = 'value';\r\n\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let v = {\r\n };\r\n\r\n v[propertyValueAs] = value;\r\n this.log(v);\r\n\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + entityType + \"(\" + id + \")/\" + field;\r\n this.log(url);\r\n\r\n if (v[propertyValueAs] != null) {\r\n return this.http.put(this.forceHTTPS(url), v, { headers: headers }).pipe(map(response => null));\r\n } else {\r\n return this.http.delete(this.forceHTTPS(url), { headers: headers }).pipe(map(response => null));\r\n }\r\n }\r\n\r\n delete(entityType: string, id: string): Observable<null> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + entityType + \"(\" + id + \")\";\r\n this.log(url);\r\n return this.http.delete(this.forceHTTPS(url), { headers: headers }).pipe(map(response => null));\r\n }\r\n\r\n getParameter(param: string): string {\r\n return this.getQueryStringParameters()[param];\r\n }\r\n\r\n associate(fromType: string, fromId: string, toType: string, toId: string, refname: string): Observable<null> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + fromType + \"(\" + this.toGuid(fromId) + \")/\" + refname + \"/$ref\";\r\n\r\n let data = {\r\n \"@odata.id\": this.getContext().$devClientUrl() + toType + \"(\" + this.toGuid(toId) + \")\"\r\n }\r\n\r\n if (this.debug) {\r\n this.log(url);\r\n this.log(data);\r\n }\r\n\r\n return this.http.post(this.forceHTTPS(url), data, { headers: headers }).pipe(map(response => null));\r\n }\r\n\r\n disassociate(fromType: string, fromId: string, toType: string, toId: string, refname: string): Observable<null> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + fromType + \"(\" + this.toGuid(fromId) + \")/\" + refname + \"/$ref?$id=\" + this.getContext().$devClientUrl() + toType + \"(\" + this.toGuid(toId) + \")\";\r\n this.log(url);\r\n\r\n return this.http.delete(this.forceHTTPS(url), { headers: headers }).pipe(map(response => {\r\n this.log(response);\r\n return null;\r\n }));\r\n }\r\n\r\n func(name: string, data: string): Observable<any>;\r\n func(name: string, data: string, boundType: string, boundId: string): Observable<any>;\r\n func(name: string, data: string, boundType: string = null, boundId: string = null): Observable<any> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + name;\r\n if (boundType != null) {\r\n url = this.getContext().getClientUrl() + this.apiUrl + boundType + \"(\" + this.toGuid(boundId) + \")/\" + name;\r\n }\r\n\r\n if (data != null && data.length > 0) {\r\n url += data;\r\n } else {\r\n url += \"()\";\r\n }\r\n\r\n this.log(url);\r\n return this.http.get(this.forceHTTPS(url), { headers: headers }).pipe(map(response => {\r\n this.log(response);\r\n return response;\r\n }));\r\n }\r\n\r\n\r\n action(name: string, data: any): Observable<any>;\r\n action(name: string, data: any, boundType: string, boundId: string): Observable<any>;\r\n action(name: string, data: any, boundType: string = null, boundId: string = null): Observable<any> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n let url = this.getContext().getClientUrl() + this.apiUrl + name;\r\n if (boundType != null) {\r\n url = this.getContext().getClientUrl() + this.apiUrl + boundType + \"(\" + this.toGuid(boundId) + \")/\" + name;\r\n }\r\n this.log(url);\r\n\r\n return this.http.post(this.forceHTTPS(url), data, { headers: headers }).pipe(map(response => {\r\n this.log(response);\r\n return response;\r\n }));\r\n }\r\n\r\n log(message: any): void {\r\n if (this.debug) {\r\n if (typeof message == 'string') {\r\n console.dir(message);\r\n } else {\r\n console.log(message);\r\n }\r\n }\r\n }\r\n\r\n\r\n private tryGetKey(sub: Subscriber<XrmEntityKey>): void {\r\n setTimeout(() => {\r\n var key = this.xrmformService.getFormKey(null, null, true);\r\n if (key.id != null && key.id != '' && key.type != null && key.type != '') {\r\n let result = new XrmEntityKey();\r\n result.entityType = key.type;\r\n result.id = key.id;\r\n sub.next(result);\r\n } else {\r\n this.keyTries++;\r\n if (this.keyTries < 900) {\r\n // continue try for 1/2 hour at most\r\n this.tryGetKey(sub);\r\n }\r\n }\r\n }, 2000);\r\n }\r\n\r\n private initializeVersion(_v: string): void {\r\n if (_v == null) { _v = '9.0.0.0'; }\r\n let v = _v.split('.');\r\n this.setVersion(v[0] + \".\" + v[1]);\r\n this.apiVersion = 'v' + v[0] + '.' + v[1];\r\n }\r\n\r\n private expandString(expand: Expand, sep: string): string {\r\n if (expand == null || expand.name == null || expand.name == '') return '';\r\n\r\n let _ex = sep + '$expand=' + expand.toExpandString();\r\n\r\n if (expand.additional != null && expand.additional.length > 0) {\r\n expand.additional.forEach(ad => {\r\n _ex += \",\" + ad.toExpandString();\r\n });\r\n }\r\n return _ex;\r\n }\r\n\r\n private resolveQueryResult<T>(response: any, top: number, pages: string[], pageIndex: number): XrmQueryResult<T> {\r\n let me = this;\r\n let result = {\r\n context: response[\"@odata.context\"],\r\n count: response[\"@odata.count\"],\r\n value: response[\"value\"] as T[],\r\n pages: pages,\r\n prev: null,\r\n next: null,\r\n pageIndex: pageIndex,\r\n top: top,\r\n nextLink: null\r\n }\r\n\r\n let nextLink = response[\"@odata.nextLink\"] as string;\r\n\r\n if (nextLink != null && nextLink != '') {\r\n let start = nextLink.indexOf('/api');\r\n nextLink = me.getContext().getClientUrl() + nextLink.substring(start);\r\n result = {\r\n context: result.context,\r\n count: response[\"@odata.count\"],\r\n value: result.value,\r\n pages: pages,\r\n pageIndex: pageIndex,\r\n prev: null,\r\n top: top,\r\n nextLink: nextLink,\r\n next: (): Observable<XrmQueryResult<T>> => {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n if (top > 0) {\r\n headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n }\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n return me.http.get(me.forceHTTPS(nextLink), { headers: headers }).pipe(map(r => {\r\n pages.push(nextLink);\r\n let pr = me.resolveQueryResult<T>(r, top, pages, pageIndex + 1);\r\n return pr;\r\n }));\r\n }\r\n }\r\n }\r\n\r\n if (result.pageIndex >= 1) {\r\n result.prev = (): Observable<XrmQueryResult<T>> => {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n if (top > 0) {\r\n headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n } else {\r\n }\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let lastPage = result.pages[result.pageIndex - 1];\r\n return me.http.get(me.forceHTTPS(lastPage), { headers: headers }).pipe(map(r => {\r\n result.pages.splice(result.pages.length - 1, 1);\r\n let pr = me.resolveQueryResult<T>(r, top, result.pages, result.pageIndex - 1);\r\n return pr;\r\n }));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getQueryStringParameters(): any {\r\n let search = window.location.search;\r\n let hashes = search.slice(search.indexOf('?') + 1).split('&');\r\n let params = {};\r\n hashes.map(hash => {\r\n let [key, val] = hash.split('=')\r\n params[key] = decodeURIComponent(val)\r\n })\r\n return params;\r\n }\r\n\r\n private toGuid(v: string): string {\r\n // 5C48BB2A-BFC0-4E56-A262-8494E0F6A8FD\r\n if (v == null || v == '') {\r\n return v;\r\n }\r\n\r\n v = decodeURIComponent(v).replace('{', '').replace('}', '');\r\n\r\n if (v.indexOf('-') >= 0) {\r\n return v;\r\n }\r\n return v.substr(0, 8) + '-' + v.substr(8, 4) + '-' + v.substr(12, 4) + '-' + v.substr(16, 4) + '-' + v.substr(20);\r\n }\r\n\r\n private getDefaultHeader(): HttpHeaders {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.token != null) {\r\n this.log('crmtoken used: ' + this.token);\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n return headers;\r\n }\r\n\r\n\r\n forceHTTPS(v: string): string {\r\n if (this.forceHttps && v.startsWith(\"http://\")) {\r\n return v.replace(\"http://\", \"https://\");\r\n }\r\n return v;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { XrmService } from './xrm.service';\r\nimport { XrmConfigService } from './xrmconfig.service';\r\n\r\n\r\nexport interface AuthUserProfile {\r\n name: string;\r\n}\r\n\r\nexport interface AuthUser {\r\n profile: AuthUserProfile;\r\n}\r\n\r\nexport interface AuthContext {\r\n isCallback(hash: string): boolean;\r\n handleWindowCallback(): void;\r\n getLoginError(): string;\r\n getCachedUser(): AuthUser;\r\n login(): void;\r\n logOut(): void;\r\n acquireToken(url: string, callback: any): void;\r\n}\r\n\r\n\r\nexport interface AuthConfigEndpoint {\r\n orgUri: string;\r\n}\r\n\r\nexport interface AuthConfig {\r\n tenant: string;\r\n clientId: string;\r\n postLogoutRedirectUri: string;\r\n endpoints: AuthConfigEndpoint;\r\n cacheLocation: string;\r\n version: string;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class XrmAuthService {\r\n authConfig: AuthConfig;\r\n obs: any;\r\n\r\n constructor(private xrmConfigService: XrmConfigService, private xrmService: XrmService ) { }\r\n\r\n authenticate(): Observable<boolean> {\r\n if (window[\"AuthenticationContext\"] == null) {\r\n throw \"You must load adal.js to the page header scripts.\";\r\n }\r\n\r\n this.authConfig = this.xrmConfigService.getConfig();\r\n\r\n let authCtx = new window[\"AuthenticationContext\"](this.authConfig) as AuthContext;\r\n let isCallback = authCtx.isCallback(window.location.hash);\r\n\r\n if (isCallback) {\r\n authCtx.handleWindowCallback();\r\n }\r\n\r\n var loginError = authCtx.getLoginError();\r\n\r\n if (!loginError && isCallback) {\r\n var x = Observable.create((_obs:any) => {\r\n this.obs = _obs;\r\n });\r\n\r\n setTimeout(() => {\r\n authCtx.acquireToken(this.authConfig.endpoints.orgUri, this.getToken);\r\n }, 1);\r\n return x;\r\n }\r\n\r\n if (loginError) {\r\n throw loginError;\r\n }\r\n\r\n if (!isCallback) {\r\n let user = authCtx.getCachedUser();\r\n if (user == null) {\r\n authCtx.login();\r\n } else {\r\n console.log(user);\r\n }\r\n }\r\n\r\n return Observable.create((obs:any) => {\r\n setTimeout(() => {\r\n obs.next(true);\r\n });\r\n });\r\n }\r\n\r\n private getToken(error: string, token: string): void {\r\n if (error) {\r\n console.log(error);\r\n }\r\n\r\n if (this.xrmService.debug) {\r\n console.log(token);\r\n }\r\n this.xrmService.token = token;\r\n this.obs.next(true);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class XrmStateService {\r\n private statechanged$: BehaviorSubject<boolean>;\r\n\r\n constructor() {\r\n this.statechanged$ = new BehaviorSubject<boolean>(false);\r\n }\r\n\r\n public statechanged(): BehaviorSubject<boolean> {\r\n return this.statechanged$;\r\n }\r\n\r\n private runnings = [];\r\n\r\n private _running: boolean = false;\r\n\r\n\r\n /**\r\n * @deprecated You should subscribe to statechanged() instead of targeting this property directly\r\n */\r\n public get running() { return this._running };\r\n\r\n private _success: number = 0;\r\n public get success() { return this._success };\r\n\r\n private _error: number = 0;\r\n public get error() { return this._error };\r\n\r\n private add(x: number): void {\r\n this.runnings.push(x);\r\n this._running = true;\r\n }\r\n\r\n private remove(x: number, error: boolean): void {\r\n let pos = this.runnings.indexOf(x);\r\n this.runnings.splice(pos, 1);\r\n\r\n var current = this._running;\r\n\r\n this._running = this.runnings.length > 0;\r\n\r\n if (current != this._running) {\r\n this.statechanged$.next(this._running);\r\n }\r\n\r\n if (error) {\r\n this._error++;\r\n } else {\r\n this._success++;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators'\r\n\r\nimport { XrmStateService } from './xrmstate.service';\r\n\r\n\r\n@Injectable()\r\nexport class XrmInterceptor implements HttpInterceptor {\r\n private nextNumber: number = 0;\r\n constructor(private xrmState: XrmStateService) { }\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<any> {\r\n this.nextNumber++;\r\n let me = this.nextNumber;\r\n this.xrmState['add'](me);\r\n\r\n return next.handle(req)\r\n .pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.xrmState['remove'](me, false);\r\n }\r\n return event;\r\n }),\r\n catchError(error => {\r\n this.xrmState['remove'](me, true);\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse, HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Observable, Subscriber, throwError } from 'rxjs';\r\nimport { map, catchError, startWith } from 'rxjs/operators'\r\n\r\nimport { XrmService, XrmEntityKey, XrmQueryResult, Expand } from './xrm.service';\r\nimport { XrmContext } from './xrmform.service';\r\nimport { Fetchxml } from './fetchxml';\r\n\r\nconst XRMCONTEXTSERVICE_EMPTY_GUID = \"00000000-0000-0000-0000-000000000000\";\r\n\r\nexport interface ToFunctionPropertyValue {\r\n functionPropertyValueAsString(): string;\r\n}\r\n\r\nexport class FunctionPropertyValue implements ToFunctionPropertyValue {\r\n private v: string = '';\r\n constructor(v: string) {\r\n this.v = v;\r\n }\r\n\r\n functionPropertyValueAsString(): string {\r\n return this.v;\r\n }\r\n}\r\n\r\nexport class Entity {\r\n _pluralName: string;\r\n _keyName: string;\r\n _updateable: boolean = false;\r\n _logicalName: string;\r\n id: string;\r\n constructor(pluralName: string, keyName: string);\r\n constructor(pluralName: string, keyName: string, updateable: boolean);\r\n constructor(pluralName: string, keyName: string, updateable: boolean, logicalname: string);\r\n constructor(pluralName: string, keyName: string, updateable: boolean = false, logicalname: string = null) {\r\n this._pluralName = pluralName;\r\n this._keyName = keyName;\r\n this._updateable = updateable;\r\n\r\n if (logicalname != null && logicalname != '') {\r\n this._logicalName = logicalname;\r\n } else {\r\n let x = this._pluralName != null ? this._pluralName.toLowerCase() : null;\r\n switch (x) {\r\n case \"emails\": this._logicalName = \"email\"; break;\r\n case \"appointments\": this._logicalName = \"appointment\"; break;\r\n case \"letters\": this._logicalName = \"letter\"; break;\r\n case \"phonecalls\": this._logicalName = \"phonecall\"; break;\r\n case \"tasks\": this._logicalName = \"task\"; break;\r\n case \"campaignresponses\": this._logicalName = \"campaignresponse\"; break;\r\n default: {\r\n if (this._keyName.toLowerCase() == \"activityid\" && x != null) {\r\n this._logicalName = x.substr(0, x.length - 1);\r\n } else {\r\n this._logicalName = this._keyName.substr(0, (this._keyName.length - 2)).toLowerCase();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ToEntityReference(associatednavigationproperty: string): EntityReference;\r\n ToEntityReference(associatednavigationproperty: string = null): EntityReference {\r\n return new EntityReference(this.id, this._pluralName, associatednavigationproperty, this._logicalName);\r\n }\r\n\r\n ignoreColumn(prop: string): boolean {\r\n if (prop == \"_pluralName\" || prop == \"_logicalName\" || prop == \"_keyName\" || prop == \"id\" || prop == '_updateable' || prop == '$expand' || prop == 'access') {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n columns(): string[];\r\n columns(webapi: boolean): string[];\r\n columns(webapi: boolean = false): string[] {\r\n let result = [] as string[];\r\n\r\n let columns: string = this._keyName;\r\n for (var prop in this) {\r\n if (prop == this._keyName) continue;\r\n if (this.ignoreColumn(prop)) continue;\r\n\r\n let v = this[prop];\r\n if (typeof v !== 'undefined' && v != null) {\r\n if (Array.isArray(v)) {\r\n continue;\r\n }\r\n if (v instanceof Entity) {\r\n continue;\r\n }\r\n }\r\n\r\n if (this.hasOwnProperty(prop)) {\r\n if (webapi && this[prop] instanceof EntityReference) {\r\n result.push(\"_\" + prop + \"_value\");\r\n } else {\r\n result.push(prop);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport class Entities<T extends Entity> extends Array<T> {\r\n constructor(fType: string, tType: string, refName: string, leftToRight: boolean, t: T) {\r\n super(0);\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n this.parentType = fType;\r\n this.childType = tType;\r\n this.refName = refName;\r\n this.leftToRight = leftToRight;\r\n this.push(t);\r\n }\r\n\r\n private parentType: string;\r\n private parentId: string;\r\n private childType: string;\r\n private refName: string;\r\n private leftToRight: boolean;\r\n private xrmService: XrmService;\r\n\r\n add(entity: Entity): Observable<null> {\r\n let fromType = this.parentType;\r\n let fromId = this.parentId;\r\n let toType = this.childType;\r\n let toId = entity.id;\r\n\r\n if (!this.leftToRight) {\r\n fromType = this.childType;\r\n fromId = entity.id;\r\n toType = this.parentType;\r\n toId = this.parentId;\r\n }\r\n return this.xrmService.associate(fromType, fromId, toType, toId, this.refName).pipe(map(r => {\r\n this.push(entity as T);\r\n return null;\r\n }));\r\n }\r\n\r\n remove(entity: Entity): Observable<null> {\r\n let fromType = this.parentType;\r\n let fromId = this.parentId;\r\n let toType = this.childType;\r\n let toId = entity.id;\r\n\r\n if (!this.leftToRight) {\r\n fromType = this.childType;\r\n fromId = entity.id;\r\n toType = this.parentType;\r\n toId = this.parentId;\r\n }\r\n\r\n return this.xrmService.disassociate(fromType, fromId, toType, toId, this.refName).pipe(map(r => {\r\n var index = this.indexOf(entity as T);\r\n if (index >= 0) {\r\n this.splice(index, 1);\r\n }\r\n return null;\r\n }));\r\n }\r\n}\r\n\r\nexport class EntityReference {\r\n constructor();\r\n constructor(id: string);\r\n constructor(id: string, pluralName: string);\r\n constructor(id: string, pluralName: string, associatednavigationproperty: string);\r\n constructor(id: string, pluralName: string, associatednavigationproperty: string, logicalname: string);\r\n constructor(id: string = null, pluralName: string = null, associatednavigationproperty: string = null, logicalname: string = null) {\r\n this.id = id;\r\n this.pluralName = pluralName;\r\n this.associatednavigationproperty = associatednavigationproperty;\r\n this.logicalname = logicalname;\r\n\r\n if (this.pluralName != null && logicalname == null) {\r\n switch (this.pluralName.toLowerCase()) {\r\n case \"emails\": this.logicalname = \"email\"; break;\r\n case \"appointments\": this.logicalname = \"appointment\"; break;\r\n case \"letters\": this.logicalname = \"letter\"; break;\r\n case \"phonecalls\": this.logicalname = \"phonecall\"; break;\r\n case \"tasks\": this.logicalname = \"task\"; break;\r\n default: {\r\n this.logicalname = this.pluralName.substr(0, (this.pluralName.length - 1)).toLowerCase();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n id: string;\r\n name: string;\r\n logicalname: string;\r\n associatednavigationproperty: string;\r\n pluralName: string;\r\n\r\n replace(v1: string, v2: string) {\r\n this.id.replace(v1, v2);\r\n }\r\n\r\n meta(pluralName: string, associatednavigationproperty: string): EntityReference {\r\n this.pluralName = pluralName;\r\n this.associatednavigationproperty = associatednavigationproperty;\r\n return this;\r\n }\r\n\r\n clone(): EntityReference {\r\n let result = new EntityReference();\r\n result.id = this.id;\r\n result.name = this.name;\r\n result.logicalname = this.name;\r\n result.associatednavigationproperty = this.associatednavigationproperty;\r\n return result;\r\n }\r\n\r\n associatednavigationpropertyname(): string {\r\n if (this.associatednavigationproperty == null || this.associatednavigationproperty == '') {\r\n throw 'navigation property has not been set for this EntityReference instance';\r\n }\r\n\r\n if (this.associatednavigationproperty.endsWith('@odata.bind')) {\r\n return this.associatednavigationproperty;\r\n }\r\n return this.associatednavigationproperty + '@odata.bind';\r\n }\r\n\r\n equals(ref: EntityReference): boolean {\r\n return this.id == ref.id && this.logicalname == ref.logicalname;\r\n }\r\n\r\n toJsonProperty(): any {\r\n return { '@odata.id' : \"'\" + this.pluralName + \"(\" + this.id.replace(\"{\", \"\").replace(\"}\", \"\") + \")\" + \"'\"};\r\n }\r\n\r\n static same(ref1: EntityReference, ref2: EntityReference): boolean {\r\n if (ref1 == null && ref2 == null) {\r\n return true;\r\n }\r\n\r\n let id1: string = null;\r\n let id2: string = null;\r\n if (ref1 != null) id1 = ref1.id;\r\n if (ref2 != null) id2 = ref2.id;\r\n return id1 == id2;\r\n }\r\n}\r\n\r\nexport class OptionSetValue {\r\n constructor();\r\n constructor(value: number);\r\n constructor(value: number, name: string);\r\n constructor(value: number = null, name: string = null) {\r\n this.value = value;\r\n this.name = name;\r\n }\r\n\r\n value: number;\r\n name: string;\r\n\r\n equals(o: OptionSetValue): boolean {\r\n if (this.value == null && (o == null || o.value == null)) return true;\r\n return this.value == o.value;\r\n }\r\n\r\n clone(): OptionSetValue {\r\n let r = new OptionSetValue();\r\n r.name = this.name;\r\n r.value = this.value;\r\n return r;\r\n }\r\n\r\n toJsonProperty(): any {\r\n return this.value;\r\n }\r\n\r\n static same(o1: OptionSetValue, o2: OptionSetValue): boolean {\r\n if (o1 == null && o2 == null) return true;\r\n let v1: number = null;\r\n let v2: number = null;\r\n if (o1 != null) v1 = o1.value;\r\n if (o2 != null) v2 = o2.value;\r\n return v1 == v2;\r\n }\r\n}\r\n\r\n\r\nexport enum Operator {\r\n And,\r\n Or\r\n}\r\n\r\nexport enum Comparator {\r\n Equals = 1,\r\n NotEquals = 2,\r\n Contains = 3,\r\n NotContains = 4,\r\n DoesNotContainsData = 5,\r\n ContainsData = 6,\r\n StartsWith = 7,\r\n NotStartsWith = 8,\r\n EndsWith = 9,\r\n NotEndsWith = 10,\r\n GreaterThan = 11,\r\n GreaterThanOrEqual = 12,\r\n LessThan = 13,\r\n LessThanOrEQual = 14,\r\n Useroruserhierarchy = 100,\r\n Userteams = 101\r\n}\r\n\r\nexport class ColumnBuilder {\r\n columns: string = null;\r\n hasEntityReference: boolean = false;\r\n}\r\n\r\nexport class Filter {\r\n field: string;\r\n operator: Comparator;\r\n alias: string;\r\n value: any;\r\n\r\n constructor() {\r\n this[\"raw\"] = false;\r\n }\r\n\r\n toQueryString(prototype: Entity): string {\r\n if (this[\"raw\"] == true) {\r\n return this.field;\r\n }\r\n\r\n if (this.operator == 100) {\r\n return 'ownerid eq-useroruserhierarchy';\r\n }\r\n\r\n if (this.operator == 101) {\r\n return 'ownerid eq-userteams';\r\n }\r\n\r\n let result = '';\r\n let _f = this.field;\r\n\r\n if (this.operator == Comparator.Equals && this.value == null) {\r\n // this.operator = Comparator.DoesNotContainsData;\r\n }\r\n\r\n if (this.operator == Comparator.NotEquals && this.value == null) {\r\n // this.operator = Comparator.ContainsData;\r\n }\r\n\r\n switch (this.operator) {\r\n case Comparator.ContainsData: {\r\n return _f + ' ne null';\r\n }\r\n case Comparator.DoesNotContainsData: {\r\n return _f + ' eq null';\r\n }\r\n }\r\n\r\n if (this.value == null) {\r\n throw new Error(\"value is required for operation type \" + this.operator);\r\n }\r\n\r\n let _v = \"'\" + this.value + \"'\";\r\n\r\n if (typeof this.value == 'number') {\r\n _v = this.value.toString();\r\n }\r\n\r\n if (typeof this.value == 'boolean') {\r\n _v = this.value.valueOf() ? 'true' : 'false';\r\n }\r\n\r\n if (prototype[this.field] instanceof OptionSetValue) {\r\n if (this.value != null && this.value.hasOwnProperty('value')) {\r\n _v = this.value.value;\r\n }\r\n }\r\n\r\n\r\n let isEref = false;\r\n if (prototype[this.field] instanceof EntityReference) {\r\n _f = \"_\" + this.field + \"_value\";\r\n if (this.value != null) {\r\n if (typeof this.value == 'string') {\r\n _v = this.value.replace('{', '').replace('}', '');\r\n } else {\r\n _v = this.value.id.replace('{', '').replace('}', '');\r\n }\r\n }\r\n isEref = true;\r\n }\r\n\r\n if (!isEref && _f.startsWith('_') && _f.endsWith('_value') && _v != null && this.value != null) {\r\n if (typeof this.value === \"string\") {\r\n _v = this.value.replace('{', '').replace('}', '');\r\n } else {\r\n if (this.value.hasOwnProperty(\"id\")) {\r\n _v = this.value.id.replace('{', '').replace('}', '');\r\n }\r\n }\r\n }\r\n\r\n var isDate = false;\r\n if (prototype[this.field] instanceof Date) {\r\n if (this.value instanceof Date) {\r\n _v = this.value.toISOString();\r\n } else {\r\n _v = this.value.toString();\r\n }\r\n isDate = true;\r\n }\r\n\r\n if (!isDate && this.value instanceof Date) {\r\n _v = this.value.toISOString();\r\n isDate = true;\r\n }\r\n\r\n if (_f == prototype._keyName) {\r\n _v = this.value.replace('{', '').replace('}', '');\r\n }\r\n\r\n if (_v != null && _v != '') {\r\n _v = encodeURIComponent(_v);\r\n }\r\n\r\n switch (this.operator) {\r\n case Comparator.Equals: {\r\n return _f + ' eq ' + _v;\r\n }\r\n case Comparator.NotEquals: {\r\n return _f + ' ne ' + _v;\r\n }\r\n case Comparator.GreaterThan: {\r\n return _f + ' gt ' + _v;\r\n }\r\n case Comparator.GreaterThanOrEqual: {\r\n return _f + ' ge ' + _v;\r\n }\r\n case Comparator.LessThan: {\r\n return _f + ' lt ' + _v;\r\n }\r\n case Comparator.LessThanOrEQual: {\r\n return _f + ' le ' + _v;\r\n }\r\n case Comparator.Contains: {\r\n return \"contains(\" + _f + \",\" + _v + \")\";\r\n }\r\n case Comparator.NotContains: {\r\n return \"not contains(\" + _f + \",\" + _v + \")\";\r\n }\r\n case Comparator.StartsWith: {\r\n return \"startswith(\" + _f + \",\" + _v + \")\";\r\n }\r\n case Comparator.NotStartsWith: {\r\n return \"not startswith(\" + _f + \",\" + _v + \")\";\r\n }\r\n case Comparator.EndsWith: {\r\n return \"endswith(\" + _f + \",\" + _v + \")\";\r\n }\r\n case Comparator.NotEndsWith: {\r\n return \"not endswith(\" + _f + \",\" + _v + \")\";\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n toFetcmXml(): string {\r\n if (this.operator == 100) {\r\n return '<condition attribute=\"ownerid\" operator=\"eq-useroruserhierarchy\" />';\r\n }\r\n\r\n if (this.operator == 101) {\r\n return '<condition attribute=\"ownerid\" operator=\"eq-userteams\" />';\r\n }\r\n\r\n var result: string = \"\";\r\n\r\n let _v = this.value;\r\n\r\n if (this.value != null) {\r\n if (typeof this.value == 'number') {\r\n _v = this.value.toString();\r\n }\r\n\r\n if (typeof this.value == 'boolean') {\r\n _v = this.value.valueOf() ? 'true' : 'false';\r\n }\r\n\r\n if (this.value != null && this.value.hasOwnProperty('value')) {\r\n _v = this.value.value;\r\n }\r\n }\r\n\r\n if (_v == null) {\r\n this.adjustOperation();\r\n }\r\n\r\n var op = \"eq\";\r\n switch (this.operator) {\r\n case Comparator.Contains: op = \"like\"; _v = \"%\" + _v + \"%\"; break;\r\n case Comparator.ContainsData: op = \"not-null\"; break;\r\n case Comparator.DoesNotContainsData: op = \"null\"; break;\r\n case Comparator.EndsWith: op = \"like\"; _v = \"%\" + _v; null; break;\r\n case Comparator.Equals: op = \"eq\"; break;\r\n case Comparator.GreaterThan: op = \"gt\"; break;\r\n case Comparator.GreaterThanOrEqual: op = \"ge\"; break;\r\n case Comparator.LessThan: op = \"lt\"; break;\r\n case Comparator.LessThanOrEQual: op = \"le\"; break;\r\n case Comparator.NotContains: op = \"not-like\"; \"%\" + _v + \"%\"; break;\r\n case Comparator.NotEndsWith: op = \"not-like\"; \"&\" + _v; break;\r\n case Comparator.NotEquals: op = \"ne\"; break;\r\n case Comparator.NotStartsWith: op = \"not-like\"; _v = _v + \"%\"; break;\r\n case Comparator.StartsWith: op = \"like\"; _v = _v + \"%\"; break;\r\n default: throw \"condition type not supported in fetch xml \" + this.operator;\r\n }\r\n\r\n var aliasString = \"\";\r\n if (this.alias != null) {\r\n aliasString = \" entityname='\"+this.alias+\"'\";\r\n }\r\n\r\n if (_v != null) {\r\n result += \"<condition\" + aliasString + \" attribute='\" + this.field + \"' operator='\" + op + \"' value='\" + _v + \"' />\";\r\n } else {\r\n result += \"<condition\" + aliasString + \" attribute='\" + this.field + \"' operator='\" + op + \"' />\";\r\n }\r\n return result;\r\n }\r\n\r\n private adjustOperation() {\r\n if (this.operator == Comparator.Equals) {\r\n this.operator = Comparator.DoesNotContainsData;\r\n } else\r\n if (this.operator == Comparator.NotEquals) {\r\n this.operator = Comparator.ContainsData;\r\n }\r\n\r\n if (this.operator != Comparator.DoesNotContainsData && this.operator != Comparator.ContainsData) {\r\n throw \"null in condition value is only supported for containsdata and doesnotdontainsdata:\" + this.field + \"/\" + (this.alias != null ? \"alias:\" + this.alias : \"\") + \"/\" + this.operator;\r\n }\r\n }\r\n}\r\n\r\nexport class Condition {\r\n operator: Operator = Operator.And;\r\n filter: Filter[];\r\n children: Condition[];\r\n parent: Condition;\r\n\r\n constructor();\r\n constructor(operator: Operator);\r\n constructor(operator: Operator = Operator.And) {\r\n this.operator = operator;\r\n this.filter = [];\r\n this.children = [];\r\n }\r\n\r\n where(field: string, opr: Comparator): Condition;\r\n where(field: string, opr: Comparator, value: any): Condition;\r\n where(field: string, opr: Comparator, value: any = null): Condition {\r\n let f = new Filter();\r\n f.field = field;\r\n f.value = value;\r\n f.operator = opr;\r\n this.filter.push(f);\r\n return this;\r\n }\r\n\r\n alias(alias: string, field: string, opr: Comparator): Condition;\r\n alias(alias: string, field: string, opr: Comparator, value: any): Condition;\r\n alias(alias: string, field: string, opr: Comparator, value: any = null): Condition {\r\n let f = new Filter();\r\n f.alias = alias;\r\n f.field = field;\r\n f.value = value;\r\n f.operator = opr;\r\n this.filter.push(f);\r\n return this;\r\n }\r\n\r\n group(opr: Operator): Condition {\r\n let result: Condition = new Condition(opr);\r\n result.parent = this;\r\n\r\n this.children.push(result);\r\n return result;\r\n }\r\n\r\n isActive(): Condition {\r\n return this.where(\"statecode\", Comparator.Equals, 0);\r\n }\r\n\r\n isInactive(): Condition {\r\n return this.where(\"statecode\", Comparator.Equals, 1);\r\n }\r\n\r\n owningUserIsCurrentUserOrHirachy(): Condition {\r\n return this.where(\"ownerid\", 100)\r\n }\r\n\r\n currentUserIsMemberOfOwningTeam(): Condition {\r\n return this.where(\"ownerid\", 101)\r\n }\r\n\r\n\r\n raw(filter: string): Condition {\r\n let result = new Filter();\r\n result.field = filter;\r\n result[\"raw\"] = true;\r\n this.filter.push(result);\r\n return this;\r\n }\r\n\r\n toQueryString(prototype: Entity): string {\r\n if ((this.children == null || this.children.length == 0) && (this.filter == null || this.filter.length == 0)) {\r\n return null;\r\n }\r\n\r\n let me = this;\r\n let result = '';\r\n let opr = '';\r\n if (this.filter != null && this.filter.length > 0) {\r\n this.filter.forEach(r => {\r\n result += opr + r.toQueryString(prototype);\r\n if (me.operator == Operator.And) {\r\n opr = ' and ';\r\n } else {\r\n opr = ' or ';\r\n }\r\n\r\n });\r\n }\r\n\r\n if (this.children != null && this.children.length > 0) {\r\n this.children.forEach(c => {\r\n result += opr + \"(\" + c.toQueryString(prototype) + \")\";\r\n if (me.operator == Operator.And) {\r\n opr = ' and ';\r\n } else {\r\n opr = ' or ';\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n toFetchXml(): string {\r\n let result: string = \"\";\r\n\r\n result += \"<filter type='\" + (this.operator == Operator.And ? \"and\" : \"or\") + \"'>\";\r\n if (this.filter != null && this.filter.length > 0)\r\n this.filter.forEach(f => {\r\n result += f.toFetcmXml();\r\n });\r\n\r\n if (this.children != null && this.children.length > 0) {\r\n this.children.forEach(c => {\r\n result += c.toFetchXml();\r\n });\r\n }\r\n\r\n result += \"</filter>\"\r\n\r\n return result;\r\n }\r\n}\r\n\r\nclass XrmTransactionItem {\r\n constructor(type: string, prototype: Entity, instance: Entity);\r\n constructor(type: string, prototype: Entity, instance: Entity, field: string, value: any);\r\n constructor(type: string, prototype: Entity, instance: Entity, field: string = null, value: any = null) {\r\n this.type = type;\r\n this.prototype = prototype;\r\n this.instance = instance;\r\n this.field = field;\r\n this.value = value;\r\n }\r\n\r\n type: string;\r\n prototype: Entity;\r\n instance: Entity;\r\n field: string;\r\n value: any;\r\n id: number = null;\r\n}\r\n\r\n\r\nexport class XrmTransaction {\r\n private oprs: XrmTransactionItem[] = [];\r\n\r\n put<T extends Entity>(prototype: T, instance: T, field: string, value: any): void {\r\n this.oprs.push(new XrmTransactionItem(\"put\", prototype, instance, field, value));\r\n }\r\n\r\n delete<T extends Entity>(instance: T): void {\r\n this.oprs.push(new XrmTransactionItem(\"delete\", null, instance));\r\n }\r\n\r\n create<T extends Entity>(prototype: T, instance: T): void {\r\n this.oprs.push(new XrmTransactionItem(\"create\", prototype, instance));\r\n }\r\n\r\n update<T extends Entity>(prototype: T, instance: T): void {\r\n this.oprs.push(new XrmTransactionItem(\"update\", prototype, instance));\r\n }\r\n}\r\n\r\nexport class XrmAccess {\r\n private lazy: boolean = null;\r\n resolved: boolean = null;\r\n read: boolean;\r\n write: boolean;\r\n append: boolean;\r\n appendTo: boolean;\r\n create: boolean;\r\n delete: boolean;\r\n share: boolean;\r\n assign: boolean;\r\n\r\n constructor();\r\n constructor(lasy: boolean);\r\n constructor(lazy: boolean = false) {\r\n this.lazy = lazy;\r\n }\r\n}\r\n\r\nclass ExpandProperty {\r\n name: string;\r\n entity: Entity;\r\n isArray: boolean;\r\n value: any;\r\n}\r\n\r\n@Injectable()\r\nexport class XrmContextService {\r\n private context: any = {};\r\n private changemanager: any = {};\r\n private tick: number = new Date().valueOf();\r\n private includeOriginalPayload$: boolean = false;\r\n\r\n pageCookieMatch = /[-pagingcookie=\\\"][a-z,A-Z,0-9,%-_.~]+/g;\r\n\r\n constructor(private http: HttpClient, private xrmService: XrmService) { }\r\n\r\n setVersion(v: string) {\r\n this.xrmService.setVersion(v);\r\n }\r\n\r\n includeOroginalPayload(v: boolean): void {\r\n this.includeOriginalPayload$ = v;\r\n }\r\n\r\n getContext(): XrmContext {\r\n return this.xrmService.getContext();\r\n }\r\n\r\n getCurrentKey(): Observable<XrmEntityKey>;\r\n getCurrentKey(repeatForCreateForm: boolean): Observable<XrmEntityKey>;\r\n getCurrentKey(repeatForCreateForm: boolean = false): Observable<XrmEntityKey> {\r\n return this.xrmService.getCurrentKey(repeatForCreateForm);\r\n }\r\n\r\n getServiceUrl(): string {\r\n return this.getContext().getClientUrl() + this.xrmService.apiUrl;\r\n }\r\n\r\n getCurrentUserId(): Observable<string> {\r\n return this.xrmService.getCurrentUserId();\r\n }\r\n\r\n get<T extends Entity>(prototype: T, id: string): Observable<T> {\r\n let me = this;\r\n let columnDef = this.columnBuilder(prototype);\r\n\r\n let expand: Expand = null;\r\n\r\n let eps = this.getExpandProperties(prototype);\r\n if (eps != null && eps.length > 0) {\r\n let comma = \",\";\r\n eps.forEach(ep => {\r\n if (expand == null) {\r\n expand = this.$expandToExpand(ep);\r\n } else {\r\n if (expand.additional == null) {\r\n expand.additional = [];\r\n }\r\n expand.additional.push(this.$expandToExpand(ep));\r\n }\r\n });\r\n }\r\n\r\n return this.xrmService.get<T>(prototype._pluralName, id, columnDef.columns, expand).pipe(map(r => {\r\n return me.resolve<T>(prototype, r, prototype._updateable, null);\r\n }));\r\n }\r\n\r\n debug(setting: boolean): void {\r\n this.xrmService.debug = setting;\r\n }\r\n\r\n count(xml: Fetchxml): Observable<number> {\r\n let me = this;\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n let fetchxml = xml.toCountFetchXml();\r\n let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + xml.entity().entityPrototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n this.xrmService.log(fetchxml);\r\n this.xrmService.log(url);\r\n\r\n return new Observable(obs => {\r\n this.http.get<any>(this.forceHTTPS(url), options).toPromise()\r\n .then(response => {\r\n if (response.value && response.value.length && response.value.length == 1) {\r\n obs.next(response.value[0].count);\r\n } else {\r\n obs.next(0);\r\n }\r\n })\r\n .catch(e => {\r\n if (e[\"error\"] && e[\"error\"][\"error\"] && e[\"error\"][\"error\"][\"code\"]) {\r\n var val = e[\"error\"][\"error\"][\"code\"];\r\n if (val != null && val.toString() == \"0x8004e023\") {\r\n obs.next(50000);\r\n return;\r\n }\r\n }\r\n throwError(e);\r\n });\r\n });\r\n }\r\n\r\n fetch<T extends Entity>(xml: Fetchxml): Observable<XrmQueryResult<T>> {\r\n let me = this;\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n let fetchxml = xml.toFetchXml();\r\n let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + xml.entity().entityPrototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n this.xrmService.log(fetchxml);\r\n this.xrmService.log(url);\r\n\r\n let localPrototype = xml.entity().entityPrototype as T;\r\n\r\n return this.http.get(this.forceHTTPS(url), options).pipe(map(response => {\r\n let result = me.resolveFetchResult<T>(localPrototype, response, xml.count, [url], 0, xml);\r\n return result;\r\n }));\r\n }\r\n\r\n fetchxml<T extends Entity>(prototype: T, fetchxml: string): Observable<XrmQueryResult<T>> {\r\n let me = this;\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + prototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n this.xrmService.log(fetchxml);\r\n this.xrmService.log(url);\r\n\r\n return this.http.get(this.forceHTTPS(url), options).pipe(map(response => {\r\n let result = me.resolveQueryResult<T>(prototype, response, 0, [url], 0, null);\r\n return result;\r\n }));\r\n }\r\n\r\n query<T extends Entity>(prototype: T, condition: Condition): Observable<XrmQueryResult<T>>;\r\n query<T extends Entity>(prototype: T, condition: Condition, orderBy: string): Observable<XrmQueryResult<T>>;\r\n query<T extends Entity>(prototype: T, condition: Condition, orderBy: string, top: number): Observable<XrmQueryResult<T>>;\r\n query<T extends Entity>(prototype: T, condition: Condition, orderBy: string, top: number, count: boolean): Observable<XrmQueryResult<T>>;\r\n query<T extends Entity>(prototype: T, condition: Condition, orderBy: string = null, top: number = 0, count: boolean = false): Observable<XrmQueryResult<T>> {\r\n let me = this;\r\n let fields = this.columnBuilder(prototype).columns;\r\n\r\n let con = condition;\r\n let filter = null;\r\n if (condition != null) {\r\n while (con.parent != null) { con = con.parent };\r\n\r\n filter = con.toQueryString(prototype);\r\n }\r\n\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n if (top > 0) {\r\n headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n }\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + prototype._pluralName;\r\n if ((fields != null && fields != '') || (filter != null && filter != '') || (orderBy != null && orderBy != '') || top > 0) {\r\n url += \"?\";\r\n }\r\n let sep = '';\r\n\r\n if (fields != null && fields != '') {\r\n url += '$select=' + fields;\r\n sep = '&';\r\n }\r\n\r\n if (filter != null && filter != '') {\r\n url += sep + '$filter=' + filter;\r\n sep = '&';\r\n }\r\n\r\n if (orderBy != null && orderBy != '') {\r\n url += sep + '$orderby=' + orderBy;\r\n sep = '&';\r\n }\r\n\r\n if (count) {\r\n url += sep + '$count=true';\r\n sep = '&';\r\n }\r\n\r\n this.xrmService.log(url);\r\n\r\n return this.http.get(this.forceHTTPS(url), options).pipe(map(response => {\r\n let result = me.resolveQueryResult<T>(prototype, response, top, [url], 0, null);\r\n return result;\r\n }));\r\n }\r\n\r\n create<T extends Entity>(prototype: T, instance: T): Observable<T> {\r\n let newr = this.prepareNewInstance(prototype, instance);\r\n this.xrmService.log(newr);\r\n\r\n return this.xrmService.create<T>(prototype._pluralName, newr as T).pipe(map(_response => {\r\n let response = _response as T;\r\n this.xrmService.log(response);\r\n\r\n if (response != null) {\r\n if (response.hasOwnProperty('$keyonly')) {\r\n instance._pluralName = prototype._pluralName;\r\n instance._logicalName = prototype._logicalName;\r\n instance._keyName = prototype._keyName;\r\n instance.id = _response.id;\r\n instance._updateable = true;\r\n\r\n let key = response._pluralName + ':' + response.id;\r\n for (let prop in prototype) {\r\n if (typeof prototype[prop] === 'function') {\r\n response[prop] = prototype[prop];\r\n continue;\r\n }\r\n }\r\n\r\n this.context[key] = instance;\r\n this.updateCM(prototype, instance);\r\n\r\n return instance;\r\n } else {\r\n this.resolveNewInstance(prototype, instance, response);\r\n return this.resolve(prototype, response, true, null);\r\n }\r\n }\r\n return null;\r\n }));\r\n }\r\n\r\n createAll<T extends Entity>(prototype: T, instances: T[]): Observable<null> {\r\n if (prototype != null && instances != null && instances.length > 0) {\r\n let trans = new XrmTransaction();\r\n instances.forEach(r => {\r\n trans.create(prototype, r);\r\n });\r\n\r\n return this.commit(trans);\r\n }\r\n throw \"You must parse a prototype and at least one instance to be created\";\r\n }\r\n\r\n update<T extends Entity>(prototype: T, instance: T): Observable<T>\r\n update<T extends Entity>(prototype: T, instance: T, deleteReferenceAsEmptyGuid: boolean): Observable<T>\r\n update<T extends Entity>(prototype: T, instance: T, deleteReferenceAsEmptyGuid: boolean = false): Observable<T> {\r\n let me = this;\r\n let upd = this.prepareUpdate(prototype, instance, deleteReferenceAsEmptyGuid);\r\n\r\n if (upd == null) {\r\n upd = {};\r\n }\r\n\r\n this.xrmService.log(upd);\r\n\r\n let fields = this.columnBuilder(prototype).columns;\r\n\r\n return this.xrmService.update<T>(prototype._pluralName, upd as T, instance.id, fields).pipe(map(response => {\r\n var wasnull = response[prototype._keyName] == null || response[prototype._keyName] == '';\r\n\r\n if (wasnull || this.getContext().getVersion().startsWith(\"8.0\") || this.getContext().getVersion().startsWith(\"8.1\")) {\r\n this.xrmService.log('version 8.0 update');\r\n this.updateCM(prototype, instance);\r\n return instance;\r\n }\r\n\r\n this.xrmService.log('version 9.0 or higher update');\r\n return me.resolve(prototype, response, true, null);\r\n }));\r\n }\r\n\r\n put(prototype: Entity, instance: Entity, field: string): Observable<null>;\r\n put(prototype: Entity, instance: Entity, field: string, value: any): Observable<null>;\r\n put(prototype: Entity, instance: Entity, field: string, value: any = 'ko-@value-not-parsed!'): Observable<null> {\r\n let v = value;\r\n if (value == 'ko-@value-not-parsed!') {\r\n v = instance[field];\r\n }\r\n\r\n let pvx = this.preparePutValue(prototype, field, v);\r\n return this.xrmService.put(prototype._pluralName, instance.id, pvx.field, pvx.value, pvx.propertyAs).pipe(map(response => {\r\n if (value != 'ko-@value-not-parsed!') {\r\n this.assignValue(prototype, instance, field, value);\r\n return null;\r\n }\r\n }));\r\n }\r\n\r\n putAll(prototype: Entity, instances: Entity[], field: string, value: any): Observable<null> {\r\n if (instances != null && instances.length == 1) {\r\n return this.put(prototype, instances[0], field, value);\r\n }\r\n\r\n if (instances != null && instances.length > 1) {\r\n let trans = new XrmTransaction();\r\n\r\n let pvx = this.preparePutValue(prototype, field, value);\r\n\r\n instances.forEach(r => {\r\n trans.put(prototype, r, field, pvx);\r\n });\r\n return this.commit(trans);\r\n }\r\n\r\n throw 'you must parse at least one instance in the instances array';\r\n }\r\n\r\n delete<T extends Entity>(t: T): Observable<null> {\r\n let me = this;\r\n return this.xrmService.delete(t._pluralName, t.id).pipe(map(r => {\r\n let key = t._pluralName + \":\" + t.id;\r\n if (me.context.hasOwnProperty(key)) {\r\n delete me.context[key];\r\n }\r\n return null;\r\n }));\r\n }\r\n\r\n deleteAll<T extends Entity>(instances: T[]): Observable<null> {\r\n if (instances != null && instances.length == 1) {\r\n return this.delete(instances[0]);\r\n }\r\n\r\n if (instances != null && instances.length > 0) {\r\n let trans = new XrmTransaction();\r\n instances.forEach(r => {\r\n trans.delete(r);\r\n });\r\n return this.commit(trans);\r\n }\r\n throw 'you must parse at least one instance in the instances array';\r\n }\r\n\r\n markChangesCommitted(prototype: Entity, instance: Entity): void {\r\n this.updateCM(prototype, instance);\r\n }\r\n\r\n /* marked private becase the api is not well tested yet, to avoi */\r\n func(name: string, data: any): Observable<any>;\r\n func(name: string, data: any, entity: Entity): Observable<any>;\r\n func(name: string, data: any, entity: Entity = null): Observable<any> {\r\n var parameters = data;\r\n if (parameters != null) {\r\n parameters = this.toFuncParameterString(data);\r\n }\r\n\r\n if (entity == null) {\r\n return this.xrmService.func(name, parameters);\r\n } else {\r\n return this.xrmService.func(name, parameters, entity._pluralName, entity.id);\r\n }\r\n }\r\n\r\n\r\n action(name: string, data: any): Observable<any>;\r\n action(name: string, data: any, entity: Entity): Observable<any>;\r\n action(name: string, data: any, entity: Entity = null): Observable<any> {\r\n if (entity != null) {\r\n return this.xrmService.action(name, data, entity._pluralName, entity.id);\r\n } else {\r\n return this.xrmService.action(name, data);\r\n }\r\n }\r\n\r\n commit(transaction: XrmTransaction): Observable<null> {\r\n let oprs = transaction[\"oprs\"] as XrmTransactionItem[];\r\n\r\n if (oprs != null && oprs.length > 0) {\r\n this.tick++;\r\n let batch = 'batch_KO' + new Date().valueOf() + \"$\" + this.tick.toString();\r\n let change = 'changeset_KO' + new Date().valueOf() + \"!\" + this.tick.toString();\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"Content-Type\", \"multipart/mixed;boundary=\" + batch);\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n let body = '--' + batch + \"\\n\";\r\n body += \"Content-Type: multipart/mixed;boundary=\" + change + \"\\n\";\r\n body += \"\\n\";\r\n\r\n let count = 1;\r\n oprs.forEach(r => {\r\n r.id = count;\r\n if (r.type == \"put\") {\r\n let nextV = this.preparePutValue(r.prototype, r.field, r.value);\r\n body += '--' + change + \"\\n\";\r\n body += \"Content-Type: application/http\\n\";\r\n body += \"Content-Transfer-Encoding:binary\\n\";\r\n body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n body += \"\\n\";\r\n if (nextV.value != null) {\r\n body += \"PUT \" + this.getContext().$devClientUrl() + r.prototype._pluralName + \"(\" + r.instance.id + \")/\" + nextV.field + \" HTTP/1.1\\n\";\r\n } else {\r\n body += \"DELETE \" + this.getContext().$devClientUrl() + r.instance._pluralName + \"(\" + r.instance.id + \")/\" + nextV.field + \" HTTP/1.1\\n\";\r\n }\r\n\r\n let xr = {};\r\n if (nextV.value != null) {\r\n xr[nextV.propertyAs] = nextV.value;\r\n }\r\n body += \"Content-Type: application/json;type=entry\\n\";\r\n body += \"\\n\";\r\n body += JSON.stringify(xr) + \"\\n\";\r\n }\r\n\r\n if (r.type == \"delete\") {\r\n body += '--' + change + \"\\n\";\r\n body += \"Content-Type: application/http\\n\";\r\n body += \"Content-Transfer-Encoding:binary\\n\";\r\n body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n body += \"\\n\";\r\n body += \"DELETE \" + this.getContext().$devClientUrl() + r.instance._pluralName + \"(\" + r.instance.id + \")\" + \" HTTP/1.1\\n\";\r\n body += \"Content-Type: application/json;type=entry\\n\";\r\n body += \"\\n\";\r\n body += \"{ }\\n\";\r\n }\r\n\r\n if (r.type == \"create\") {\r\n let nextI = this.prepareNewInstance(r.prototype, r.instance);\r\n body += '--' + change + \"\\n\";\r\n body += \"Content-Type: application/http\\n\";\r\n body += \"Content-Transfer-Encoding:binary\\n\";\r\n body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n body += \"\\n\";\r\n body += \"POST \" + this.getContext().$devClientUrl() + r.prototype._pluralName + \" HTTP/1.1\\n\";\r\n body += \"Content-Type: application/json;type=entry\\n\";\r\n body += \"\\n\";\r\n body += JSON.stringify(nextI) + \"\\n\";\r\n }\r\n\r\n if (r.type == \"update\") {\r\n let nextU = this.prepareUpdate(r.prototype, r.instance, false);\r\n if (nextU != null) {\r\n let fields = \"?$select=\" + this.columnBuilder(r.prototype).columns;\r\n\r\n body += '--' + change + \"\\n\";\r\n body += \"Content-Type: application/http\\n\";\r\n body += \"Content-Transfer-Encoding:binary\\n\";\r\n body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n body += \"\\n\";\r\n body += \"PATCH \" + this.getContext().$devClientUrl() + r.prototype._pluralName + \"(\" + r.instance.id + \")\" + fields + \" HTTP/1.1\\n\";\r\n body += \"Content-Type: application/json;type=entry\\n\";\r\n body += \"\\n\";\r\n body += JSON.stringify(nextU) + \"\\n\";\r\n }\r\n }\r\n count++;\r\n });\r\n body += '--' + change + '--\\n';\r\n body += \"\\n\";\r\n body += \"--\" + batch + \"--\\n\";\r\n this.xrmService.log(body);\r\n\r\n let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + \"$batch\";\r\n this.xrmService.log(url);\r\n\r\n\r\n return this.http.post(this.forceHTTPS(url), body, { headers: headers, responseType: \"text\" }).pipe(map(_txt => {\r\n let txt = _txt as string;\r\n this.xrmService.log(txt);\r\n\r\n oprs.forEach(r => {\r\n if (r.type == 'put') {\r\n this.assignValue(r.prototype, r.instance, r.field, r.value);\r\n this.updateCM(r.prototype, r.instance);\r\n }\r\n\r\n if (r.type == 'update') {\r\n this.updateCM(r.prototype, r.instance);\r\n }\r\n\r\n if (r.type == 'delete') {\r\n let key = r.instance._pluralName + ':' + r.instance.id;\r\n delete this.context[key];\r\n delete this.changemanager[key];\r\n }\r\n });\r\n\r\n let index: number = 0;\r\n txt.split('\\n').forEach(l => {\r\n if (l.startsWith('Content-ID:')) {\r\n index = Number(l.split(':')[1].trim());\r\n return true;\r\n }\r\n if (l.startsWith('OData-EntityId:')) {\r\n let opr = oprs.find(o => o.id == index);\r\n\r\n if (opr != null && opr.type == 'create') {\r\n let id = l.split('OData-EntityId:')[1].split('/' + opr.prototype._pluralName + '(')[1].replace(')', '').trim();\r\n opr.instance.id = id;\r\n let key = opr.prototype._pluralName + ':' + opr.instance.id;\r\n this.context[key] = opr.instance;\r\n opr.instance._updateable = true;\r\n this.updateCM(opr.prototype, opr.instance);\r\n }\r\n }\r\n return true;\r\n });\r\n return null;\r\n }));\r\n }\r\n throw 'you must parse at least one operation to the transaction by calling put, create, update or delete';\r\n }\r\n\r\n\r\n log(type: string): void {\r\n if (type == 'context') {\r\n this.xrmService.log(this.context);\r\n return;\r\n }\r\n\r\n if (type == 'xrmcontext') {\r\n this.xrmService.log(this.getContext());\r\n return;\r\n }\r\n\r\n if (type == 'url') {\r\n this.xrmService.log(this.getContext().getClientUrl());\r\n }\r\n\r\n if (type == 'version') {\r\n this.xrmService.log(this.getContext().getVersion());\r\n }\r\n\r\n this.xrmService.log('xrmContextService supported the current log types: context, xrmcontext, url, version');\r\n }\r\n\r\n clone(prototype: Entity, instance: Entity): Entity {\r\n let r = new Entity(prototype._pluralName, prototype._keyName);\r\n for (let prop in prototype) {\r\n if (prototype.ignoreColumn(prop)) continue;\r\n\r\n let pv = prototype[prop];\r\n if (typeof pv == 'function') {\r\n r[prop] = pv;\r\n continue;\r\n }\r\n\r\n let v = instance[prop];\r\n\r\n if (v == null) {\r\n r[prop] = null;\r\n continue;\r\n }\r\n\r\n if (v instanceof Date) {\r\n r[prop] = new Date(v.valueOf());\r\n continue;\r\n }\r\n\r\n if (v instanceof EntityReference) {\r\n r[prop] = v.clone();\r\n continue;\r\n }\r\n\r\n if (v instanceof OptionSetValue) {\r\n r[prop] = v.clone();\r\n continue;\r\n }\r\n\r\n if (v != null) {\r\n r[prop] = v;\r\n }\r\n }\r\n r.id = null;\r\n this.xrmService.log('clone');\r\n this.xrmService.log(r);\r\n\r\n return r;\r\n }\r\n\r\n applyAccess(prototype: Entity, instance: Entity): Observable<Entity> {\r\n if (!prototype.hasOwnProperty('access')) throw 'The metadata must define a property \"access\" of type XrmAccess';\r\n\r\n if (instance.hasOwnProperty('access') && instance['access']['resolved']) {\r\n return Observable.create(obs => obs.next(instance));\r\n }\r\n\r\n return this.mapAccess(prototype, instance);\r\n }\r\n\r\n private prepareUpdate(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean): any {\r\n let me = this;\r\n let upd = {\r\n }\r\n\r\n let countFields = 0;\r\n\r\n let key = instance._pluralName + ':' + instance.id;\r\n let cm = this.changemanager[key];\r\n if (typeof cm === 'undefined' || cm === null) {\r\n throw 'the object is not under change control and cannot be updated within this context';\r\n }\r\n\r\n for (let prop in prototype) {\r\n if (prototype.hasOwnProperty(prop) && typeof prototype[prop] != 'function') {\r\n if (prototype.ignoreColumn(prop)) continue;\r\n let prevValue = cm[prop];\r\n let newValue = instance[prop];\r\n\r\n if ((prevValue === 'undefined' || prevValue === null) && (newValue === 'undefined' || newValue === null)) continue;\r\n\r\n if (instance[prop] instanceof EntityReference) {\r\n if (instance[prop].associatednavigationproperty != null && instance[prop].associatednavigationproperty != '' && instance[prop]['pluralName'] != null && instance[prop]['pluralName'] != '') {\r\n if (!EntityReference.same(prevValue, newValue)) {\r\n if (deletedReferenceAsEmptyGuid && newValue != null && (newValue[\"id\"] == null || newValue[\"id\"] == '')) {\r\n newValue[\"id\"] = XRMCONTEXTSERVICE_EMPTY_GUID;\r\n }\r\n\r\n if (newValue != null && newValue[\"id\"] != null && newValue[\"id\"] != '') {\r\n let x = newValue[\"id\"] as string;\r\n x = x.replace('{', '').replace('}', '');\r\n upd[instance[prop]['associatednavigationpropertyname']()] = '/' + instance[prop]['pluralName'] + '(' + x + ')';\r\n } else {\r\n // this does not work, navigation properties can only be removed with SDK deleted method\r\n upd[\"_\" + instance[prop]['logicalname'].toLowerCase() + \"_value\"] = null;\r\n }\r\n countFields++;\r\n }\r\n continue;\r\n }\r\n }\r\n\r\n if (prototype[prop] instanceof EntityReference) {\r\n if (!EntityReference.same(prevValue, newValue)) {\r\n if ((newValue == null || newValue[\"id\"] == null || newValue[\"id\"] == \"\") && deletedReferenceAsEmptyGuid) {\r\n newValue[\"id\"] = XRMCONTEXTSERVICE_EMPTY_GUID;\r\n }\r\n\r\n if (newValue != null && newValue[\"id\"] != null && newValue[\"id\"] != '') {\r\n let x = newValue[\"id\"] as string;\r\n x = x.replace('{', '').replace('}', '');\r\n upd[prototype[prop]['associatednavigationpropertyname']()] = '/' + prototype[prop]['pluralName'] + '(' + x + ')';\r\n } else {\r\n upd[\"_\" + instance[prop]['logicalname'].toLowerCase() + \"_value\"] = null;\r\n }\r\n countFields++;\r\n }\r\n continue;\r\n }\r\n\r\n if (prototype[prop] instanceof OptionSetValue) {\r\n if (!OptionSetValue.same(prevValue, newValue)) {\r\n let o = newValue as OptionSetValue;\r\n if (o == null || o.value == null) {\r\n upd[prop.toString()] = null;\r\n } else {\r\n upd[prop.toString()] = o.value;\r\n }\r\n countFields++;\r\n }\r\n continue;\r\n }\r\n\r\n if (prototype[prop] instanceof Date) {\r\n if (prevValue instanceof Date && newValue instanceof Date) {\r\n var d1 = (prevValue as Date).toISOString();\r\n var d2 = (newValue as Date).toISOString();\r\n\r\n if (d1 == d2) {\r\n continue;\r\n }\r\n }\r\n\r\n if (prevValue != newValue) {\r\n\r\n this.xrmService.log('pre-value-update-date:[' + prevValue + ']/[' + newValue + ']' );\r\n if (newValue == null) {\r\n upd[prop.toString()] = null;\r\n } else {\r\n if (newValue instanceof Date) {\r\n let d = newValue as Date;\r\n var sValue = d.toISOString();\r\n if (sValue.indexOf(\"T00:00:00.000Z\") > 0) {\r\n sValue = sValue.replace(\"T00:00:00.000Z\", \"\");\r\n }\r\n upd[prop.toString()] = sValue;\r\n } else {\r\n upd[prop.toString()] = newValue;\r\n }\r\n }\r\n countFields++;\r\n }\r\n continue;\r\n }\r\n\r\n if (typeof prototype[prop] == \"number\") {\r\n if (typeof newValue == \"string\") {\r\n if (newValue == \"\") {\r\n newValue = null;\r\n } else {\r\n newValue = Number(newValue);\r\n if (newValue == NaN) {\r\n newValue = prevValue;\r\n }\r\n }\r\n }\r\n\r\n if (prevValue != newValue) {\r\n upd[prop.toString()] = newValue;\r\n countFields++;\r\n }\r\n continue;\r\n }\r\n\r\n if (prevValue === true && newValue === true) {\r\n continue;\r\n }\r\n\r\n if (prevValue === false && newValue === false) {\r\n continue;\r\n }\r\n\r\n if (prevValue != newValue) {\r\n this.xrmService.log('pre-value-update:' + prop);\r\n this.xrmService.log(prevValue);\r\n\r\n this.xrmService.log('new-value-update:' + prop);\r\n this.xrmService.log(newValue);\r\n\r\n upd[prop.toString()] = instance[prop];\r\n countFields++;\r\n }\r\n }\r\n }\r\n\r\n if (countFields > 0) {\r\n return upd;\r\n }\r\n return null;\r\n }\r\n\r\n /*\r\n * return an object that has been adjusted to patterns used in a webapi POST method. This is convinient in\r\n * combination with actions that uses parameters of type Entity, so the entity ex.\r\n */\r\n\r\n getCreatePayload(prototype: Entity, instance: Entity): any {\r\n return this.prepareNewInstance(prototype, instance);\r\n }\r\n\r\n /* \r\n * return an object that has been adjused to pattern used in webapi PATCH method, for entity update. Only fields\r\n * that has actually changed will be present in the return instance\r\n */\r\n getUpdatePayload(prototype: Entity, instance: Entity): any\r\n getUpdatePayload(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean): any\r\n getUpdatePayload(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean = false): any {\r\n var next = this.prepareUpdate(prototype, instance, deletedReferenceAsEmptyGuid);\r\n\r\n if (next != null) {\r\n next[prototype._keyName] = instance.id;\r\n next[\"@odata.type\"] = \"Microsoft.Dynamics.CRM.\" + prototype._logicalName;\r\n }\r\n\r\n return next;\r\n }\r\n\r\n hasChanges(prototype: Entity, instance: Entity): boolean\r\n hasChanges(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean): boolean\r\n hasChanges(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean = false): boolean {\r\n return this.prepareUpdate(prototype, instance, deletedReferenceAsEmptyGuid) != null;\r\n }\r\n\r\n getEntityCollectionPayload(prototype: Entity, instances: Entity[]): any[] {\r\n let result = [];\r\n\r\n instances.forEach(e => {\r\n let next = this.prepareNewInstance(prototype, e);\r\n\r\n if (e.id != null && e.id != '') {\r\n next[prototype._keyName] = e.id;\r\n }\r\n\r\n next[\"@odata.type\"] = \"Microsoft.Dynamics.CRM.\" + prototype._logicalName;\r\n result.push(next);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private resolveAccess(prototype: Entity, instance: Entity) {\r\n var user = this.getContext().getUserId();\r\n if (user == null || user == '') {\r\n setTimeout(() => {\r\n this.resolveAccess(prototype, instance);\r\n }, 200);\r\n return;\r\n }\r\n\r\n this.mapAccess(prototype, instance).subscribe(r => { });\r\n }\r\n\r\n private mapAccess(prototype: Entity, instance: Entity): Observable<Entity> {\r\n if (!prototype.hasOwnProperty('access') || !(prototype['access'] instanceof XrmAccess)) {\r\n return null;\r\n }\r\n\r\n if (!instance.hasOwnProperty('access')) {\r\n instance['access'] = new XrmAccess();\r\n } else {\r\n let r = instance['access'] as XrmAccess;\r\n if (r.resolved != null) {\r\n return null;\r\n }\r\n }\r\n\r\n var user = this.getContext().getUserId().replace('{', '').replace('}','');\r\n\r\n let r = instance['access'] as XrmAccess;\r\n r.resolved = false;\r\n\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + \"systemusers(\" + user + \")/Microsoft.Dynamics.CRM.RetrievePrincipalAccess(Target=@tid)?@tid={\\\"@odata.id\\\":\\\"\" + prototype._pluralName + \"(\" + instance.id + \")\\\"}\";\r\n this.xrmService.log(url);\r\n\r\n let _ta = instance['access'] as XrmAccess;\r\n _ta.resolved = null;\r\n\r\n return this.http.get(this.forceHTTPS(url), { headers: headers }).pipe(\r\n map(r => {\r\n this.xrmService.log(r);\r\n let i = instance['access'] as XrmAccess;\r\n let perm = r[\"AccessRights\"] as string;\r\n // ReadAccess, WriteAccess, AppendAccess, AppendToAccess, CreateAccess, DeleteAccess, ShareAccess, AssignAccess\r\n i.append = perm.indexOf('AppendAccess') >= 0;\r\n i.appendTo = perm.indexOf('AppendToAccess') >= 0\r\n i.assign = perm.indexOf('AssignAccess') >= 0;\r\n i.create = perm.indexOf('CreateAccess') >= 0;\r\n i.delete = perm.indexOf('DeleteAccess') >= 0;\r\n i.read = perm.indexOf('ReadAccess') >= 0;\r\n i.share = perm.indexOf('ShareAccess') >= 0;\r\n i.write = perm.indexOf('WriteAccess') >= 0;\r\n i.resolved = true;\r\n return instance;\r\n })\r\n );\r\n }\r\n\r\n private preparePutValue(prototype: Entity, field: string, value: any): any {\r\n let t = prototype[field];\r\n\r\n if (t instanceof OptionSetValue) {\r\n if (value == null || value['value'] == null) {\r\n return { field: field, value: null, propertyAs: 'value' };\r\n } else {\r\n return { field: field, value: value['value'], propertyAs: 'value' };\r\n }\r\n }\r\n\r\n if (typeof t == 'number' && typeof value == 'string') {\r\n if (value == '') {\r\n value = null;\r\n } else {\r\n value = Number(value);\r\n if (value == NaN) {\r\n value = null;\r\n }\r\n }\r\n }\r\n\r\n if (typeof t == 'number' && typeof value == 'number') {\r\n if (value == null) {\r\n return { field: field, value: null, propertyAs: null };\r\n } else {\r\n // this is a really really stupid hack, because dynamics do not accept Integer for decimal fields, so we force \r\n // a decimal position into the value before it is send.\r\n let rv = value + t;\r\n return { field: field, value: rv, propertyAs: 'value' };\r\n }\r\n }\r\n\r\n if (t instanceof EntityReference) {\r\n field = t.associatednavigationpropertyname().split('@')[0] + \"/$ref\";\r\n\r\n if (value.id == null || value.id == '') {\r\n return { field: field, value: null, propertyAs: '@odata.id', isDefault: false };\r\n } else {\r\n return { field: field, value: this.getContext().$devClientUrl() + t.pluralName + \"(\" + value.id + \")\", propertyAs: '@odata.id', isdecimal: false };\r\n }\r\n }\r\n\r\n if (value instanceof Date) {\r\n return { field: field, value: value.toISOString(), propertyAs: 'value' };\r\n }\r\n\r\n return { field: field, value: value, propertyAs: 'value' };\r\n }\r\n\r\n private prepareNewInstance(prototype: Entity, instance: Entity): any {\r\n let newr = {};\r\n\r\n for (let prop in prototype) {\r\n if (prototype.hasOwnProperty(prop) && typeof prototype[prop] !== 'function') {\r\n if (prototype.ignoreColumn(prop)) continue;\r\n\r\n let value = instance[prop];\r\n if (value !== 'undefined' && value !== null) {\r\n\r\n if (instance[prop] instanceof EntityReference) {\r\n if (instance[prop].associatednavigationproperty != null && instance[prop].associatednavigationproperty != '' && instance[prop]['pluralName'] != null && instance[prop]['pluralName'] != '') {\r\n let ref = instance[prop] as EntityReference;\r\n if (ref != null && ref.id != null) {\r\n newr[instance[prop]['associatednavigationpropertyname']()] = '/' + instance[prop]['pluralName'] + '(' + ref.id.replace('{', '').replace('}', '') + ')';\r\n }\r\n continue;\r\n }\r\n }\r\n\r\n if (prototype[prop] instanceof EntityReference) {\r\n let ref = instance[prop] as EntityReference;\r\n if (ref != null && ref.id != null) {\r\n newr[prototype[prop]['associatednavigationpropertyname']()] = '/' + prototype[prop]['pluralName'] + '(' + ref.id.replace('{', '').replace('}', '') + ')';\r\n }\r\n continue;\r\n }\r\n\r\n if (prototype[prop] instanceof OptionSetValue) {\r\n let o = instance[prop] as OptionSetValue;\r\n if (o != null && o.value != null) {\r\n newr[prop.toString()] = o.value;\r\n }\r\n continue;\r\n }\r\n\r\n if (prototype[prop] instanceof Date) {\r\n let d = value as Date;\r\n if (d != null) {\r\n newr[prop.toString()] = d.toISOString();\r\n }\r\n continue;\r\n }\r\n\r\n if (typeof prototype[prop] == \"number\") {\r\n if (typeof value == \"string\") {\r\n if (value == \"\") {\r\n continue;\r\n }\r\n value = Number(value);\r\n if (value == NaN) {\r\n continue; \r\n }\r\n }\r\n\r\n newr[prop.toString()] = value;\r\n continue;\r\n }\r\n\r\n newr[prop.toString()] = instance[prop];\r\n }\r\n }\r\n }\r\n return newr;\r\n }\r\n\r\n private assignValue(prototype: Entity, instance: Entity, prop: string, value: any) {\r\n if (value != null) {\r\n instance[prop] = value;\r\n return;\r\n }\r\n\r\n let t = prototype[prop];\r\n if (t instanceof EntityReference) {\r\n instance[prop] = t.clone();\r\n return;\r\n }\r\n\r\n if (t instanceof OptionSetValue) {\r\n instance[prop] = new OptionSetValue();\r\n return;\r\n }\r\n\r\n instance[prop] = null;\r\n }\r\n\r\n private $expandToExpand(prop: ExpandProperty): Expand {\r\n if (prop != null) {\r\n let result = new Expand();\r\n result.name = prop.name;\r\n result.select = this.columnBuilder(prop.entity).columns;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n private resolveFetchResult<T extends Entity>(prototype: T, response: any, top: number, pages: string[], pageIndex: number, fetchXml: Fetchxml): XrmQueryResult<T> {\r\n let me = this;\r\n var result = this.resolveQueryResult(prototype, response, top, pages, pageIndex, fetchXml.entity().aliasWithAttributes());\r\n\r\n var pageCookie = response[\"@Microsoft.Dynamics.CRM.fetchxmlpagingcookie\"] as string;\r\n if (pageCookie != null && pageCookie != '') {\r\n\r\n this.xrmService.log('page-cookie');\r\n this.xrmService.log(pageCookie);\r\n\r\n var fragment = decodeURIComponent(decodeURIComponent(pageCookie.match(this.pageCookieMatch)[0].substring(14)));\r\n fragment = fragment.replace(/&/g,\"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\\\"/g, \""\");\r\n\r\n this.xrmService.log(\"page-cookie-fragment\");\r\n this.xrmService.log(fragment);\r\n\r\n let fetchxml = fetchXml.toFetchXml(fragment, pageIndex + 2);\r\n result.nextLink = this.getContext().getClientUrl() + this.xrmService.apiUrl + prototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n result.next = (): Observable<XrmQueryResult<T>> => {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n return this.http.get(this.forceHTTPS(result.nextLink), options).pipe(map(response => {\r\n pages.push(result.nextLink);\r\n let re = me.resolveFetchResult<T>(prototype, response, top, pages, (pageIndex + 1), fetchXml);\r\n return re;\r\n }));\r\n }\r\n\r\n if (pageIndex >= 1) {\r\n result.prev = (): Observable<XrmQueryResult<T>> => {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n let lastPage = result.pages[result.pageIndex - 1];\r\n return me.http.get(me.forceHTTPS(lastPage), options).pipe(map(r => {\r\n result.pages.splice(result.pages.length - 1, 1);\r\n let pr = me.resolveFetchResult<T>(prototype, r, top, result.pages, result.pageIndex - 1, fetchXml);\r\n return pr;\r\n }));\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private resolveQueryResult<T extends Entity>(prototype: T, response: any, top: number, pages: string[], pageIndex: number, alias: string[]): XrmQueryResult<T> {\r\n let me = this;\r\n let result = {\r\n context: response[\"@odata.context\"],\r\n count: response[\"@odata.count\"],\r\n value: [],\r\n pages: pages,\r\n pageIndex: pageIndex,\r\n top: top,\r\n nextLink: null,\r\n prev: null,\r\n next: null\r\n }\r\n\r\n let vals = response[\"value\"] as T[];\r\n vals.forEach(r => {\r\n result.value.push(me.resolve(prototype, r, prototype._updateable, alias));\r\n });\r\n\r\n let nextLink = response[\"@odata.nextLink\"] as string;\r\n\r\n if (nextLink != null && nextLink != '') {\r\n let start = nextLink.indexOf('/api');\r\n nextLink = me.getContext().getClientUrl() + nextLink.substring(start);\r\n result = {\r\n context: result.context,\r\n count: result.count,\r\n value: result.value,\r\n pages: pages,\r\n pageIndex: pageIndex,\r\n top: top,\r\n nextLink: nextLink,\r\n prev: null,\r\n next: (): Observable<XrmQueryResult<T>> => {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n if (top > 0) {\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\",odata.maxpagesize=\" + top.toString());\r\n } else {\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n }\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n return me.http.get(me.forceHTTPS(nextLink), options).pipe(map(r => {\r\n pages.push(nextLink);\r\n let pr = me.resolveQueryResult<T>(prototype, r, top, pages, pageIndex + 1, alias);\r\n return pr;\r\n }));\r\n }\r\n }\r\n }\r\n\r\n if (result.pageIndex >= 1) {\r\n result.prev = (): Observable<XrmQueryResult<T>> => {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n if (this.xrmService.token != null) {\r\n headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n }\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n if (top > 0) {\r\n headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n } else {\r\n }\r\n headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n let lastPage = result.pages[result.pageIndex - 1];\r\n return me.http.get(me.forceHTTPS(lastPage), options).pipe(map(r => {\r\n result.pages.splice(result.pages.length - 1, 1);\r\n let pr = me.resolveQueryResult<T>(prototype, r, top, result.pages, result.pageIndex - 1, alias);\r\n return pr;\r\n }));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private resolveNewInstance<T extends Entity>(prototype: T, instance: any, result: any): void {\r\n let key = prototype._pluralName + ':' + instance[prototype._keyName];\r\n instance[\"id\"] = result[prototype._keyName];\r\n instance[\"_pluralName\"] = prototype._pluralName;\r\n instance[\"_logicalName\"] = prototype._logicalName;\r\n instance[\"_keyName\"] = prototype._keyName;\r\n this.context[key] = instance;\r\n }\r\n\r\n private resolve<T extends Entity>(prototype: T, instance: any, updateable: boolean, alias: string[]): T {\r\n let me = this;\r\n\r\n this.xrmService.log(instance);\r\n\r\n let key = prototype._pluralName + ':' + instance[prototype._keyName];\r\n let result = {} as any;\r\n\r\n if (this.context.hasOwnProperty(key)) {\r\n result = this.context[key];\r\n } else {\r\n this.context[key] = result;\r\n result[\"id\"] = instance[prototype._keyName];\r\n result[\"_pluralName\"] = prototype._pluralName;\r\n result[\"_logicalName\"] = prototype._logicalName;\r\n result[\"_keyName\"] = prototype._keyName;\r\n delete result[prototype._keyName];\r\n }\r\n\r\n if (this.includeOriginalPayload$) {\r\n result[\"_original$\"] = instance;\r\n } else {\r\n if (result.hasOwnProperty(\"_original$\")) {\r\n delete result[\"_original$\"];\r\n }\r\n }\r\n\r\n result['_updateable'] = updateable;\r\n\r\n for (let prop in prototype) {\r\n if (prototype.ignoreColumn(prop)) continue;\r\n\r\n if (prototype.hasOwnProperty(prop) && typeof prototype[prop] != 'function') {\r\n let done = false;\r\n if (prototype[prop] instanceof EntityReference) {\r\n let ref = new EntityReference();\r\n let id = instance[\"_\" + prop + \"_value\"] as string;\r\n if (id != null && id != 'undefined') {\r\n ref.id = id.toLowerCase();\r\n delete result[\"_\" + prop + \"_value\"];\r\n\r\n ref.logicalname = instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.lookuplogicalname\"];\r\n delete instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.lookuplogicalname\"];\r\n\r\n ref.name = instance[\"_\" + prop + \"_value@OData.Community.Display.V1.FormattedValue\"];\r\n delete instance[\"_\" + prop + \"_value@OData.Community.Display.V1.FormattedValue\"];\r\n\r\n ref.associatednavigationproperty = instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.associatednavigationproperty\"];\r\n delete instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.associatednavigationproperty\"];\r\n }\r\n result[prop] = ref;\r\n done = true;\r\n }\r\n\r\n if (!done && prototype[prop] instanceof OptionSetValue) {\r\n let opt = new OptionSetValue();\r\n opt.value = instance[prop];\r\n opt.name = instance[prop + '@OData.Community.Display.V1.FormattedValue'];\r\n result[prop] = opt;\r\n done = true;\r\n }\r\n\r\n if (!done && prototype[prop] instanceof Date) {\r\n let v = instance[prop];\r\n if (v != null && v != '') {\r\n result[prop] = new Date(Date.parse(v));\r\n } else {\r\n result[prop] = null;\r\n }\r\n\r\n done = true;\r\n }\r\n\r\n if (!done) {\r\n result[prop] = instance[prop];\r\n done = true;\r\n }\r\n }\r\n }\r\n\r\n var names = Object.getOwnPropertyNames(Object.getPrototypeOf(prototype));\r\n names.forEach(r => {\r\n if (r != 'constructor' && typeof prototype[r] === 'function') {\r\n result[r] = prototype[r];\r\n }\r\n });\r\n\r\n let eps = this.getExpandProperties(prototype);\r\n\r\n if (eps != null && eps.length > 0) {\r\n\r\n eps.forEach(ep => {\r\n if (ep != null) {\r\n if (ep.isArray) {\r\n let _v = instance[ep.name];\r\n if (_v != null && Array.isArray(_v)) {\r\n let _tmp = [];\r\n _v.forEach(_r => {\r\n _tmp.push(me.resolve(ep.entity, _r, false, alias));\r\n });\r\n result[ep.name] = _tmp;\r\n if (ep.value instanceof Entities) {\r\n _tmp[\"add\"] = ep.value[\"add\"];\r\n _tmp[\"remove\"] = ep.value[\"remove\"];\r\n _tmp[\"xrmService\"] = this.xrmService;\r\n _tmp[\"parentType\"] = prototype._pluralName;\r\n _tmp[\"parentId\"] = result[\"id\"];\r\n _tmp[\"childType\"] = ep.value[\"childType\"];\r\n _tmp[\"refName\"] = ep.value[\"refName\"];\r\n _tmp[\"leftToRight\"] = ep.value[\"leftToRight\"];\r\n }\r\n }\r\n } else {\r\n let _v = instance[ep.name];\r\n if (_v != null) {\r\n result[ep.name] = this.resolve(ep.entity, _v, false, alias);\r\n result[ep.name]['_keyName'] = ep.entity._keyName;\r\n result[ep.name]['_pluralName'] = ep.entity._pluralName;\r\n result[ep.name]['_logicalName'] = ep.entity._logicalName;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (alias != null && alias.length > 0) {\r\n alias.forEach(a => {\r\n for (var p in result) {\r\n if (p.startsWith(a + \".\")) {\r\n delete result[p];\r\n }\r\n }\r\n for (var p in instance) {\r\n if (p.startsWith(a + '.')) {\r\n result[p] = instance[p];\r\n }\r\n }\r\n })\r\n }\r\n\r\n if (result['onFetch'] !== 'undefined' && result[\"onFetch\"] != null && typeof result[\"onFetch\"] === 'function') {\r\n result['onFetch']();\r\n }\r\n\r\n if (prototype.hasOwnProperty('access') && !prototype['access']['lazy']) {\r\n if (!result.hasOwnProperty('access') || result.access.resolved == null) {\r\n this.resolveAccess(prototype, result);\r\n }\r\n }\r\n\r\n if (updateable) {\r\n this.updateCM(prototype, result);\r\n }\r\n\r\n return result as T;\r\n }\r\n\r\n\r\n private updateCM(prototype: any, instance: any): void {\r\n let key = prototype._pluralName + ':' + instance['id'];\r\n let change = {};\r\n\r\n this.xrmService.log('Adding to cm ' + key);\r\n\r\n this.changemanager[key] = change;\r\n\r\n for (let prop in prototype) {\r\n if (prototype.ignoreColumn(prop)) continue;\r\n if (prototype.hasOwnProperty(prop) && typeof prototype[prop] != 'function') {\r\n let v = instance[prop];\r\n if (v == null) continue;\r\n\r\n let done = false;\r\n\r\n if (v instanceof EntityReference) {\r\n change[prop] = v.clone();\r\n done = true;\r\n }\r\n\r\n if (!done && v instanceof OptionSetValue) {\r\n change[prop] = v.clone();\r\n done = true;\r\n }\r\n\r\n if (!done && v instanceof Date) {\r\n\r\n change[prop] = new Date(v.valueOf());\r\n done = true;\r\n }\r\n\r\n if (!done) {\r\n change[prop] = v;\r\n done = true;\r\n }\r\n }\r\n }\r\n this.xrmService.log(change);\r\n }\r\n\r\n private columnBuilder(entity: Entity): ColumnBuilder {\r\n let result = new ColumnBuilder();\r\n var columns = entity.columns(true);\r\n result.columns = columns.join(\",\")\r\n result.hasEntityReference = columns.filter(r => r.startsWith(\"_\") && r.endsWith(\"_value\")).length > 0;\r\n return result;\r\n }\r\n\r\n private getExpandProperties(entity: Entity): ExpandProperty[] {\r\n var result = [];\r\n for (var prop in entity) {\r\n if (prop == entity._keyName) continue;\r\n if (entity.ignoreColumn(prop)) continue;\r\n\r\n let _v = entity[prop];\r\n if (Array.isArray(_v)) {\r\n if (_v.length > 0) {\r\n let pt = _v[0] as Entity;\r\n result.push({\r\n name: prop,\r\n entity: pt,\r\n isArray: true,\r\n value: _v\r\n });\r\n }\r\n } else {\r\n if (_v instanceof Entity) {\r\n result.push({\r\n name: prop,\r\n entity: _v,\r\n isArray: false,\r\n value: _v\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private toFuncParameterString(pam: any): string {\r\n if (typeof pam === \"string\") return pam;\r\n\r\n let r = '(';\r\n var ix = 1;\r\n var cm = '';\r\n for (var p in pam) {\r\n if (pam.hasOwnProperty(p)) {\r\n r += cm + p + \"=@p\" + ix;\r\n ix++;\r\n cm = ',';\r\n }\r\n }\r\n r += ')';\r\n\r\n ix = 1;\r\n cm = '?';\r\n for (var p in pam) {\r\n if (pam.hasOwnProperty(p)) {\r\n r += cm + '@p' + ix + \"=\";\r\n\r\n ix++;\r\n cm = \"&\";\r\n\r\n\r\n var v = pam[p];\r\n\r\n if (v == null) {\r\n v = '';\r\n r += v;\r\n continue;\r\n }\r\n\r\n\r\n var valueWrapper = v[\"functionPropertyValueAsString\"];\r\n if (valueWrapper != null) {\r\n r += valueWrapper.call(v);\r\n continue;\r\n }\r\n\r\n if (v.hasOwnProperty(\"toJsonProperty\")) {\r\n v = v[\"toJsonProperty\"]();\r\n }\r\n\r\n if (v instanceof Date) {\r\n r += v.toISOString();\r\n continue;\r\n }\r\n\r\n if (typeof v === \"number\") {\r\n r += v.toString();\r\n continue;\r\n }\r\n\r\n if (typeof v === \"boolean\") {\r\n r += v ? \"true\" : \"false\";\r\n continue;\r\n }\r\n\r\n if (typeof v === \"string\") {\r\n r += \"'\" + v + \"'\";\r\n continue;\r\n }\r\n\r\n r += JSON.stringify(this.transform(v));\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n private transform(input: any): any {\r\n var transformed = false;\r\n var result = {};\r\n\r\n for (var pam in input) {\r\n if (input.hasOwnProperty(pam)) {\r\n var value = input[pam];\r\n if (value != null && value.hasOwnProperty(\"toJsonProperty\")) {\r\n result[pam] = value[\"toJsonProperty\"]();\r\n transformed = true;\r\n } else {\r\n result[pam] = value;\r\n }\r\n }\r\n }\r\n\r\n if (!transformed) {\r\n return input;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private forceHTTPS(v: string): string {\r\n return this.xrmService.forceHTTPS(v);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { XrmService, XrmQueryResult } from './xrm.service';\r\nimport { XrmContextService, Entity, OptionSetValue, Condition, Comparator } from './xrmcontext.service';\r\n\r\nexport class LabelMeta {\r\n Label: string;\r\n LanguageCode: number;\r\n IsManaged: boolean;\r\n MetadataId: string;\r\n HasChanged: boolean;\r\n}\r\n\r\nexport class DisplayNameMeta {\r\n LocalizedLabels: LabelMeta[];\r\n UserLocalizedLabel: LabelMeta;\r\n}\r\n\r\nexport class EntityMeta extends Entity {\r\n constructor() {\r\n super(\"EntityDefinitions\", \"MetadataId\");\r\n }\r\n\r\n DisplayName: LabelMeta = null;\r\n LogicalName: string = null;\r\n ObjectTypeCode: number = null;\r\n SchemaName: string = null;\r\n LogicalCollectionName: string = null;\r\n IsActivity: boolean = null;\r\n IsActivityParty: boolean = null;\r\n Attributes: AttributeMeta[] = null;\r\n\r\n OneToManyRelations: OneToManyRelationship[];\r\n ManyToManyRelations: ManyToManyRelationship[];\r\n\r\n meta(): EntityMeta {\r\n this.Attributes = [new AttributeMeta()];\r\n return this;\r\n }\r\n}\r\n\r\nexport class AttributeMeta extends Entity {\r\n constructor() {\r\n super(\"Attributes\", \"MetadataId\")\r\n }\r\n AttributeType: string = null;\r\n DisplayName: LabelMeta = null;\r\n LogicalName: string = null;\r\n Description: LabelMeta = null;\r\n SchemaName: string = null;\r\n\r\n // virtual properties for ui purpose\r\n selected: boolean;\r\n Lookup: LookupAttribute;\r\n\r\n onFetch() {\r\n this.selected = false;\r\n }\r\n}\r\n\r\nexport class OneToManyRelationship {\r\n MetadataId: string = null;\r\n RelationshipType: number = null;\r\n SchemaName: string = null;\r\n ReferencedAttribute: string = null;\r\n ReferencingAttribute: string = null;\r\n ReferencedEntity: string = null;\r\n ReferencingEntity: string = null;\r\n ReferencingEntityNavigationPropertyName: string;\r\n}\r\n\r\nexport class ManyToManyRelationship {\r\n MetadataId: string = null;\r\n Entity1LogicalName: string = null;\r\n Entity1NavigationPropertyName: string = null;\r\n Entity2LogicalName: string = null;\r\n Entity2NavigationPropertyName: string = null;\r\n SchemaName: string = null;\r\n RelationshipType: string = null;\r\n Other: string = null;\r\n OtherSchemaName: string = null;\r\n Entity1LogicalCollectionName: string = null;\r\n Entity2LogicalCollectionName: string = null;\r\n}\r\n\r\nexport class LookupAttribute {\r\n Targets: string[];\r\n LogicalName: string;\r\n SchemaName: string;\r\n}\r\n\r\ninterface IAttributeOptionsetMetaResult {\r\n value: AttributeOptionsetMeta[];\r\n}\r\n\r\nexport class AttributeOptionsetMeta {\r\n public LogicalName: string | undefined;\r\n public MetadataId: string | undefined;\r\n public OptionSet: OptionSetMeta | undefined;\r\n}\r\n\r\nclass OptionSetMeta {\r\n public Options: OptionSetMetaValue[] | undefined;\r\n\r\n}\r\n\r\nclass OptionSetMetaValue {\r\n public Value: number | undefined;\r\n public Label: OptionsetLabelMeta | undefined;\r\n}\r\n\r\n\r\nclass OptionsetLabelMeta {\r\n public UserLocalizedLabel: OptionsetLabel | undefined;\r\n public LocalizedLabels: OptionsetLabel[] | undefined;\r\n}\r\n\r\n\r\n\r\nclass OptionsetLabel {\r\n public Label: string | undefined;\r\n public LanguageCode: number | undefined;\r\n public MetadataId: string | undefined;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class XrmMetadataService {\r\n private searchEntityMetaPrototype = new EntityMeta();\r\n private getEntityMetaPrototype = new EntityMeta().meta();\r\n\r\n constructor(private http: HttpClient, private xrmService: XrmContextService) { }\r\n\r\n search(name: string): Observable<XrmQueryResult<EntityMeta>>;\r\n search(name: string, unique: boolean): Observable<XrmQueryResult<EntityMeta>>;\r\n search(name: string, unique: boolean = false): Observable<XrmQueryResult<EntityMeta>> {\r\n let con = new Condition();\r\n if (!unique) {\r\n con\r\n .where(\"LogicalCollectionName\", Comparator.ContainsData)\r\n .where(\"LogicalName\", Comparator.ContainsData);\r\n } else {\r\n con.where(\"LogicalName\", Comparator.Equals, name);\r\n }\r\n\r\n return this.xrmService.query(this.searchEntityMetaPrototype, con).pipe(map(_r => {\r\n let r = _r as XrmQueryResult<EntityMeta>;\r\n if (name != null && name != '') {\r\n let _s = name.toLowerCase();\r\n let ma: EntityMeta[] = [];\r\n // Metadata api does not support contains - therefore client site filter\r\n r.value.forEach(e => {\r\n if (e != null && e.LogicalName != null && e.LogicalName.toLowerCase().indexOf(_s) >= 0) {\r\n ma.push(e);\r\n }\r\n });\r\n r.value = ma;\r\n }\r\n\r\n r.value = r.value.sort((a, b) => a.LogicalName.toLowerCase().localeCompare(b.LogicalName.toLowerCase()))\r\n return _r;\r\n }));\r\n }\r\n\r\n get(id: string): Observable<EntityMeta> {\r\n return this.xrmService.get<EntityMeta>(this.getEntityMetaPrototype, id).pipe(map(_r => {\r\n let r = _r as EntityMeta;\r\n if (r.Attributes != null && r.Attributes.length > 0) {\r\n r.Attributes = r.Attributes.sort((a, b) => {\r\n if (a.LogicalName == null && b.LogicalName != null) return 1;\r\n if (a.LogicalName != null && b.LogicalName == null) return -1;\r\n if (a.LogicalName == null && b.LogicalName == null) return 0;\r\n return a.LogicalName.toLowerCase().localeCompare(b.LogicalName.toLowerCase())\r\n })\r\n }\r\n return r;\r\n }));\r\n }\r\n\r\n getManyToManyRelationships(entity: EntityMeta): Observable<EntityMeta> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n return this.http.get(this.xrmService.getServiceUrl() + 'EntityDefinitions(' + entity.id + ')' + '/ManyToManyRelationships?$select=MetadataId,Entity1LogicalName,Entity1NavigationPropertyName,Entity2LogicalName,Entity2NavigationPropertyName,SchemaName,RelationshipType', options)\r\n .pipe(map(response => {\r\n entity.ManyToManyRelations = response[\"value\"] as ManyToManyRelationship[];\r\n\r\n entity.ManyToManyRelations.forEach(r => {\r\n if (r.Entity1LogicalName == entity.LogicalName) {\r\n r.Other = r.Entity2LogicalName;\r\n r.OtherSchemaName = entity.SchemaName;\r\n r.Entity1LogicalCollectionName = entity.LogicalCollectionName;\r\n } else {\r\n r.Other = r.Entity1LogicalName;\r\n r.Entity2LogicalCollectionName = entity.LogicalCollectionName;\r\n }\r\n });\r\n this.resolveRelationshipNames(entity.ManyToManyRelations);\r\n return entity;\r\n }));\r\n }\r\n\r\n resolveRelationshipNames(relations: ManyToManyRelationship[]): void {\r\n relations.forEach(r => {\r\n if (r.Entity1LogicalCollectionName == null) {\r\n this.search(r.Entity1LogicalName, true).subscribe(s => {\r\n r.Entity1LogicalCollectionName = s.value[0].LogicalCollectionName;\r\n if (r.Other == r.Entity1LogicalName) {\r\n r.OtherSchemaName = s.value[0].SchemaName;\r\n }\r\n });\r\n }\r\n\r\n if (r.Entity2LogicalCollectionName == null) {\r\n this.search(r.Entity2LogicalName, true).subscribe(s => {\r\n r.Entity2LogicalCollectionName = s.value[0].LogicalCollectionName;\r\n if (r.Other = r.Entity2LogicalName) {\r\n r.OtherSchemaName = s.value[0].SchemaName;\r\n }\r\n });\r\n }\r\n\r\n });\r\n }\r\n\r\n getOneToManyRelationships(entity: EntityMeta): Observable<EntityMeta> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n return this.http.get(this.xrmService.getServiceUrl() + 'EntityDefinitions(' + entity.id + ')' + '/OneToManyRelationships?$select=MetadataId,RelationshipType,SchemaName,ReferencedAttribute,ReferencingAttribute,ReferencedEntity,ReferencingEntity,ReferencingEntityNavigationPropertyName', options)\r\n .pipe(map(response => {\r\n entity.OneToManyRelations = response[\"value\"] as OneToManyRelationship[];\r\n return entity;\r\n }));\r\n }\r\n\r\n getLookup(entity: EntityMeta, attr: AttributeMeta): Observable<EntityMeta> {\r\n if (attr.AttributeType == 'Lookup') {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n return this.http.get<LookupAttribute>(this.xrmService.getServiceUrl() + 'EntityDefinitions(' + entity.id + ')/Attributes(' + attr.id + ')/Microsoft.Dynamics.CRM.LookupAttributeMetadata?$select=Targets,LogicalName,SchemaName')\r\n .pipe(map(response => {\r\n attr.Lookup = response as LookupAttribute;\r\n return entity;\r\n }));\r\n }\r\n\r\n if (attr.AttributeType == 'Customer') {\r\n attr.Lookup = {\r\n LogicalName: attr.LogicalName,\r\n SchemaName: attr.SchemaName,\r\n Targets: ['account', 'contact']\r\n }\r\n\r\n return new Observable<EntityMeta>(o => {\r\n o.next(entity);\r\n });\r\n }\r\n\r\n throw 'unknown Lookup type ' + attr.AttributeType;\r\n }\r\n\r\n getPicklists(entity: EntityMeta): Observable<AttributeOptionsetMeta[]> {\r\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n headers = headers.append(\"OData-Version\", \"4.0\");\r\n headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n let options = {\r\n headers: headers\r\n }\r\n\r\n return this.http.get<IAttributeOptionsetMetaResult>(this.xrmService.getServiceUrl() + 'EntityDefinitions(LogicalName=\\'' + entity.LogicalName + '\\')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet').pipe(map(r => r.value));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\n\nimport { HttpClientModule, HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators'\n\nimport { XrmFormService } from './xrmform.service';\nimport { XrmAuthService } from './auth.service';\nimport { XrmInterceptor } from './xrm.interceptor';\nimport { XrmService } from './xrm.service';\nimport { XrmContextService } from './xrmcontext.service';\nimport { XrmStateService } from './xrmstate.service';\nimport { XrmConfigService } from './xrmconfig.service';\n\n@NgModule({\n imports: [\n HttpClientModule\n ],\n declarations: [],\n exports: [],\n providers: [\n XrmAuthService,\n XrmService,\n XrmContextService,\n XrmStateService,\n XrmConfigService,\n XrmFormService\n ]\n})\nexport class KiponXrmserviceModule { }\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\nimport { Entity, EntityReference, OptionSetValue, Entities, XrmContextService } from './xrmcontext.service';\r\n\r\nexport class Role extends Entity {\r\n constructor() {\r\n super('roles', 'roleid', true);\r\n }\r\n businessunitid: EntityReference = new EntityReference().meta(\"businessunits\", \"businessunitid\");\r\n name: string = null;\r\n parentroleid: EntityReference = new EntityReference().meta(\"roles\", \"parentroleid\");\r\n parentrootroleid: EntityReference = new EntityReference().meta(\"roles\", \"parentrootroleid\");\r\n\r\n meta(): Role {\r\n return this;\r\n }\r\n}\r\n\r\nexport class Team extends Entity {\r\n constructor() {\r\n super('teams', 'teamid', true);\r\n }\r\n description: string = null;\r\n emailaddress: string = null;\r\n name: string = null;\r\n teamtype: OptionSetValue = new OptionSetValue();\r\n\r\n meta(): Team {\r\n return this;\r\n }\r\n}\r\n\r\nexport class SystemUser extends Entity {\r\n constructor() {\r\n super('systemusers', 'systemuserid', true);\r\n }\r\n address1_name: string = null;\r\n address2_name: string = null;\r\n domainname: string = null;\r\n firstname: string = null;\r\n fullname: string = null;\r\n lastname: string = null;\r\n middlename: string = null;\r\n nickname: string = null;\r\n systemuserroles_association: Entities<Role>;\r\n teammembership_association: Entities<Team>;\r\n\r\n hasRole(name: string): boolean {\r\n if (this.systemuserroles_association != null && this.systemuserroles_association.length > 0) {\r\n for (var i = 0; i < this.systemuserroles_association.length; i++) {\r\n if (this.systemuserroles_association[i].name == name) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n memberOf(name: string): boolean {\r\n if (this.teammembership_association != null && this.teammembership_association.length > 0) {\r\n for (var i = 0; i < this.teammembership_association.length; i++) {\r\n if (name == this.teammembership_association[i].name) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n roles: Role[];\r\n teams: Team[];\r\n\r\n onFetch() {\r\n this.roles = [];\r\n if (this.systemuserroles_association != null) {\r\n this.systemuserroles_association.forEach(r => {\r\n this.roles.push(r);\r\n })\r\n }\r\n this.teams = [];\r\n if (this.teammembership_association != null) {\r\n this.teammembership_association.forEach(t => {\r\n this.teams.push(t);\r\n });\r\n }\r\n }\r\n\r\n meta(): SystemUser {\r\n this.systemuserroles_association = new Entities<Role>('systemusers', 'roles', 'systemuserroles_association', true, new Role().meta());\r\n this.teammembership_association = new Entities<Team>('systemusers', 'teams', 'teammembership_association', false, new Team().meta());\r\n return this;\r\n }\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class XrmSecurityService {\r\n private rolePrototype: Role = new Role().meta();\r\n private teamPrototype: Team = new Team().meta();\r\n private userPrototype: SystemUser = new SystemUser().meta();\r\n constructor(private xrmService: XrmContextService) { }\r\n\r\n getUser(id: string): Observable<SystemUser> {\r\n return this.xrmService.get<SystemUser>(this.userPrototype, id);\r\n }\r\n\r\n getCurrentUser(): Observable<SystemUser> {\r\n return this.xrmService.getCurrentUserId().pipe(mergeMap(u => {\r\n return this.getUser(u);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { XrmSecurityService } from './xrmsecurity.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ],\r\n declarations: [],\r\n exports: [],\r\n providers: [\r\n XrmSecurityService\r\n ]\r\n})\r\nexport class KiponXrmSecurityModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { XrmQueryResult } from './xrm.service'\r\nimport { Entity, EntityReference, OptionSetValue, Entities, XrmContextService, Condition, Comparator } from './xrmcontext.service';\r\n\r\nexport class Annotation extends Entity {\r\n constructor() {\r\n super('annotations', 'annotationid', true);\r\n }\r\n // \tannotationid:entity key column is always included, but name is converted to id\r\n filename: string = null;\r\n filesize: number = null;\r\n isdocument: boolean = null;\r\n notetext: string = null;\r\n objectid: EntityReference = new EntityReference().meta(\"accounts\", \"objectid_account\");\r\n objectidtypecode: string;\r\n ownerid: EntityReference = new EntityReference().meta(\"systemusers\", \"ownerid\");\r\n subject: string = null;\r\n\r\n meta(): Annotation {\r\n return this;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class XrmAnnotationService {\r\n localPrototype: Annotation = new Annotation().meta();\r\n constructor(private xrmService: XrmContextService) { }\r\n\r\n get(id: string): Observable<Annotation> {\r\n return this.xrmService.get<Annotation>(this.localPrototype, id);\r\n }\r\n\r\n related(entity: Entity): Observable<XrmQueryResult<Annotation>> {\r\n let condition: Condition = new Condition()\r\n .where('objectid', Comparator.Equals, entity.id)\r\n .where('objecttypecode', Comparator.Equals, entity._logicalName);\r\n return this.xrmService.query<Annotation>(this.localPrototype, condition);\r\n }\r\n\r\n add(entity: Entity, subject: string, body: string): Observable<Annotation> {\r\n var anno = new Annotation();\r\n anno.isdocument = false;\r\n anno.subject = subject;\r\n anno.notetext = body;\r\n anno.objectid = new EntityReference().meta(entity._pluralName, \"objectid_\" + entity._logicalName);\r\n anno.objectid.id = entity.id;\r\n return this.xrmService.create<Annotation>(this.localPrototype, anno);\r\n }\r\n\r\n update(anno: Annotation): Observable<Annotation> {\r\n return this.xrmService.update(this.localPrototype, anno);\r\n }\r\n\r\n delete(anno: Annotation): Observable<null> {\r\n return this.xrmService.delete(anno);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { XrmAnnotationService } from './xrmannotation.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ],\r\n declarations: [],\r\n exports: [],\r\n providers: [\r\n XrmAnnotationService\r\n ]\r\n})\r\nexport class KiponXrmAnnotationModule { }\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { XrmMetadataService } from './metadata.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ],\r\n declarations: [],\r\n exports: [],\r\n providers: [\r\n XrmMetadataService\r\n ]\r\n})\r\nexport class KiponXrmMetadataModule { }\r\n","/*\n * Public API Surface of kipon-xrmservice\n */\n\nexport * from './lib/fetchxml';\nexport * from './lib/auth.service';\nexport * from './lib/xrm.interceptor';\nexport * from './lib/xrmform.service';\nexport * from './lib/xrm.service';\nexport * from './lib/xrmconfig.service';\nexport * from './lib/xrmcontext.service';\nexport * from './lib/xrmstate.service';\nexport * from './lib/metadata.service';\nexport * from './lib/kipon-xrmservice.module';\n\nexport * from './lib/xrmsecurity.service';\nexport * from './lib/kipon-xrmsecurity.module';\n\nexport * from './lib/xrmannotation.service';\nexport * from './lib/kipon-xrmannotation.module';\n\nexport * from './lib/metadata.service';\nexport * from './lib/kipon-xrmmetadata.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.XrmFormService","i1.XrmConfigService","i2.XrmService","i1.XrmStateService","i2.XrmContextService","i1.XrmContextService"],"mappings":"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"}