import { getEnvs } from "@/libs/environment/env"; import type { IAddon } from "@/models/addon.model"; import { SingletonRedisRepository } from "../repositories/redis.repository"; export interface IClientDomainAddonResponse { Id: number; AddonId: number; DomainId: number; StartDate: null; RenewalDate: null; Addon: Addon; DomainAddonSettings: DomainAddonSetting[]; Status: number; } interface DomainAddonSetting { Id: number; DomainAddonId: number; PropertyValueId: number; PropertyValue: string; PropertyId: number; PropertyName: string; } interface Addon { Id: number; Name: string; DomainType: null; Description: null; ProductTypes: ProductType[]; } interface ProductType { Id: number; Name: string; Code: number; LanguageCode: null; IsTp: boolean; GordiosCode: null | number; } export interface IAddonListResponse { Id: number; AddonId: number; DomainId: number; StartDate?: any; RenewalDate?: any; Status: number; CreateDate: string; UpdateDate: string; CreatedByUserId: string; UpdatedByUserId: string; Addon: IAddon; Domain?: any; DomainAddonSettings: any[]; } export const getAddonListService = async (baseUrl: string, token: string) => { const envs = getEnvs(baseUrl); const url = `${envs.wlDisplayUrl}/api/clientdomainaddon/list`; try { const response = await fetch(url, { method: "GET", headers: { Authorization: `Bearer ${token}` }, }); const responseJson = await response.json(); return responseJson as IAddonListResponse[]; } catch (error) { return null; } }; export const getClientDomainAddonService = async ( baseUrl: string, token: string, ) => { const envs = getEnvs(baseUrl); const url = `${envs.wlDisplayUrl}/api/clientdomainaddon`; try { const response = await fetch(url, { method: "GET", headers: { Authorization: `Bearer ${token}` }, }); const responseJson = await response.json(); return responseJson as IClientDomainAddonResponse[]; } catch (error) { return null; } }; export const setAddonsToRedis = async ( baseUrl: string, addons: IClientDomainAddonResponse[], ) => { await SingletonRedisRepository.set( `${baseUrl}_addons`, JSON.stringify(addons), 10 * 60, ); }; export const getAddonsFromRedis = async ( baseUrl: string, ): Promise => { const result = await SingletonRedisRepository.get(`${baseUrl}_addons`); if (result && result !== "") { return JSON.parse(result); } return null; };