| import { Injectable } from '@angular/core';
| import { HttpClient } from '@angular/common/http';
| import { switchMap, map, catchError } from 'rxjs/operators';
| import { BefProxy, UriService, Uri } from '@farris/bef';
= '\n'
= '\n'
| @Injectable()
| export class #{variable.externalPrefix}#{variable.proxyName} extends BefProxy {
= '\n'
if (variable.restUri)
  |    private apiUrl= '#{variable.restUri.toLowerCase()}';
  = '\n'
else
  |    private apiUrl= 'api/scm/sd/v1.0/#{variable.name.toLowerCase().replace("entity","service")}';
  = '\n'
|      constructor(httpClient: HttpClient, uriService: UriService) {
|        super(httpClient, uriService);
|        this.baseUri = uriService.extendUri(this.apiUrl);
|    }
= '\n'
if(variable.Content && variable.Content.Service && variable.Content.Service.Operations && variable.Content.Service.Operations.length)
  each item in variable.Content.Service.Operations
    if(item.Extend1=="Custom")
      | #{item.Code}(
      if(item.Parameters && item.Parameters.length)
        each itemParameter,itemParameterIndex in item.Parameters
          if(itemParameter.In && itemParameter.Code!="requestInfo" && itemParameter.In && itemParameter.Code!="sessionId")
            | #{itemParameter.Code}:any
            if(itemParameterIndex<item.Parameters.length-1)
              | ,
      |)
      |{
      | const uri = new Uri(this.uriService.extendUri(this.apiUrl)+'#{item.Template}',{
      if(item.Parameters && item.Parameters.length)
        = '\n'
        each itemParameter,itemParameterIndex in item.Parameters
          if(itemParameter.In=="Path")
            | #{itemParameter.Code}:#{itemParameter.Code},
            = '\n'
      |  });
      | const url = uri.toString();
      | const method = '#{item.HttpMethod}';
      |   const options = {
      |    params: {
      if(item.Parameters && item.Parameters.length)
        = '\n'
        each itemParameter,itemParameterIndex in item.Parameters
          if(itemParameter.In=="Query")
            | #{itemParameter.Code}:#{itemParameter.Code},
            = '\n'
      = '\n'
      |    },
      |    headers: {
      if(item.Parameters && item.Parameters.length)
        = '\n'
        each itemParameter,itemParameterIndex in item.Parameters
          if(itemParameter.In=="Header")
            if(itemParameter.Code!="sessionId")
              | #{itemParameter.Code}:#{itemParameter.Code},
            else
              | sessionId:null,
            = '\n'
      |    },
      |    body: {
      if(item.Parameters && item.Parameters.length)
        = '\n'
        each itemParameter,itemParameterIndex in item.Parameters
          if(itemParameter.In=="Body")
            if(itemParameter.Code!="requestInfo")
              | #{itemParameter.Code}:#{itemParameter.Code},
            else
              | requestInfo:null,
            = '\n'
      |    }
      |};
      |   return this.invoke(url, method, options);
      |}
| }