File

angular/projects/researchdatabox/portal-ng-common/src/lib/appconfig.service.ts

Index

Properties

Properties

fieldOrder
fieldOrder: string[]
Type : string[]
model
model: object
Type : object
schema
schema: object
Type : object
import { map, firstValueFrom } from 'rxjs';
import { Inject, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { APP_BASE_HREF } from '@angular/common';

import { ConfigService } from './config.service';
import { UtilityService } from './utility.service';
import { HttpClientService } from './httpClient.service';
import { LoggerService } from './logger.service';
import { merge as _merge } from 'lodash-es';

export interface AppConfig {
  schema: object;
  model: object;
  fieldOrder:string[];
}


/**
 * User-centric functions. 
 * 
 * Note: functions will be ported over as these are consumed by the apps/
 *
 * Author: <a href='https://github.com/shilob' target='_blank'>Shilo Banihit</a>
 *
 * 
 */
@Injectable()
export class AppConfigService extends HttpClientService {

  private requestOptions:any = null as any;
  
  constructor( 
    @Inject(HttpClient) protected override http: HttpClient, 
    @Inject(APP_BASE_HREF) public override rootContext: string,
    @Inject(UtilityService) protected override utilService: UtilityService,
    @Inject(ConfigService) protected override configService: ConfigService,
    @Inject(LoggerService) private loggerService: LoggerService
  ) {
    super(http, rootContext, utilService, configService);
  }
  
  public override async waitForInit(): Promise<any> {
    await super.waitForInit();
    this.requestOptions = this.reqOptsJsonBodyOnly;
    this.enableCsrfHeader();
    _merge(this.requestOptions, {context: this.httpContext});
    return this;
  }

  

  public async getAppConfigForm(appConfigId:string): Promise<AppConfig> {
    let url = `${this.brandingAndPortalUrl}/appconfig/form/${appConfigId}`;
    const req = this.http.get<AppConfig>(url, {responseType: 'json', observe: 'body', context: this.httpContext});
    req.pipe(
      map((data:any) => {
        return data as AppConfig;
      })
    );
    let result = await firstValueFrom(req);
    return result;
  } 

  public async saveAppConfig(appConfigId:string, model:any): Promise<AppConfig> {
    let url = `${this.brandingAndPortalUrl}/appconfig/form/${appConfigId}`;
    const req = this.http.post<AppConfig>(url, model, {responseType: 'json', observe: 'body', context: this.httpContext});
    req.pipe(
      map((data:any) => {
        return data as AppConfig;
      })
    );
    let result = await firstValueFrom(req);
    return result;
  } 

  
}

results matching ""

    No results matching ""