[
  {
    "name": "Master Entities Export Template",
    "slug": "master_entities_export_template",
    "description": "Master Entities Export Template",
    "max_row_count": 500,
    "header_row": 1,
    "data_start_row": 2,
    "data_end_row": 500,
    "data_filepath": "export/master_entities_template.xlsx",
    "lineitems": [
      {
        "field_name": "name",
        "display_name": "Entity Name",
        "field_table": "master_entities",
        "order_no": 0,
        "default_value": null,
        "column_name": "Entity Name",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "entity_name",
        "display_name": "Entity Slug",
        "field_table": "master_entities",
        "order_no": 1,
        "default_value": null,
        "column_name": "Entity Slug",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "entity_type",
        "display_name": "Entity Type",
        "field_table": "master_entities",
        "order_no": 2,
        "default_value": null,
        "column_name": "Entity Type",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "primary_table",
        "display_name": "Primary Table",
        "field_table": "master_entities",
        "order_no": 3,
        "default_value": null,
        "column_name": "Primary Table",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "form_information",
        "display_name": "Form Information",
        "field_table": "master_entities",
        "order_no": 4,
        "default_value": null,
        "column_name": "Form Information",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "associated_tables",
        "display_name": "Associated Tables",
        "field_table": "master_entities",
        "order_no": 5,
        "default_value": null,
        "column_name": "Associated Tables",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "query_information",
        "display_name": "Query Information",
        "field_table": "master_entities",
        "order_no": 6,
        "default_value": null,
        "column_name": "Query Information",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "line_items",
        "display_name": "Line Items",
        "field_table": "master_entity_line_items",
        "order_no": 7,
        "default_value": null,
        "column_name": "Line Items",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "static_page_content",
        "display_name": "Static Page Content",
        "field_table": "master_entities",
        "order_no": 8,
        "default_value": null,
        "column_name": "Static Page Content",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "add_query_information",
        "display_name": "Add Query Information",
        "field_table": "master_entities",
        "order_no": 9,
        "default_value": null,
        "column_name": "Add Query Information",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "edit_query_information",
        "display_name": "Edit Query Information",
        "field_table": "master_entities",
        "order_no": 10,
        "default_value": null,
        "column_name": "Edit Query Information",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "preset_query_information",
        "display_name": "Preset Query Information",
        "field_table": "master_entities",
        "order_no": 11,
        "default_value": null,
        "column_name": "Preset Query Information",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "dashboard_wizard_group_id",
        "display_name": "Dashboard Wizard Group",
        "field_table": "master_entities",
        "order_no": 12,
        "default_value": null,
        "column_name": "Dashboard Wizard Group",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "dashboard_wizard_type",
        "display_name": "Dashboard Wizard Type",
        "field_table": "master_entities",
        "order_no": 13,
        "default_value": null,
        "column_name": "Dashboard Wizard Type",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "dashboard_wizard_rows",
        "display_name": "Dashboard Wizard Rows",
        "field_table": "master_entities",
        "order_no": 14,
        "default_value": null,
        "column_name": "Dashboard Wizard Rows",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "Integer"
      },
      {
        "field_name": "dashboard_wizard_columns",
        "display_name": "Dashboard Wizard Columns",
        "field_table": "master_entities",
        "order_no": 15,
        "default_value": null,
        "column_name": "Dashboard Wizard Columns",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "Integer"
      },
      {
        "field_name": "dashboard_wizard_order_no",
        "display_name": "Dashboard Wizard Order No",
        "field_table": "master_entities",
        "order_no": 16,
        "default_value": null,
        "column_name": "Dashboard Wizard Order No",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "Float"
      },
      {
        "field_name": "dashboard_wizard_options",
        "display_name": "Dashboard Wizard Options",
        "field_table": "master_entities",
        "order_no": 17,
        "default_value": null,
        "column_name": "Dashboard Wizard Options",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "is_admin_module",
        "display_name": "Is Admin Module",
        "field_table": "master_entities",
        "order_no": 18,
        "default_value": null,
        "column_name": "Is Admin Module",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "permissions",
        "display_name": "Permissions",
        "field_table": "permissions",
        "order_no": 19,
        "default_value": null,
        "column_name": "Permissions",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "status_id",
        "display_name": "Status",
        "field_table": "master_entities",
        "order_no": 20,
        "default_value": null,
        "column_name": "Status",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      }
    ],
    "queries": [
      {
        "query_string": "SELECT \n    master_entities.name as master_entities__name, entity_name as master_entities__entity_name, entity_type as master_entities__entity_type, primary_table as master_entities__primary_table, \n    form_information as master_entities__form_information, associated_tables as master_entities__associated_tables, query_information as master_entities__query_information, \n    COALESCE(\n        json_agg(\n            DISTINCT jsonb_build_object(\n                'master_grid_id', 0,\n                'field_name', master_entity_line_items.field_name,\n                'display_name', master_entity_line_items.display_name,\n                'order_no', master_entity_line_items.order_no,\n                'is_grid_column', master_entity_line_items.is_grid_column,\n                'is_searchable', master_entity_line_items.is_searchable,\n                'is_sortable', master_entity_line_items.is_sortable,\n                'field_type_id', master_entity_line_items.field_type_id,\n                'status_id', master_entity_line_items.status_id,\n                'company_id', master_entity_line_items.company_id\n            )\n        ) FILTER (WHERE master_entity_line_items.id IS NOT NULL), NULL\n    ) as master_entity_line_items__line_items,\n    static_page_content as master_entities__static_page_content, add_query_information as master_entities__add_query_information, edit_query_information as master_entities__edit_query_information,\n    preset_query_information as master_entities__preset_query_information, wizard_group.name as master_entities__dashboard_wizard_group_id, dashboard_wizard_type as master_entities__dashboard_wizard_type,\n    dashboard_wizard_rows as master_entities__dashboard_wizard_rows, dashboard_wizard_columns as master_entities__dashboard_wizard_columns, dashboard_wizard_order_no as master_entities__dashboard_wizard_order_no,\n    dashboard_wizard_options as master_entities__dashboard_wizard_options, \n\tCASE \n        WHEN is_admin_module = true THEN 'Yes'\n        ELSE 'No'\n    END AS master_entities__is_admin_module,\n    COALESCE(string_agg(DISTINCT permissions.name, ', ') FILTER (WHERE permissions.name IS NOT NULL), '') AS permissions__permissions, \n    statuses.name AS master_entities__status_id\n    FROM master_entities \nLEFT JOIN\n\tstatuses ON statuses.id = master_entities.status_id\nLEFT JOIN \n\twizard_group ON wizard_group.id = master_entities.dashboard_wizard_group_id\nLEFT JOIN \n    permissions ON permissions.entity_id = master_entities.id\nLEFT JOIN \n    master_entity_line_items ON master_entity_line_items.master_grid_id = master_entities.id\n\tWHERE master_entities.status_id != 3 AND master_entities.entity_name NOT LIKE 'documentation_%'\nGROUP BY \n    master_entities.id, master_entities.name, statuses.name, wizard_group.name;",
        "query_name": "query1",
        "query_procedure": "query",
        "is_individual": false,
        "order_no": 1
      }
    ]
  },
  {
    "name": "Menu Items Export Template",
    "slug": "menu_items_export_template",
    "description": "Menu Items Export Template",
    "max_row_count": 1000,
    "header_row": 1,
    "data_start_row": 2,
    "data_end_row": 1000,
    "data_filepath": "export/menu_items_template.xlsx",
    "lineitems": [
      {
        "field_name": "menu_id",
        "display_name": "Menu Name",
        "field_table": "menu_items",
        "order_no": 1,
        "default_value": null,
        "column_name": "Menu Name",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "name",
        "display_name": "Menu Item Name",
        "field_table": "menu_items",
        "order_no": 2,
        "default_value": null,
        "column_name": "Menu Item Name",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "target",
        "display_name": "Menu Item URL",
        "field_table": "menu_items",
        "order_no": 3,
        "default_value": null,
        "column_name": "Menu Item URL",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "parent_id",
        "display_name": "Parent Menu Item",
        "field_table": "menu_items",
        "order_no": 4,
        "default_value": null,
        "column_name": "Parent Menu Item",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "permission_id",
        "display_name": "Permission",
        "field_table": "menu_items",
        "order_no": 5,
        "default_value": null,
        "column_name": "Permission",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "entity_id",
        "display_name": "Entity Name",
        "field_table": "menu_items",
        "order_no": 6,
        "default_value": null,
        "column_name": "Entity Name",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "link_type",
        "display_name": "Link Type",
        "field_table": "menu_items",
        "order_no": 7,
        "default_value": null,
        "column_name": "Link Type",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "order_no",
        "display_name": "Order No",
        "field_table": "menu_items",
        "order_no": 8,
        "default_value": null,
        "column_name": "Order No",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "Float"
      },
      {
        "field_name": "menu_img",
        "display_name": "Menu Icon",
        "field_table": "menu_items",
        "order_no": 9,
        "default_value": null,
        "column_name": "Menu Icon",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "status_id",
        "display_name": "Status",
        "field_table": "menu_items",
        "order_no": 10,
        "default_value": null,
        "column_name": "Status",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      }
    ],
    "queries": [
      {
        "query_string": "WITH RECURSIVE menu_hierarchy AS (\n    SELECT \n        id, menu_id, name, target, parent_id, \n        permission_id, entity_id, order_no, \n        menu_img, link_type, status_id,  \n        1 AS level,\n        1::TEXT AS hierarchy_path\n    FROM \n        menu_items\n    WHERE \n        parent_id IS NULL AND status_id != 3\n\n    UNION ALL\n\n    SELECT \n        mi.id, mi.menu_id, mi.name, mi.target, mi.parent_id, \n        mi.permission_id, mi.entity_id, mi.order_no, \n        mi.menu_img, mi.link_type, mi.status_id,\n        menu_hierarchy.level + 1,\n        menu_hierarchy.hierarchy_path || '>' || (menu_hierarchy.level + 1)::TEXT\n    FROM \n        menu_items mi\n    INNER JOIN \n        menu_hierarchy ON mi.parent_id = menu_hierarchy.id\n    WHERE \n        mi.status_id != 3\n)\n\nSELECT \n    menu.slug AS menu_items__menu_id, \n    menu_hierarchy.name AS menu_items__name, \n    menu_hierarchy.target as menu_items__target, \n    menu_items.name AS menu_items__parent_id, \n    permissions.slug AS menu_items__permission_id, \n    master_entities.entity_name AS menu_items__entity_id, \n    menu_hierarchy.order_no AS menu_items__order_no, \n    menu_hierarchy.menu_img as menu_items__menu_img, \n    CASE \n        WHEN menu_hierarchy.link_type = 1 THEN 'General'\n        WHEN menu_hierarchy.link_type = 2 THEN 'Action'\n        WHEN menu_hierarchy.link_type = 3 THEN 'Action and General'\n        WHEN menu_hierarchy.link_type = 4 THEN 'External'\n        ELSE NULL  \n    END AS menu_items__link_type, \n    statuses.name AS menu_items__status_id \nFROM \n    menu_hierarchy \nLEFT JOIN \n    menu ON menu.id = menu_hierarchy.menu_id\nLEFT JOIN \n    menu_items ON menu_items.id = menu_hierarchy.parent_id\nLEFT JOIN \n    permissions ON permissions.id = menu_hierarchy.permission_id\nLEFT JOIN \n    master_entities ON master_entities.id = menu_hierarchy.entity_id\nLEFT JOIN \n    statuses ON statuses.id = menu_hierarchy.status_id\nORDER BY \n    menu.slug,\n    menu_hierarchy.hierarchy_path, \n    menu_hierarchy.order_no ASC;",
        "query_name": "query1",
        "query_procedure": "query",
        "is_individual": false,
        "order_no": 1
      }
    ]
  },
  {
    "name": "Users Export Template",
    "slug": "users_export_template",
    "description": "Users Export Template",
    "max_row_count": 150,
    "header_row": 4,
    "data_start_row": 5,
    "data_end_row": 155,
    "data_filepath": "export/user_template.xlsx",
    "lineitems": [
      {
        "field_name": "username",
        "display_name": "Username",
        "field_table": "users",
        "order_no": 1,
        "default_value": null,
        "column_name": "Username",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "email",
        "display_name": "Email",
        "field_table": "users",
        "order_no": 2,
        "default_value": null,
        "column_name": "Email",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "first_name",
        "display_name": "First Name",
        "field_table": "user_details",
        "order_no": 3,
        "default_value": null,
        "column_name": "First Name",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "last_name",
        "display_name": "Last Name",
        "field_table": "user_details",
        "order_no": 4,
        "default_value": null,
        "column_name": "Last Name",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "code",
        "display_name": "Code",
        "field_table": "user_details",
        "order_no": 5,
        "default_value": null,
        "column_name": "Code",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "gender",
        "display_name": "Gender",
        "field_table": "user_details",
        "order_no": 6,
        "default_value": null,
        "column_name": "Gender",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "dob",
        "display_name": "Date Of Birth",
        "field_table": "user_details",
        "order_no": 7,
        "default_value": null,
        "column_name": "Date of Birth",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "designation_id",
        "display_name": "Designation",
        "field_table": "designations",
        "order_no": 8,
        "default_value": null,
        "column_name": "Designation",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "department_id",
        "display_name": "Department",
        "field_table": "departments",
        "order_no": 9,
        "default_value": null,
        "column_name": "Department",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      },
      {
        "field_name": "role_id",
        "display_name": "Roles",
        "field_table": "roles",
        "order_no": 10,
        "default_value": null,
        "column_name": "Roles",
        "is_individual": false,
        "individual_column": null,
        "field_type_id": "String"
      }
    ],
    "queries": [
      {
        "query_string": "SELECT \n    u.username AS users__username,\n    u.email AS users__email,\n    ud.first_name AS user_details__first_name,\n    ud.last_name AS user_details__last_name,\n    ud.code AS user_details__code,\n    ud.dob AS user_details__dob,\n    ud.gender AS user_details__gender,\n    d.code AS designations__designation_id,\n    dep.code AS departments__department_id,\n    STRING_AGG(DISTINCT r.name, ', ') AS roles__role_id\nFROM \n    users u\n    \n    LEFT JOIN user_details ud ON u.company_id = ud.company_id \n        AND u.id = ud.user_id\n    \n    LEFT JOIN designations d ON ud.company_id = d.company_id \n        AND ud.designation_id = d.id\n    \n    LEFT JOIN departments dep ON ud.company_id = dep.company_id \n        AND ud.department_id = dep.id\n    \n    LEFT JOIN user_roles ur ON u.company_id = ur.company_id \n        AND u.id = ur.user_id\n    LEFT JOIN roles r ON ur.company_id = r.company_id \n        AND ur.role_id = r.id\nWHERE \n    u.deleted_at IS NULL\n    AND ud.deleted_at IS NULL\n    AND d.deleted_at IS NULL\n    AND dep.deleted_at IS NULL\n    AND r.deleted_at IS NULL AND r.name NOT IN ('super_admin', 'company_admin') AND ($search_params) AND ($having_params)\nGROUP BY \n    u.id,  \n    u.username,\n    u.email,\n    ud.first_name,\n    ud.last_name,\n    ud.code,\n    ud.dob,\n    ud.gender,\n    d.code,\n    dep.code;",
        "query_name": "query1",
        "query_procedure": "query",
        "is_individual": false,
        "order_no": 1
      }
    ]
  }
]
