// @ts-nocheck
import React from 'react';
import Base from '../base/base';


import MenuList from './components/menu-list/menu-list';

import MenuDetail from './components/menu-detail/menu-detail';

import MenuAdd from './components/menu-add/menu-add';

import { DateUtils } from './../../lib/';


// import MenuAdd from '../modules/common/resources/menu-add/menu-add';

// import MenuDetail from '../modules/common/resources/menu-detail/menu-detail';

// import { Models, Pages, Modules } from './index';

class MenusAPI extends Base {

    constructor() {

        super();

        // this.id = model.id;

        // this.name = 'Menus';

        this.fields = [
            {
                field: 'name',
                caption: 'Name',
            },
            {
                field: 'path',
                caption: 'Path',
            },
        ];
    }

    get getEndpoint() {
        return 'core-menus';
    }

    get path() {
        return `menus`;
    }

    get getName() {
        return this.modelName;
    }

    get modelName() {
        return `core-menus`;
    }

    get route() {
        return 'core-menus';
    }

    get disableAddModal() {
        return false;
    }

    get disableEditModal() {
        return false;
    }

    /**
     *
     */
    get columns() {
        return [

            {
                caption: 'Id',
                field: 'id',
                key: 'id',
            },

            {
                caption: 'Name',
                field: 'name',
                key: 'name',
            },

            {
                caption: 'Description',
                field: 'description',
                key: 'description',
            },

            {
                caption: 'Path',
                field: 'path',
                key: 'path',
            },

            {
                caption: 'Route',
                field: 'route',
                key: 'route',
            },
            {
                caption: 'Created at',
                field: 'created_at',
                key: 'created_at',
                render: (ele) => {
                    return ele.created_at ? DateUtils.formatDate(ele.created_at) : null
                },
            },
        ];
    }

    ListComponent = MenuList;

    DetailComponent = MenuDetail;

    ModalAddComponent = (props) => <MenuAdd model={this} {...props} />;

    // ModalAddComponent = (props) => <GenericAdd model={this} {...props} />;

    /**
     * Get the data from the table
     */
    // get = (queries) => {
    //     return this.getMethod(queries).then((result) => {
    //         return Promise.all(result.menus.map((menu) => this.loadModule(menu))).then((result) => {
    //             return { menus: result };
    //         });
    //     });
    // };

    /**
     * Load the module of the menu
     *
     * @param {*} param0
     * @returns
     */
    loadModule = (menu) => { };

    /**
     * load the detail of menu
     *
     * @param {*} menu
     * @returns
     */
    getDetail = (id) => {
        return this.getRecord(id).then((result) => {
            return result;
        });
    };

    /**
     * load the list of menu
     *
     * @param {*} menu
     * @returns
     */
    getMenus = (config) => {

        return this.get({ url: `core-menus/get-menus`, config: config }).then((result) => {
            return result;
       });

    };



    getCoreMenus = () => {

        return [

            // {

            //     caption: 'Configure',
            //     sub_menus: [

            //         // {
            //         //     // is_visible: true,
            //         //     path: '/process',
            //         //     caption: 'Process',
            //         // },

            //         // {
            //         //     path: '/models',
            //         //     caption: 'Models',
            //         // },

            //         {
            //             path: '/pages',
            //             caption: 'Pages',
            //         },


                    // {
                    //     path: '/forms',
                    //     caption: 'Forms',
                    // },

                    // {
                    //     path: '/actions',
                    //     caption: 'Actions',
                    // },

                    // {
                    //     path: '/permissions',
                    //     caption: 'Permissions',
                    // },

                    // {
                    //     path: '/questions',
                    //     caption: 'Questions',
                    // },


                    // {
                    //     path: '/lookup-types',
                    //     caption: 'Lookup Types',
                    // },

            //     ],
            // },

            // {

            //     caption: 'Access Control',
            //     sub_menus: [
            //         // {
            //         //     path: '/users',
            //         //     caption: 'Users',
            //         // },

            //         {
            //             path: '/roles',
            //             caption: 'Roles',
            //         },

            //         {
            //             path: '/menus',
            //             caption: 'Menus',
            //         },
            //     ]
            // },

            // {

            //     caption: 'Settings',
            //     sub_menus: [
            //         {
            //             path: '/branches',
            //             caption: 'Branches',
            //         },

            //         {
            //             path: '/departments',
            //             caption: 'Departments',
            //         },

            //         {
            //             path: '/financial-years',
            //             caption: 'Financial Years',
            //         },
            //         {
            //             path: '/invoice-numbers',
            //             caption: 'Invoice Numbers',
            //         },

            //     ]
            // },
            // {
            //     caption: 'Preferences',
            //     sub_menus: [{
            //         path: '/change-password',
            //         caption: 'Change Password'
            //     }]
            // }

        ];

    }

}

export default MenusAPI;
