export interface ConfigPermissionModel {
    userLevel: string
    tdesc: string
    edesc: string
    companyId: string
    menuBody: MenuBodyModel[]
}


export class MyConfigPermissionModel implements ConfigPermissionModel {
    userLevel: string
    tdesc: string
    edesc: string
    companyId: string
    menuBody: MenuBodyModel[]
    constructor(data?: Partial<ConfigPermissionModel>) {
        this.userLevel = data?.userLevel || ""
        this.tdesc = data?.tdesc || ""
        this.edesc = data?.edesc || ""
        this.companyId = data?.companyId || ""
        this.menuBody = data?.menuBody?.map(x => new MyMenuBodyModel(x)) || []
    }
}

export interface MenuBodyModel {
    path: string
    show: boolean
    type: string
    title: string
    active: boolean
    children: {
        path: string
        show: boolean
        type: string
        title: string
    }[]
    selected: boolean
    headTitle?: string;
    headTitle2?: string;
    icon?: string;
    badgeValue?: string;
    badgeClass?: string;
    bookmark?: boolean;
    children2?: {
        path: string
        show: boolean
        type: string
        title: string
    }[];
    Menusub?: boolean;
    target?: boolean;
}


export class MyMenuBodyModel implements MenuBodyModel {
    path: string
    show: boolean
    type: string
    title: string
    active: boolean
    children: {
        path: string
        show: boolean
        type: string
        title: string
    }[]
    selected: boolean
    headTitle?: string;
    headTitle2?: string;
    icon?: string;
    badgeValue?: string;
    badgeClass?: string;
    bookmark?: boolean;
    children2?: {
        path: string
        show: boolean
        type: string
        title: string
    }[];
    Menusub?: boolean;
    target?: boolean;
    constructor(data?: Partial<MenuBodyModel>) {
        this.path = data?.path || ''
        this.show = data?.show ?? false
        this.type = data?.type || ""
        this.title = data?.title || ""
        this.active = data?.active ?? false
        this.children = data?.children?.map(x => ({
            path: x.path || '',
            show: x.show ?? false,
            type: x.type || '',
            title: x.title || ''
        })) || []
        this.selected = data?.selected ?? false
        // this.headTitle = data?.headTitle || ""
        // this.headTitle2 = data?.headTitle2 || ""
        // this.icon = data?.icon || ""
        // this.badgeValue = data?.badgeValue || ""
        // this.badgeClass = data?.badgeClass || ""
        // this.bookmark = data?.bookmark ?? false
        // this.children2 = data?.children2?.map(x => ({
        //     path: x.path || '',
        //     show: x.show ?? false,
        //     type: x.type || '',
        //     title: x.title || ''
        // })) || []
        // this.Menusub = data?.Menusub ?? false
        // this.target = data?.target ?? false
    }
}