{"version":3,"file":"boruto-xrmservice.mjs","sources":["../../../projects/xrm/src/lib/xrmstate.service.ts","../../../projects/xrm/src/lib/xrm.interceptor.ts","../../../projects/xrm/src/lib/models/xrmentitykey.model.ts","../../../projects/xrm/src/lib/models/xrmcontextinstance.model.ts","../../../projects/xrm/src/lib/models/xrmformkey.model.ts","../../../projects/xrm/src/lib/xrmform.service.ts","../../../projects/xrm/src/lib/xrm.service.ts","../../../projects/xrm/src/lib/models/entityreference.model.ts","../../../projects/xrm/src/lib/models/entity.model.ts","../../../projects/xrm/src/lib/models/expand.model.ts","../../../projects/xrm/src/lib/models/xrmtransactionitem.model.ts","../../../projects/xrm/src/lib/models/xrmtransaction.model.ts","../../../projects/xrm/src/lib/models/indexedobject.model.ts","../../../projects/xrm/src/lib/models/optionsetvalue.model.ts","../../../projects/xrm/src/lib/models/xrmaccess.model.ts","../../../projects/xrm/src/lib/models/entities.model.ts","../../../projects/xrm/src/lib/models/columnbuilder.model.ts","../../../projects/xrm/src/lib/xrmcontext.service.ts","../../../projects/xrm/src/lib/models/attributemeta.model.ts","../../../projects/xrm/src/lib/models/entitymeta.model.ts","../../../projects/xrm/src/lib/models/comparator.enum.ts","../../../projects/xrm/src/lib/models/filter.model.ts","../../../projects/xrm/src/lib/models/operator.enum.ts","../../../projects/xrm/src/lib/models/condition.model.ts","../../../projects/xrm/src/lib/xrmmetadata.service.ts","../../../projects/xrm/src/lib/models/attributeoptionsetmeta.model.ts","../../../projects/xrm/src/lib/models/fetchxml.model.ts","../../../projects/xrm/src/lib/models/functionalpropertyvalue.model.ts","../../../projects/xrm/src/lib/models/optionsetlabel.model.ts","../../../projects/xrm/src/lib/models/optionsetlabelmeta.model.ts","../../../projects/xrm/src/lib/models/optionsetmeta.model.ts","../../../projects/xrm/src/lib/models/optionsetmetavalue.model.ts","../../../projects/xrm/src/public-api.ts","../../../projects/xrm/src/boruto-xrmservice.ts"],"sourcesContent":["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:number[] = [];\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(() => new Error(error));\r\n        })\r\n      );\r\n  }\r\n}\r\n","export class XrmEntityKey {\r\n    constructor(id: string, entityType: string) {\r\n      this.id = id;\r\n      this.entityType = entityType;\r\n    }\r\n    id: string;\r\n    entityType: string;\r\n  }\r\n  ","import { XrmContext } from \"./xrmcontext.interface\";\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.2/';\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  ","export class XrmFormKey {\r\n    constructor(id?: string, type?: string) {\r\n      this.id = id;\r\n      this.type = type;\r\n    }\r\n    id?: string;\r\n    type?: string;\r\n  }\r\n  ","import { Injectable } from \"@angular/core\";\r\nimport { IndexedObject } from \"./models/indexedobject.model\";\r\nimport { XrmContext } from \"./models/xrmcontext.interface\";\r\nimport { XrmContextInstance } from \"./models/xrmcontextinstance.model\";\r\nimport { XrmFormKey } from \"./models/xrmformkey.model\";\r\nimport { XrmRoot } from \"./xrmformcontext.interface\";\r\n\r\nconst BorutoXrmLOCAL_getFormType = \"BorutoXrmServiceLOCAL_getFormType\";\r\nconst BorutoXrmLOCAL_formentityr = \"BorutoXrmServiceLOCAL_formentityr\";\r\nconst BorutoXrmLOCAL_context = \"BorutoXrmServiceLOCAL_context\";\r\n\r\n@Injectable()\r\nexport class XrmFormService {\r\n\r\n  private _window: IndexedObject = window as IndexedObject;\r\n  constructor() {\r\n  }\r\n\r\n  getXrm(): Xrm.XrmStatic | null {\r\n    if (this._window[\"Xrm\"]) return this._window[\"Xrm\"];\r\n    if (window.parent && this._window[\"parent\"][\"Xrm\"]) return this._window[\"parent\"][\"Xrm\"];\r\n    if (window.opener && window.opener[\"Xrm\"]) return window.opener[\"Xrm\"];\r\n\r\n    return null;\r\n  }\r\n\r\n  addXrmHook(name: string, f: () => void, bindto?: any) {\r\n    var xrm = this.getXrm() as any | null;\r\n    if (xrm) {\r\n      if (xrm[name] == undefined) {\r\n        var fun = f;\r\n        if (bindto) {\r\n          fun = () => {\r\n            f.apply(bindto);\r\n          };\r\n        }\r\n        xrm[name] = fun;\r\n      }\r\n    }\r\n  }\r\n\r\n  removeXrmHook(name: string) {\r\n    var xrm = this.getXrm() as any | null;\r\n    if (xrm && xrm[name]) {\r\n      delete xrm[name];\r\n    }\r\n  }\r\n\r\n  getFormContext(): XrmRoot | null {\r\n    if (this._window[\"Xrm\"]) return this._window[\"Xrm\"];\r\n    if (window.parent && this._window[\"parent\"][\"Xrm\"]) return this._window[\"parent\"][\"Xrm\"];\r\n    if (window.opener && window.opener[\"Xrm\"]) return window.opener[\"Xrm\"];\r\n    return null;\r\n  }\r\n\r\n  getContext(): XrmContext | null {\r\n    if (this._window[BorutoXrmLOCAL_context]) {\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    if (typeof this._window[\"GetGlobalContext\"] != \"undefined\") {\r\n      this._window[BorutoXrmLOCAL_context] = new XrmContextInstance(this._window[\"GetGlobalContext\"]());\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.parent && this._window[\"parent\"][BorutoXrmLOCAL_context]) {\r\n      this._window[BorutoXrmLOCAL_context] = new XrmContextInstance(this._window[\"parent\"][BorutoXrmLOCAL_context]);\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.opener && window.opener[BorutoXrmLOCAL_context]) {\r\n      this._window[BorutoXrmLOCAL_context] = new XrmContextInstance(window.opener[BorutoXrmLOCAL_context]);\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    if (this._window[\"Xrm\"] && this._window[\"Xrm\"][\"Utility\"] && this._window[\"Xrm\"][\"Utility\"][\"getGlobalContext\"]) {\r\n      this._window[BorutoXrmLOCAL_context] = new XrmContextInstance(this._window[\"Xrm\"][\"Utility\"][\"getGlobalContext\"]());\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.parent && this._window[\"parent\"][\"Xrm\"] && this._window[\"parent\"][\"Xrm\"][\"Utility\"] && this._window[\"parent\"][\"Xrm\"][\"Utility\"][\"getGlobalContext\"]) {\r\n      this._window[BorutoXrmLOCAL_context] = new XrmContextInstance(this._window[\"parent\"][\"Xrm\"][\"Utility\"][\"getGlobalContext\"]());\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Utility\"] && window.opener[\"Xrm\"][\"Utility\"][\"getGlobalContext\"]) {\r\n      this._window[BorutoXrmLOCAL_context] = new XrmContextInstance(window.opener[\"Xrm\"][\"Utility\"][\"getGlobalContext\"]());\r\n      return this._window[BorutoXrmLOCAL_context];\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  // \"Xrm\", \"Page\", \"ui\", \"getFormType\"\r\n\r\n\r\n  getFormType(): number | null;\r\n  getFormType(clear?: boolean): number | null {\r\n\r\n    if (!clear && this._window[BorutoXrmLOCAL_getFormType]) delete this._window[BorutoXrmLOCAL_getFormType];\r\n    if (this._window[BorutoXrmLOCAL_getFormType]) {\r\n      return this._window[BorutoXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (!clear && window.parent && this._window[\"parent\"][BorutoXrmLOCAL_getFormType]) {\r\n      this._window[BorutoXrmLOCAL_getFormType] = this._window[\"parent\"][BorutoXrmLOCAL_getFormType];\r\n      return this._window[BorutoXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (!clear && window.opener && window.opener[BorutoXrmLOCAL_getFormType]) {\r\n      this._window[BorutoXrmLOCAL_getFormType] = window.opener[BorutoXrmLOCAL_getFormType];\r\n      return this._window[BorutoXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (this._window[\"Xrm\"] && this._window[\"Xrm\"][\"Page\"] && this._window[\"Xrm\"][\"Page\"][\"ui\"] && this._window[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n      this._window[BorutoXrmLOCAL_getFormType] = this._window[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n      return this._window[BorutoXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (window.parent && this._window[\"parent\"][\"Xrm\"] && this._window[\"parent\"][\"Xrm\"][\"Page\"] && this._window[\"parent\"][\"Xrm\"][\"Page\"][\"ui\"] && this._window[\"parent\"][\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n      this._window[BorutoXrmLOCAL_getFormType] = this._window[\"parent\"][\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n      return this._window[BorutoXrmLOCAL_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      this._window[BorutoXrmLOCAL_getFormType] = window.opener[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n      return this._window[BorutoXrmLOCAL_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      this._window[BorutoXrmLOCAL_formentityr] = result;\r\n      return result;\r\n    }\r\n\r\n    if (clear && this._window[BorutoXrmLOCAL_formentityr]) delete this._window[BorutoXrmLOCAL_formentityr];\r\n    if (this._window[BorutoXrmLOCAL_formentityr]) {\r\n      return this._window[BorutoXrmLOCAL_formentityr];\r\n    }\r\n\r\n\r\n    if (!clear && window.parent && this._window[\"parent\"][BorutoXrmLOCAL_formentityr]) {\r\n      this._window[BorutoXrmLOCAL_formentityr] = this._window[\"parent\"][BorutoXrmLOCAL_formentityr];\r\n      return this._window[BorutoXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (!clear && window.opener && window.opener[BorutoXrmLOCAL_formentityr]) {\r\n      this._window[BorutoXrmLOCAL_formentityr] = window.opener[BorutoXrmLOCAL_formentityr];\r\n      return this._window[BorutoXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (this._window[\"Xrm\"] && this._window[\"Xrm\"][\"Page\"] && this._window[\"Xrm\"][\"Page\"][\"data\"] && this._window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n      var result = new XrmFormKey();\r\n      result.id = this._window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n      result.type = this._window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n      this._window[BorutoXrmLOCAL_formentityr] = result;\r\n      return this._window[BorutoXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (window.parent && this._window[\"parent\"][\"Xrm\"] && this._window[\"parent\"][\"Xrm\"][\"Page\"] && this._window[\"parent\"][\"Xrm\"][\"Page\"][\"data\"] && this._window[\"parent\"][\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n      var result = new XrmFormKey();\r\n      result.id = this._window[\"parent\"][\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n      result.type = this._window[\"parent\"][\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n      this._window[BorutoXrmLOCAL_formentityr] = result;\r\n      return this._window[BorutoXrmLOCAL_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      this._window[BorutoXrmLOCAL_formentityr] = result;\r\n      return this._window[BorutoXrmLOCAL_formentityr];\r\n    }\r\n    return new XrmFormKey();\r\n  }\r\n}\r\n","import { Injectable, Injector } from \"@angular/core\";\r\nimport { XrmContext } from \"./models/xrmcontext.interface\";\r\nimport { HttpClient, HttpHeaders, HttpResponse } from \"@angular/common/http\";\r\nimport { IndexedObject } from \"./models/indexedobject.model\";\r\nimport { BehaviorSubject, lastValueFrom, map, Observable, Subscriber } from \"rxjs\";\r\nimport { XrmEntityKey } from \"./models/xrmentitykey.model\";\r\nimport { XrmFormKey } from \"./models/xrmformkey.model\";\r\nimport { Expand } from \"./models/expand.model\";\r\nimport { XrmQueryResult } from \"./models/xrmqueryresult.interface\";\r\nimport { XrmFormService } from \"./xrmform.service\";\r\n\r\n\r\n@Injectable()\r\nexport class XrmService {\r\n  private defaultApiUrl: string = \"/api/data/v9.2/\";\r\n  private contextFallback?: XrmContext;\r\n  apiUrl: string = '/api/data/v9.2/';\r\n  apiVersion: string = 'v9.2';\r\n  debug: boolean = false;\r\n  forceHttps: boolean = false;\r\n  private keyTries: number = 0;\r\n  private currentUserId: string = '';\r\n  private currentUserId$: BehaviorSubject<string>;\r\n\r\n  constructor(private http: HttpClient, private injector: Injector, private xrmformService: XrmFormService) {\r\n    this.currentUserId$ = new BehaviorSubject<string>('');\r\n  }\r\n\r\n  setVersion(v: string): void {\r\n    this.apiUrl = this.defaultApiUrl.replace(\"9.2\", 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 | null = this.xrmformService.getContext();\r\n\r\n    if (x != null) {\r\n      if (typeof x.getVersion == 'undefined') {\r\n        x.getVersion = (): string => \"9.2.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.2';\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    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: { [key: string]: any } = {};\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        var ix = this as IndexedObject;\r\n        return ix[\"userid\"];\r\n      },\r\n      getUserName(): string {\r\n        var ix = this as IndexedObject;\r\n        return ix[\"username\"];\r\n      },\r\n      $devClientUrl(): string {\r\n        var ix = this as IndexedObject;\r\n        return ix['$clienturl'];\r\n      }\r\n    };\r\n\r\n    var headers = this.getDefaultHeader();\r\n\r\n    this.http.get <IndexedObject>(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      let cf = this.contextFallback as IndexedObject;\r\n\r\n      cf[\"$clienturl\"] = firstpart + '/api/data/' + version + '/';\r\n\r\n      cf[\"userid\"] = r[\"UserId\"];\r\n      cf[\"username\"] = \"Dev. fallback from whoami\";\r\n      if (this.contextFallback != null) {\r\n        this.initializeVersion(this.contextFallback.getVersion());\r\n      }\r\n    });\r\n    return this.contextFallback;\r\n  }\r\n\r\n  getCurrentUserId(): BehaviorSubject<string> {\r\n    this.initializeCurrentUser();\r\n    return this.currentUserId$;\r\n    \r\n  }\r\n\r\n  private async initializeCurrentUser() {\r\n    var ctx = this.getContext();\r\n    if (ctx.getUserId() == null || ctx.getUserId() == '') {\r\n      var headers = this.getDefaultHeader();\r\n      var url = this.forceHTTPS(ctx.getClientUrl()) + this.apiUrl + \"/WhoAmI()\";\r\n      this.log(url);\r\n\r\n      var user = await lastValueFrom(this.http.get<IndexedObject>(url, { headers: headers }).pipe(map(r => { return r[\"UserId\"] as string })));\r\n      this.currentUserId$.next(user);\r\n    } else {\r\n      this.log('get user from normal crm context');\r\n      this.log('should result in ' + ctx.getUserId());\r\n      this.currentUserId$.next(ctx.getUserId());\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(params[\"id\"], params[\"typename\"]);\r\n\r\n\r\n    if (result.id == null || result.id == '') {\r\n      params = this.getContext().getQueryStringParameters();\r\n      result.id = params[\"id\"];\r\n      result.entityType = 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(result.id, result.entityType);\r\n    if (key != null && key.id != null && key.type != 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(result.id, result.entityType);\r\n      if (key != null && key.id != null && key.type != 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(result.id, result.entityType);\r\n            if (key != null && key.id != null && key.type != 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, expand?: Expand): Observable<T> {\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    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    let me = this;\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    if (top != null && 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 != null && 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 ?? 250, [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    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, fields?: string): Observable<T> {\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    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    if (propertyValueAs == null) propertyValueAs = 'value';\r\n\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 v: IndexedObject = {\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    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    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    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, boundType?: string, boundId?: string): Observable<any> {\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\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + name;\r\n    if (boundType != null && boundId != 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, boundType?: string, boundId?: string): Observable<any> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    headers = headers.append(\"Content-Type\",\"application/json; charset=utf-8\");\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n    let prefix = '';\r\n    if (boundId != undefined && boundId != undefined) {\r\n      prefix = 'Microsoft.Dynamics.CRM.';\r\n    }\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + name;\r\n    if (boundType != null && boundId != null) {\r\n      url = this.getContext().getClientUrl() + this.apiUrl + boundType + \"(\" + this.toGuid(boundId) + \")/\" + prefix + name;\r\n    }\r\n    this.log(url);\r\n\r\n    var finalUrl = this.forceHTTPS(url);\r\n    return this.http.post(finalUrl, 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('', '', true);\r\n      if (key != null && key.id != null && key.id != '' && key.type != null && key.type != '') {\r\n        let result = new XrmEntityKey(key.id, key.type);\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: XrmQueryResult<T> = {\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      pageIndex: pageIndex,\r\n      top: top\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        top: top,\r\n        nextLink: nextLink,\r\n        next: (): Observable<XrmQueryResult<T>> => {\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          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        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: IndexedObject = {};\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.substring(0, 8) + '-' + v.substring(9, 13) + '-' + v.substring(14, 18) + '-' + v.substring(19, 23) + '-' + v.substring(24,36);\r\n  }\r\n\r\n  private getDefaultHeader(): HttpHeaders {\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    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","export class EntityReference {\r\n\r\n  static ToEntityReference(a: any, f: string): EntityReference {\r\n    var result = new EntityReference();\r\n\r\n    if (a[f] == undefined) {\r\n      return new EntityReference();\r\n    }\r\n\r\n    result.id = a[f];\r\n    result.logicalname = a[f+\"@Microsoft.Dynamics.CRM.lookuplogicalname\"];\r\n    result.name = a[f+\"@OData.Community.Display.V1.FormattedValue\"];\r\n\r\n    delete a[f];\r\n    delete a[f+\"@Microsoft.Dynamics.CRM.lookuplogicalname\"];\r\n    delete a[f+\"@OData.Community.Display.V1.FormattedValue\"];\r\n    delete a[f+\"@OData.Community.Display.V1.AttributeName\"]\r\n\r\n    return result;\r\n  }\r\n\r\n\r\n    constructor(id?: string, pluralName?: string, associatednavigationproperty?: string, logicalname?: string) {\r\n      this.id = id ?? \"\";\r\n      this.pluralName = pluralName ?? \"\";\r\n      this.associatednavigationproperty = associatednavigationproperty ?? \"\";\r\n      this.logicalname = logicalname ?? \"\";\r\n      this.name = \"\";\r\n  \r\n      if (this.pluralName != \"\" && logicalname == \"\") {\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.substring(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 = null;\r\n      let id2: string | null = 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  }","import { EntityReference } from \"./entityreference.model\";\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, updateable?: boolean, logicalname?: string) {\r\n      this._pluralName = pluralName;\r\n      this._keyName = keyName;\r\n      this._updateable = updateable ?? false;\r\n      this._logicalName = \"\";\r\n      this.id = \"\";\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.substring(0, x.length - 1);\r\n            } else {\r\n              this._logicalName = this._keyName.substring(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      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  ","export class Expand {\r\n    constructor(name?: string, select?: string, filter?: string, additional?: Expand[]) {\r\n      this.name = name;\r\n      this.select = select;\r\n      this.filter = filter;\r\n      this.additional = additional;\r\n    }\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  ","import { Entity } from \"./entity.model\";\r\n\r\nexport class XrmTransactionItem {\r\n    constructor(type: string, prototype: Entity, instance: Entity, field?: string, value?: any) {\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 = null;\r\n  }\r\n  ","import { Entity } from \"./entity.model\";\r\nimport { XrmTransactionItem } from \"./xrmtransactionitem.model\";\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\", instance, 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    length(): number {\r\n      return this.oprs.length;\r\n    }\r\n\r\n    clear(): void {\r\n      this.oprs = [];\r\n    }\r\n  }\r\n  ","export class IndexedObject {\r\n    [key: string] : any \r\n  }\r\n  ","export class OptionSetValue {\r\n\r\n  static toOptionSetValue(a: any, f: string): OptionSetValue {\r\n    if (a[f] == undefined) {\r\n      return new OptionSetValue();\r\n    }\r\n    var result = new OptionSetValue();\r\n    result.value = a[f] as number;\r\n    result.name = a[f+\"@OData.Community.Display.V1.FormattedValue\"];\r\n\r\n    delete a[f];\r\n    delete a[f+\"@OData.Community.Display.V1.FormattedValue\"];\r\n    delete a[f+\"@OData.Community.Display.V1.AttributeName\"];\r\n    delete a[f+\"\"];\r\n\r\n    return result;\r\n\r\n  }\r\n\r\n\r\n\r\n    constructor(value?: number, name?: string) {\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 = null;\r\n      let v2: number | null = null;\r\n      if (o1 != null && o1.value != null) v1 = o1.value;\r\n      if (o2 != null && o2.value != null) v2 = o2.value;\r\n      return v1 == v2;\r\n    }\r\n  }\r\n  ","export class XrmAccess {\r\n    private lazy: boolean = true;\r\n    resolved: boolean = false;\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  ","import { Observable, map } from \"rxjs\";\r\nimport { XrmService } from \"../xrm.service\";\r\nimport { Entity } from \"./entity.model\";\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.parentId = \"\";\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  \r\n      if (this.xrmService != null) { \r\n        return this.xrmService.associate(fromType, fromId as string, toType, toId as string, this.refName).pipe(map(r => {\r\n          this.push(entity as T);\r\n          return null;\r\n      }));\r\n      }\r\n      throw new Error(\"xrmService is null\");\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      if (this.xrmService != null) {\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      throw new Error(\"xrmService is null\");\r\n    }\r\n  }\r\n  ","export class ColumnBuilder {\r\n    constructor(columns: string, hasEntityReference?: boolean) {\r\n      this.columns = columns;\r\n      if (hasEntityReference != null) {\r\n        this.hasEntityReference = hasEntityReference;\r\n      }\r\n    }\r\n  \r\n    columns: string;\r\n    hasEntityReference: boolean = false;\r\n  }\r\n  ","import { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { XrmService } from \"./xrm.service\";\r\nimport { XrmContext } from \"./models/xrmcontext.interface\";\r\nimport { XrmEntityKey } from \"./models/xrmentitykey.model\";\r\nimport { Observable, map, lastValueFrom, throwError, BehaviorSubject } from \"rxjs\";\r\nimport { Entity } from \"./models/entity.model\";\r\nimport { Expand } from \"./models/expand.model\";\r\nimport { Fetchxml } from \"./models/fetchxml.model\";\r\nimport { XrmQueryResult } from \"./models/xrmqueryresult.interface\";\r\nimport { Condition } from \"./models/condition.model\";\r\nimport { XrmTransaction } from \"./models/xrmtransaction.model\";\r\nimport { IndexedObject } from \"./models/indexedobject.model\";\r\nimport { XrmTransactionItem } from \"./models/xrmtransactionitem.model\";\r\nimport { EntityReference } from \"./models/entityreference.model\";\r\nimport { OptionSetValue } from \"./models/optionsetvalue.model\";\r\nimport { XrmAccess } from \"./models/xrmaccess.model\";\r\nimport { ExpandProperty } from \"./models/expandproperty.model\";\r\nimport { Entities } from \"./models/entities.model\";\r\nimport { ColumnBuilder } from \"./models/columnbuilder.model\";\r\n\r\n\r\nconst XRMCONTEXTSERVICE_EMPTY_GUID = \"00000000-0000-0000-0000-000000000000\";\r\nconst isNum = (num:any) => num != null && typeof num !== 'object' && (!Number.isNaN(+(String((String(num) || '').replace(/[^0-9\\.\\-e]/, '') !== String(num) || num === '' ? NaN : num))));\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\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(): BehaviorSubject<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 = 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\r\n          var next = this.$expandToExpand(ep);\r\n          if (next != null) {\r\n            expand.additional.push(next);\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    if (expand != null) {\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);\r\n      }));\r\n    } else {\r\n      return this.xrmService.get<T>(prototype._pluralName, id, columnDef.columns).pipe(map(r => {\r\n        return me.resolve<T>(prototype, r, prototype._updateable);\r\n      }));\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    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      lastValueFrom(this.http.get<any>(this.forceHTTPS(url), options))\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(() => new Error(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    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    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);\r\n      return result;\r\n    }));\r\n  }\r\n\r\n  query<T extends Entity>(prototype: T, condition: Condition, orderBy?: string, top?: number, count?: boolean): 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    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 != null && 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 != null && 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 ?? 0, [url], 0);\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, []);\r\n        }\r\n      }\r\n\r\n      throw new Error(\"response was 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\r\n      var re = response as IndexedObject;\r\n      var wasnull = re == null || re[prototype._keyName] == null || re[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.2 or higher update');\r\n      return me.resolve(prototype, response, true);\r\n    }));\r\n  }\r\n\r\n  put(prototype: Entity, instance: Entity, field: string, value?: any): Observable<null> {\r\n    if (value == null) {\r\n      value = 'ko-@value-not-parsed!';\r\n    }\r\n\r\n    let v = value;\r\n    if (value == 'ko-@value-not-parsed!') {\r\n      var iv = instance as IndexedObject;\r\n      v = iv[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).pipe(map(response => {\r\n      if (value != 'ko-@value-not-parsed!') {\r\n        this.assignValue(prototype, instance, field, value);\r\n      }\r\n      return null;\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, entity?: Entity): 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, entity?: Entity): Observable<any> {\r\n    if (entity != null && entity._pluralName != null && entity.id != 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      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.field != null) {\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 = {} as IndexedObject;\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.field != null) {\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\r\n          return true;\r\n        });\r\n        transaction.clear();\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\r\n    let _r = r as IndexedObject;\r\n\r\n    for (let prop in prototype) {\r\n      if (prototype.ignoreColumn(prop)) continue;\r\n\r\n      let _prototype = prototype as IndexedObject;\r\n      let _instance = instance as IndexedObject;\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 = '';\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> | null {\r\n    if (!prototype.hasOwnProperty('access')) throw 'The metadata must define a property \"access\" of type XrmAccess';\r\n\r\n    let _instance = instance as IndexedObject;\r\n\r\n    if (instance.hasOwnProperty('access') && _instance['access']['resolved']) {\r\n      return new Observable(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 = new IndexedObject();\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    let _prototype = prototype as IndexedObject;\r\n    let _instance = instance as IndexedObject;\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              if (isNum(newValue)) {\r\n                newValue = Number(newValue);\r\n              } else {\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: any[] = [];\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> | null {\r\n    var _prototype = prototype as IndexedObject;\r\n    var _instance = instance as IndexedObject;\r\n\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    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 = false;\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\r\n        let _r = r as IndexedObject;\r\n\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\r\n    let _prototype = prototype as IndexedObject;\r\n\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        if (isNum(value)) {\r\n          value = Number(value);\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 = new IndexedObject();\r\n\r\n    let _prototype = prototype as IndexedObject;\r\n    let _instance = instance as IndexedObject;\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 && ref.id != '') {\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 && ref.id != '') {\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\r\n              if (!isNum(value)) {\r\n                continue;\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    let _prototype = prototype as IndexedObject;\r\n    let _instance = instance as IndexedObject;\r\n\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 | null {\r\n    if (prop != null && prop.entity != 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 pac = \"\";\r\n      var pc = pageCookie.match(this.pageCookieMatch);\r\n      if (pc != null && pc.length > 0 && pc[0].length >= 14) {\r\n         pac = pc[0].substring(14)\r\n      }\r\n\r\n      var fragment = decodeURIComponent(pac);\r\n      fragment = fragment.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\\\"/g, \"&quot;\");\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        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        if (result.nextLink != null) {\r\n          return this.http.get(this.forceHTTPS(result.nextLink), options).pipe(map(response => {\r\n            if (result.nextLink != null) { \r\n              pages.push(result.nextLink);\r\n            }\r\n            let re = me.resolveFetchResult<T>(prototype, response, top, pages, (pageIndex + 1), fetchXml);\r\n            return re;\r\n          }));\r\n        } else {\r\n          throw new Error(\"nextLink is null\");\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          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: XrmQueryResult<T> = {\r\n      context: response[\"@odata.context\"],\r\n      count: response[\"@odata.count\"],\r\n      pages: pages,\r\n      pageIndex: pageIndex,\r\n      top: top,\r\n      value: []\r\n    }\r\n\r\n    let vals = response[\"value\"] as T[];\r\n\r\n    vals.forEach(r => {\r\n      let z = me.resolve(prototype, r, prototype._updateable, alias);\r\n      result.value.push(z);\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        next: (): Observable<XrmQueryResult<T>> => {\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          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        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    let _prototype = prototype as IndexedObject;\r\n    let _instance = instance as IndexedObject;\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:any[] = [];\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              var _xtemp = _tmp as IndexedObject;\r\n              if (ep.value instanceof Entities) {\r\n                _xtemp[\"add\"] = ep.value[\"add\"];\r\n                _xtemp[\"remove\"] = ep.value[\"remove\"];\r\n                _xtemp[\"xrmService\"] = this.xrmService;\r\n                _xtemp[\"parentType\"] = prototype._pluralName;\r\n                _xtemp[\"parentId\"] = result[\"id\"];\r\n                _xtemp[\"childType\"] = ep.value[\"childType\"];\r\n                _xtemp[\"refName\"] = ep.value[\"refName\"];\r\n                _xtemp[\"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 = new IndexedObject();\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    var columns = entity.columns(true);\r\n    let result = new ColumnBuilder(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    var _entity = entity as IndexedObject;\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 = new IndexedObject();\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 { Entity } from \"./entity.model\";\r\nimport { LabelMeta } from \"./labelmeta.model\";\r\nimport { LookupAttribute } from \"./lookupattribute.interface\";\r\n\r\nexport class AttributeMeta extends Entity {\r\n    constructor() {\r\n      super(\"Attributes\", \"MetadataId\")\r\n    }\r\n    AttributeType?: string;\r\n    DisplayName?: LabelMeta;\r\n    LogicalName: string = \"\";\r\n    Description?: LabelMeta;\r\n    SchemaName: string = \"\";\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  ","import { AttributeMeta } from \"./attributemeta.model\";\r\nimport { Entity } from \"./entity.model\";\r\nimport { LabelMeta } from \"./labelmeta.model\";\r\nimport { ManyToManyRelationship } from \"./manytomanyrelationship.interface\";\r\nimport { OneToManyRelationship } from \"./onetomanyrelationship.interface\";\r\n\r\nexport class EntityMeta extends Entity {\r\n    constructor() {\r\n      super(\"EntityDefinitions\", \"MetadataId\");\r\n    }\r\n  \r\n    DisplayName?: LabelMeta;\r\n    LogicalName: string = \"\";\r\n    ObjectTypeCode: number = 0;\r\n    SchemaName: string = \"\";\r\n    LogicalCollectionName: string = \"\";\r\n    IsActivity: boolean = false;\r\n    IsActivityParty: boolean = false;\r\n    Attributes?: AttributeMeta[];\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  ","export 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  ","import { Comparator } from \"./comparator.enum\";\r\nimport { Entity } from \"./entity.model\";\r\nimport { EntityReference } from \"./entityreference.model\";\r\nimport { IndexedObject } from \"./indexedobject.model\";\r\nimport { OptionSetValue } from \"./optionsetvalue.model\";\r\n\r\nexport class Filter {\r\n    field?: string;\r\n    operator?: Comparator;\r\n    alias?: string;\r\n    value: any;\r\n    raw: boolean = false;\r\n  \r\n    constructor() {\r\n    }\r\n  \r\n    toQueryString(prototype: Entity): string {\r\n      if (this.raw == true && this.field != null) {\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      var pt = prototype as IndexedObject;\r\n  \r\n      if (this.field != null && pt[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 (this.field != null && pt[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 != null && _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 (this.field != null && pt[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        if (this.value != null && this.value instanceof Date) {\r\n          _v = this.value.toISOString();\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    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    ","export enum Operator {\r\n    And,\r\n    Or\r\n  }\r\n  ","import { Comparator } from \"./comparator.enum\";\r\nimport { Entity } from \"./entity.model\";\r\nimport { Filter } from \"./filter.model\";\r\nimport { Operator } from \"./operator.enum\";\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    exact(field: string, value: any = null): Condition {\r\n      let f = new Filter();\r\n      f.field = field;\r\n      if (value == null || value == undefined || value == '') {\r\n        f.operator = Comparator.DoesNotContainsData;\r\n      } else {\r\n        f.operator = Comparator.Equals;\r\n        f.value = value;\r\n      }\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    containsAllWords(search: string, fields: string[]) {\r\n      var split = search.split(' ').filter(r => r != '');\r\n      if (split.length > 0 && fields.length > 0) {\r\n        split.forEach(word => {\r\n          var next = this.group(Operator.And);\r\n          var sub = next.group(Operator.Or);\r\n          fields.forEach(field => {\r\n            sub.where(field, Comparator.Contains, word);\r\n          });\r\n        });\r\n      }\r\n    }\r\n\r\n    fieldMatchAllWords(search: string, fields: string[]) {\r\n      if (search != null && search.length > 0 && fields != null && fields.length > 0) {\r\n        var words = search.split(' ');\r\n        var top = this.group(Operator.Or);\r\n\r\n        fields.forEach(field => {\r\n          var ff = top.group(Operator.And);\r\n          words.forEach(word => {\r\n            ff.where(field, Comparator.Contains, word);\r\n          });\r\n        });\r\n      }\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 | null {\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          var tmpstring = \"(\" + c.toQueryString(prototype) + \")\";\r\n\r\n          if (tmpstring != '' && tmpstring != '()' && tmpstring != '(null)') {\r\n            result += opr + tmpstring;\r\n          }\r\n\r\n\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  ","import { Injectable } from \"@angular/core\";\r\nimport { EntityMeta } from \"./models/entitymeta.model\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { XrmContextService } from \"./xrmcontext.service\";\r\nimport { XrmQueryResult } from \"./models/xrmqueryresult.interface\";\r\nimport { Observable, map } from \"rxjs\";\r\nimport { Condition } from \"./models/condition.model\";\r\nimport { Comparator } from \"./models/comparator.enum\";\r\nimport { ManyToManyRelationship } from \"./models/manytomanyrelationship.interface\";\r\nimport { OneToManyRelationship } from \"./models/onetomanyrelationship.interface\";\r\nimport { AttributeMeta } from \"./models/attributemeta.model\";\r\nimport { LookupAttribute } from \"./models/lookupattribute.interface\";\r\nimport { AttributeOptionsetMeta } from \"./models/attributeoptionsetmeta.model\";\r\nimport { IAttributeOptionsetMetaResult } from \"./models/iattributoptionsetmetaresult.interface\";\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        var _response = response as any;\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        var _response = response as any;\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 { OptionSetMeta } from \"./optionsetmeta.model\";\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  ","import { Condition } from \"./condition.model\";\r\nimport { Entity } from \"./entity.model\";\r\n\r\n\r\nexport class FetchEntity {\r\n  constructor(name: string, entityPrototype: Entity, attributes?: string[], condition?: Condition, linkedentities?: Link[], parent?: FetchEntity) {\r\n    this.name = name;\r\n    this.entityPrototype = entityPrototype;\r\n    this.attributes = attributes;\r\n    this.condition = condition;\r\n    this.attributes = attributes;\r\n    this.parent = parent;\r\n    this.linkedentities = linkedentities;\r\n\r\n  }\r\n\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, attributes?: string[]): FetchEntity {\r\n    var res = new FetchEntity(prototype._logicalName, prototype, attributes, condition);\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 = this;\r\n\r\n    if (this.linkedentities == null) {\r\n      this.linkedentities = [];\r\n    }\r\n\r\n    var next = new Link(this.name, property, \"inner\", property, res);\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, attributes?: string[]): FetchEntity {\r\n    var res = new FetchEntity(prototype._logicalName, prototype, attributes, condition);\r\n    res.parent = this;\r\n\r\n    if (this.linkedentities == null) {\r\n      this.linkedentities = [];\r\n    }\r\n    var next = new Link(from, alias, \"inner\", property, res);\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, attributes?: string[]): FetchEntity {\r\n    var res = new FetchEntity(prototype._logicalName, prototype, attributes, condition);\r\n    res.parent = this;\r\n\r\n    if (this.linkedentities == null) {\r\n      this.linkedentities = [];\r\n    }\r\n\r\n    var next = new Link(this.name, alias, \"outer\", property, res);\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    if (this.linkedentities != null) {\r\n      this.resolveAlias(this.linkedentities, result);\r\n    }\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\r\n        if (l.entity.linkedentities != null) {\r\n          this.resolveAlias(l.entity.linkedentities, result);\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\nexport class Link {\r\n  constructor(from: string, alias: string, type: string, to: string, entity: FetchEntity) {\r\n    this.from = from;\r\n    this.alias = alias;\r\n    this.type = type;\r\n    this.to = to;\r\n    this.entity = entity;\r\n  }\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  constructor(attribute: string, descending: boolean) {\r\n    this.attribute = attribute;\r\n    this.descending = descending;\r\n  }\r\n\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 = 0;\r\n  page: number = 1;\r\n  distinct: boolean = false;\r\n  private sorts: Fetchsort[] = [];\r\n\r\n  constructor(prototype: Entity, condition: Condition) {\r\n    this.root = new FetchEntity(prototype._logicalName, prototype, [], condition);\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, descending?: boolean): void {\r\n    if (this.sorts == null) {\r\n      this.sorts = [] as Fetchsort[];\r\n    }\r\n    let nextsort = new Fetchsort(attribname, descending ?? false);\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(pageCoocie?: string, forPage?: number): 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\r\n    if (this.root.attributes != null) {\r\n      result += \"<attribute name='\" + this.keyname + \"' />\"\r\n      this.root.attributes.forEach(a => {\r\n        result += \"<attribute name='\" + a + \"'/>\"\r\n      });\r\n    } else {\r\n      result += \"<all-attributes/>\";\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 { ToFunctionPropertyValue } from \"./tofunctionalpropertyvalue.interface\";\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  ","export class OptionsetLabel {\r\n    public Label: string | undefined;\r\n    public LanguageCode: number | undefined;\r\n    public MetadataId: string | undefined;\r\n  }\r\n  ","import { OptionsetLabel } from \"./optionsetlabel.model\";\r\n\r\nexport class OptionsetLabelMeta {\r\n    public UserLocalizedLabel: OptionsetLabelMeta | undefined;\r\n    public LocalizedLabels: OptionsetLabel[] | undefined;\r\n  }\r\n  ","import { OptionSetMetaValue } from \"./optionsetmetavalue.model\";\r\n\r\nexport class OptionSetMeta {\r\n    public Options: OptionSetMetaValue[] | undefined;\r\n  \r\n  }\r\n  ","import { OptionsetLabelMeta } from \"./optionsetlabelmeta.model\";\r\n\r\nexport class OptionSetMetaValue {\r\n    public Value: number | undefined;\r\n    public Label: OptionsetLabelMeta | undefined;\r\n  }\r\n  ","/*\r\n * Public API Surface of xrm\r\n */\r\n\r\nexport * from './lib/xrm.interceptor';\r\nexport * from './lib/xrm.service';\r\nexport * from './lib/xrmcontext.service';\r\nexport * from './lib/xrmform.service';\r\nexport * from './lib/xrmformcontext.interface';\r\nexport * from './lib/xrmmetadata.service';\r\nexport * from './lib/xrmstate.service';\r\n\r\nexport * from './lib/models/attributemeta.model';\r\nexport * from './lib/models/attributeoptionsetmeta.model';\r\nexport * from './lib/models/columnbuilder.model';\r\nexport * from './lib/models/comparator.enum';\r\nexport * from './lib/models/condition.model';\r\nexport * from './lib/models/displaynamemeta.model';\r\nexport * from './lib/models/entities.model';\r\nexport * from './lib/models/entity.model';\r\nexport * from './lib/models/entitymeta.model';\r\nexport * from './lib/models/entityreference.model';\r\nexport * from './lib/models/expand.model';\r\nexport * from './lib/models/expandproperty.model';\r\nexport * from './lib/models/fetchxml.model';\r\nexport * from './lib/models/filter.model';\r\nexport * from './lib/models/functionalpropertyvalue.model';\r\nexport * from './lib/models/iattributoptionsetmetaresult.interface';\r\nexport * from './lib/models/indexedobject.model';\r\nexport * from './lib/models/labelmeta.model';\r\nexport * from './lib/models/lookupattribute.interface';\r\nexport * from './lib/models/manytomanyrelationship.interface';\r\nexport * from './lib/models/onetomanyrelationship.interface';\r\nexport * from './lib/models/operator.enum';\r\nexport * from './lib/models/optionsetlabel.model';\r\nexport * from './lib/models/optionsetlabelmeta.model';\r\nexport * from './lib/models/optionsetmeta.model';\r\nexport * from './lib/models/optionsetmetavalue.model';\r\nexport * from './lib/models/optionsetvalue.model';\r\nexport * from './lib/models/tofunctionalpropertyvalue.interface';\r\nexport * from './lib/models/xrmaccess.model';\r\nexport * from './lib/models/xrmcontext.interface';\r\nexport * from './lib/models/xrmcontextinstance.model';\r\nexport * from './lib/models/xrmentitykey.model';\r\nexport * from './lib/models/xrmformkey.model';\r\nexport * from './lib/models/xrmqueryresult.interface';\r\nexport * from './lib/models/xrmtransaction.model';\r\nexport * from './lib/models/xrmtransactionitem.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XrmStateService","map","i2.XrmFormService","i2.XrmService","i2.XrmContextService"],"mappings":"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"}