File

src/admin/jurisdiction.service.ts

Index

Properties
Methods

Methods

Async setNewJurisdictionFields
setNewJurisdictionFields(undefined: ISetNewJurisdictionFields)
Parameters :
Name Type Optional
ISetNewJurisdictionFields No
Returns : unknown

Properties

Private Readonly userCmsService
Type : UserCmsService
Decorators :
@Inject(UserCmsService)
Private Readonly userService
Type : UserService
Decorators :
@Inject(UserService)
import { Inject, Injectable } from "@nestjs/common";
import { keccak256, hexlify, toUtf8Bytes } from "ethers";

import { BatchRegistry, RegistryName } from "src/common/interfaces";
import { ISetNewJurisdictionFields } from "./admin.interface";
import { OnChainDataField } from "src/shared/onchainDataFields/entities/onChainDataField.entity";
import {
  convertToPaddedHexString,
  orderGroupRegistryFields,
} from "src/common/utils";
import { UserService } from "src/user/user.service";
import { UserCmsService } from "src/user/user.cms.service";

@Injectable()
export class JurisdictionService {
  @Inject(UserService)
  private readonly userService: UserService;

  @Inject(UserCmsService)
  private readonly userCmsService: UserCmsService;

  async setNewJurisdictionFields({
    userJwtPayload,
    fields,
  }: ISetNewJurisdictionFields) {
    const onchainFields: OnChainDataField[] = [];
    const batchRegistries: BatchRegistry[] = [];

    fields.forEach((field) => {
      const dataFieldHashedName = keccak256(
        hexlify(toUtf8Bytes(field.dataFieldName)),
      );

      const dataFieldHashedLinkedName = keccak256(
        hexlify(toUtf8Bytes(field.dataFieldLinkedName)),
      );

      onchainFields.push({
        name: field.dataFieldName,
        hash: dataFieldHashedName,
        linkedName: field.dataFieldLinkedName,
        linkedHash: dataFieldHashedLinkedName,
        linkedType: field.dataFieldLinkedType,
      });
      batchRegistries.push({
        id: isNaN(Number(field.id))
          ? keccak256(hexlify(toUtf8Bytes(field.id)))
          : keccak256(convertToPaddedHexString(field.id)),
        dataFieldType: field.dataFieldType,
        dataFieldName: field.dataFieldName,
        dataFieldValue: field.dataFieldValue,
      });
    });

    // Adding onchain field lookup table in cms
    //  const cmsFieldsResult = await this.userCmsService.getOnboardOnchainFields();

    return await Promise.all([
      this.userService.setRegistryData({
        registries: orderGroupRegistryFields(batchRegistries),
        registryName: RegistryName.JurisdictionRegistry,
        userJwtPayload,
        onchainFields,
      }),
      // this.userCmsService.addNewOnchainFields(cmsFieldsResult.data, fields),
    ]);
  }
}

results matching ""

    No results matching ""