import { RouterView } from 'vue-router';

export default {
    path: '/customer',
    name: 'Customer',
    meta: {
        title: 'customers',
        icon: 'vn:client',
        moduleName: 'Customer',
        keyBinding: 'c',
    },
    component: RouterView,
    redirect: { name: 'CustomerMain' },
    menus: {
        main: [
            'CustomerList',
            'CustomerPayments',
            'CustomerNotifications',
            'CustomerDefaulter',
        ],
        card: [
            'CustomerBasicData',
            'CustomerFiscalData',
            'CustomerBillingData',
            'CustomerAddress',
            'CustomerNotes',
            'CustomerCredits',
            'CustomerGreuges',
            'CustomerBalance',
            'CustomerRecoveries',
            'CustomerWebAccess',
            'CustomerLog',
            'CustomerSms',
            'CustomerCreditManagement',
            'CustomerOthers',
        ],
    },
    children: [
        {
            path: '',
            name: 'CustomerMain',
            component: () => import('src/components/common/VnSectionMain.vue'),
            redirect: { name: 'CustomerList' },
            children: [
                {
                    path: 'list',
                    name: 'CustomerList',
                    meta: {
                        title: 'list',
                        icon: 'view_list',
                    },
                    component: () => import('src/pages/Customer/CustomerList.vue'),
                },
                {
                    path: 'create',
                    name: 'CustomerCreate',
                    meta: {
                        title: 'customerCreate',
                        icon: 'add',
                    },
                    component: () => import('src/pages/Customer/CustomerCreate.vue'),
                },
                {
                    path: 'payments',
                    name: 'CustomerPayments',
                    meta: {
                        title: 'webPayments',
                        icon: 'vn:onlinepayment',
                    },
                    component: () =>
                        import('src/pages/Customer/Payments/CustomerPayments.vue'),
                },
                {
                    path: 'notifications',
                    name: 'CustomerNotifications',
                    meta: {
                        title: 'notifications',
                        icon: 'campaign',
                    },
                    component: () =>
                        import(
                            'src/pages/Customer/Notifications/CustomerNotifications.vue'
                        ),
                },
                {
                    path: 'defaulter',
                    name: 'CustomerDefaulter',
                    meta: {
                        title: 'defaulter',
                        icon: 'vn:defaulter',
                    },
                    component: () =>
                        import('src/pages/Customer/Defaulter/CustomerDefaulter.vue'),
                },
            ],
        },
        {
            name: 'CustomerCard',
            path: ':id',
            component: () => import('src/pages/Customer/Card/CustomerCard.vue'),
            redirect: { name: 'CustomerSummary' },
            children: [
                {
                    name: 'CustomerSummary',
                    path: 'summary',
                    meta: {
                        title: 'summary',
                        icon: 'launch',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerSummary.vue'),
                },
                {
                    path: 'basic-data',
                    name: 'CustomerBasicData',
                    meta: {
                        title: 'basicData',
                        icon: 'vn:settings',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerBasicData.vue'),
                },
                {
                    path: 'fiscal-data',
                    name: 'CustomerFiscalData',
                    meta: {
                        title: 'fiscalData',
                        icon: 'vn:dfiscales',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerFiscalData.vue'),
                },
                {
                    path: 'billing-data',
                    name: 'CustomerBillingData',
                    meta: {
                        title: 'billingData',
                        icon: 'vn:payment',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerBillingData.vue'),
                },
                {
                    path: 'address',
                    name: 'AddressCard',
                    redirect: { name: 'CustomerAddress' },
                    children: [
                        {
                            path: '',
                            name: 'CustomerAddress',
                            meta: {
                                icon: 'vn:delivery',
                                title: 'consignees',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerAddress.vue'),
                        },
                        {
                            path: 'create',
                            name: 'CustomerAddressCreate',
                            meta: {
                                title: 'address-create',
                            },
                            component: () =>
                                import(
                                    'src/pages/Customer/components/CustomerAddressCreate.vue'
                                ),
                        },
                        {
                            path: ':addressId',
                            name: 'CustomerAddressEditCard',
                            redirect: { name: 'CustomerAddressEdit' },
                            children: [
                                {
                                    path: 'edit',
                                    name: 'CustomerAddressEdit',
                                    meta: {
                                        title: 'addressEdit',
                                    },
                                    component: () =>
                                        import(
                                            'src/pages/Customer/components/CustomerAddressEdit.vue'
                                        ),
                                },
                            ],
                        },
                    ],
                },
                {
                    path: 'notes',
                    name: 'CustomerNotes',
                    meta: {
                        title: 'notes',
                        icon: 'vn:notes',
                    },
                    component: () => import('src/pages/Customer/Card/CustomerNotes.vue'),
                },
                {
                    path: 'credits',
                    name: 'CustomerCredits',
                    meta: {
                        title: 'credits',
                        icon: 'vn:credit',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerCredits.vue'),
                },
                {
                    path: 'greuges',
                    name: 'CustomerGreuges',
                    meta: {
                        title: 'greuges',
                        icon: 'vn:greuge',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerGreuges.vue'),
                },
                {
                    path: 'balance',
                    name: 'CustomerBalance',
                    meta: {
                        title: 'balance',
                        icon: 'balance',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerBalance.vue'),
                },
                {
                    path: 'recoveries',
                    name: 'CustomerRecoveries',
                    meta: {
                        title: 'recoveries',
                        icon: 'vn:recovery',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerRecoveries.vue'),
                },
                {
                    path: 'web-access',
                    name: 'CustomerWebAccess',
                    meta: {
                        title: 'webAccess',
                        icon: 'vn:web',
                    },
                    component: () =>
                        import('src/pages/Customer/Card/CustomerWebAccess.vue'),
                },
                {
                    path: 'log',
                    name: 'CustomerLog',
                    meta: {
                        title: 'log',
                        icon: 'vn:History',
                    },
                    component: () => import('src/pages/Customer/Card/CustomerLog.vue'),
                },
                {
                    path: 'sms',
                    name: 'CustomerSms',
                    meta: {
                        title: 'sms',
                        icon: 'sms',
                    },
                    component: () => import('src/pages/Customer/Card/CustomerSms.vue'),
                },
                {
                    path: 'credit-management',
                    name: 'CustomerCreditManagement',
                    meta: {
                        title: 'creditManagement',
                        icon: 'paid',
                        menuChildren: [
                            {
                                name: 'CustomerCreditContracts',
                                title: 'creditContracts',
                                icon: 'vn:solunion',
                            },
                            {
                                name: 'CustomerCreditOpinion',
                                title: 'creditOpinion',
                                icon: 'vn:linesprepaired',
                            },
                        ],
                    },
                    children: [
                        {
                            path: 'credit-contracts',
                            name: 'CreditContractsCard',
                            redirect: { name: 'CustomerCreditContracts' },
                            children: [
                                {
                                    path: '',
                                    name: 'CustomerCreditContracts',
                                    meta: {
                                        title: 'creditContracts',
                                    },
                                    component: () =>
                                        import(
                                            'src/pages/Customer/Card/CustomerCreditContracts.vue'
                                        ),
                                },
                                {
                                    path: 'create',
                                    name: 'CustomerCreditContractsCreate',
                                    component: () =>
                                        import(
                                            'src/pages/Customer/components/CustomerCreditContractsCreate.vue'
                                        ),
                                },
                                {
                                    path: 'insurance/:creditId',
                                    name: 'CustomerCreditContractsInsurance',
                                    component: () =>
                                        import(
                                            'src/pages/Customer/components/CustomerCreditContractsInsurance.vue'
                                        ),
                                },
                            ],
                        },
                        {
                            path: 'credit-opinion',
                            name: 'CustomerCreditOpinion',
                            meta: {
                                title: 'creditOpinion',
                            },
                            component: () =>
                                import(
                                    'src/pages/Customer/Card/CustomerCreditOpinion.vue'
                                ),
                        },
                    ],
                },
                {
                    path: 'others',
                    name: 'CustomerOthers',
                    meta: {
                        title: 'others',
                        icon: 'pending',
                        menuChildren: [
                            {
                                name: 'CustomerSamples',
                                title: 'samples',
                                icon: 'vn:notes',
                            },
                            {
                                name: 'CustomerConsumption',
                                title: 'consumption',
                                icon: 'show_chart',
                            },
                            {
                                name: 'CustomerMandates',
                                title: 'mandates',
                                icon: 'vn:mandatory',
                            },
                            {
                                name: 'CustomerContacts',
                                title: 'contacts',
                                icon: 'contact_phone',
                            },
                            {
                                name: 'CustomerWebPayment',
                                title: 'webPayment',
                                icon: 'vn:onlinepayment',
                            },
                            {
                                name: 'CustomerFileManagement',
                                title: 'fileManagement',
                                icon: 'Upload',
                            },
                            {
                                name: 'CustomerUnpaid',
                                title: 'unpaid',
                                icon: 'vn:defaulter',
                            },
                        ],
                    },
                    children: [
                        {
                            path: 'samples',
                            name: 'CustomerSamples',
                            meta: {
                                title: 'samples',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerSamples.vue'),
                        },
                        {
                            path: 'samples',
                            name: 'CustomerSamplesCard',
                            redirect: { name: 'CustomerSamples' },
                            children: [
                                {
                                    path: '',
                                    name: 'CustomerSamples',
                                    meta: {
                                        title: 'samples',
                                    },
                                    component: () =>
                                        import(
                                            'src/pages/Customer/Card/CustomerSamples.vue'
                                        ),
                                },
                                {
                                    path: 'create',
                                    name: 'CustomerSamplesCreate',
                                    component: () =>
                                        import(
                                            'src/pages/Customer/components/CustomerSamplesCreate.vue'
                                        ),
                                },
                            ],
                        },
                        {
                            path: 'consumption',
                            name: 'CustomerConsumption',
                            meta: {
                                title: 'consumption',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerConsumption.vue'),
                        },
                        {
                            path: 'mandates',
                            name: 'CustomerMandates',
                            meta: {
                                title: 'mandates',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerMandates.vue'),
                        },
                        {
                            path: 'contacts',
                            name: 'CustomerContacts',
                            meta: {
                                title: 'contacts',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerContacts.vue'),
                        },
                        {
                            path: 'web-payment',
                            name: 'CustomerWebPayment',
                            meta: {
                                title: 'webPayment',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerWebPayment.vue'),
                        },
                        {
                            path: 'file-management',
                            name: 'CustomerFileManagement',
                            meta: {
                                title: 'fileManagement',
                            },
                            component: () =>
                                import(
                                    'src/pages/Customer/Card/CustomerFileManagement.vue'
                                ),
                        },
                        {
                            path: 'file-management',
                            name: 'CustomerFileManagementCard',
                            redirect: { name: 'CustomerFileManagement' },
                            children: [
                                {
                                    path: '',
                                    name: 'CustomerFileManagement',
                                    meta: {
                                        title: 'fileManagement',
                                    },
                                    component: () =>
                                        import(
                                            'src/pages/Customer/Card/CustomerFileManagement.vue'
                                        ),
                                },
                                {
                                    path: 'create',
                                    name: 'CustomerFileManagementCreate',
                                    component: () =>
                                        import(
                                            'src/pages/Customer/components/CustomerFileManagementCreate.vue'
                                        ),
                                },
                                {
                                    path: ':dmsId/edit',
                                    name: 'CustomerFileManagementEdit',
                                    component: () =>
                                        import(
                                            'src/pages/Customer/components/CustomerFileManagementEdit.vue'
                                        ),
                                },
                            ],
                        },
                        {
                            path: 'unpaid',
                            name: 'CustomerUnpaid',
                            meta: {
                                title: 'unpaid',
                            },
                            component: () =>
                                import('src/pages/Customer/Card/CustomerUnpaid.vue'),
                        },
                    ],
                },
            ],
        },
    ],
};
