Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
1047e5826d |
295
composables/useAsnafMockData.ts
Normal file
295
composables/useAsnafMockData.ts
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
import { ref, computed } from 'vue';
|
||||||
|
|
||||||
|
// Define interface for the asnaf profile (keep for type reference)
|
||||||
|
interface AsnafProfile {
|
||||||
|
id: string;
|
||||||
|
nama: string;
|
||||||
|
idNumber: string;
|
||||||
|
kategori: string;
|
||||||
|
status: string;
|
||||||
|
tarikhDaftar: string;
|
||||||
|
alamat: string;
|
||||||
|
telefon: string;
|
||||||
|
email: string;
|
||||||
|
gender: string;
|
||||||
|
maritalStatus: string;
|
||||||
|
birthDate: string;
|
||||||
|
occupation: string;
|
||||||
|
monthlyIncome: string;
|
||||||
|
otherIncome: string;
|
||||||
|
totalIncome: string;
|
||||||
|
spouse: {
|
||||||
|
name: string;
|
||||||
|
idNumber: string;
|
||||||
|
} | null;
|
||||||
|
dependents: Array<{
|
||||||
|
name: string;
|
||||||
|
age: number;
|
||||||
|
relationship: string;
|
||||||
|
}>;
|
||||||
|
documents: Array<{
|
||||||
|
name: string;
|
||||||
|
size: string;
|
||||||
|
url: string;
|
||||||
|
}>;
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: string;
|
||||||
|
suggestedCategory: string;
|
||||||
|
status: string;
|
||||||
|
familyCategory: string;
|
||||||
|
asnafCategory: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mock data for Asnaf profiles (LIST page)
|
||||||
|
const asnafProfiles = ref<AsnafProfile[]>([
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
nama: 'Ahmad Bin Abdullah',
|
||||||
|
idNumber: 'MYKAD001',
|
||||||
|
kategori: 'Fakir',
|
||||||
|
status: 'Aktif',
|
||||||
|
tarikhDaftar: '2023-01-15',
|
||||||
|
alamat: '123 Jalan Merdeka',
|
||||||
|
telefon: '012-3456789',
|
||||||
|
email: 'ahmad@example.com',
|
||||||
|
gender: 'Lelaki',
|
||||||
|
maritalStatus: 'Berkahwin',
|
||||||
|
birthDate: '1988-01-01',
|
||||||
|
occupation: 'Buruh',
|
||||||
|
monthlyIncome: '1200.00',
|
||||||
|
otherIncome: '300.00',
|
||||||
|
totalIncome: '1500.00',
|
||||||
|
spouse: { name: 'Aminah binti Yusof', idNumber: '900202-14-5678' },
|
||||||
|
dependents: [
|
||||||
|
{ name: 'Muhammad bin Ahmad', age: 10, relationship: 'Anak' },
|
||||||
|
{ name: 'Fatimah binti Ahmad', age: 8, relationship: 'Anak' }
|
||||||
|
],
|
||||||
|
documents: [
|
||||||
|
{ name: 'Salinan Kad Pengenalan', size: '1.2 MB', url: '#' },
|
||||||
|
{ name: 'Slip Gaji', size: '850 KB', url: '#' },
|
||||||
|
{ name: 'Surat Pengesahan Pendapatan', size: '1.5 MB', url: '#' }
|
||||||
|
],
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: '65.25%',
|
||||||
|
suggestedCategory: 'Miskin',
|
||||||
|
status: 'Layak (Miskin)',
|
||||||
|
familyCategory: 'Miskin (50-100% Had Kifayah)',
|
||||||
|
asnafCategory: 'Miskin'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
nama: 'Siti Binti Ali',
|
||||||
|
idNumber: 'MYKAD002',
|
||||||
|
kategori: 'Miskin',
|
||||||
|
status: 'Aktif',
|
||||||
|
tarikhDaftar: '2023-02-20',
|
||||||
|
alamat: '456 Jalan Harmoni',
|
||||||
|
telefon: '019-8765432',
|
||||||
|
email: 'siti@example.com',
|
||||||
|
gender: 'Perempuan',
|
||||||
|
maritalStatus: 'Bujang',
|
||||||
|
birthDate: '1990-05-12',
|
||||||
|
occupation: 'Kerani',
|
||||||
|
monthlyIncome: '1500.00',
|
||||||
|
otherIncome: '0.00',
|
||||||
|
totalIncome: '1500.00',
|
||||||
|
spouse: null,
|
||||||
|
dependents: [],
|
||||||
|
documents: [
|
||||||
|
{ name: 'Salinan Kad Pengenalan', size: '1.1 MB', url: '#' }
|
||||||
|
],
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: '80.00%',
|
||||||
|
suggestedCategory: 'Miskin',
|
||||||
|
status: 'Layak (Miskin)',
|
||||||
|
familyCategory: 'Miskin (50-100% Had Kifayah)',
|
||||||
|
asnafCategory: 'Miskin'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '3',
|
||||||
|
nama: 'Lim Ah Beng',
|
||||||
|
idNumber: 'MYKAD003',
|
||||||
|
kategori: 'Mualaf',
|
||||||
|
status: 'Dalam Semakan',
|
||||||
|
tarikhDaftar: '2023-03-10',
|
||||||
|
alamat: '789 Jalan Sejahtera',
|
||||||
|
telefon: '011-1234567',
|
||||||
|
email: 'lim@example.com',
|
||||||
|
gender: 'Lelaki',
|
||||||
|
maritalStatus: 'Bujang',
|
||||||
|
birthDate: '1985-09-09',
|
||||||
|
occupation: 'Peniaga',
|
||||||
|
monthlyIncome: '2000.00',
|
||||||
|
otherIncome: '200.00',
|
||||||
|
totalIncome: '2200.00',
|
||||||
|
spouse: null,
|
||||||
|
dependents: [],
|
||||||
|
documents: [],
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: '55.00%',
|
||||||
|
suggestedCategory: 'Miskin',
|
||||||
|
status: 'Dalam Semakan',
|
||||||
|
familyCategory: 'Miskin (50-100% Had Kifayah)',
|
||||||
|
asnafCategory: 'Mualaf'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '4',
|
||||||
|
nama: 'Raju A/L Muthu',
|
||||||
|
idNumber: 'MYKAD004',
|
||||||
|
kategori: 'Fi-sabilillah',
|
||||||
|
status: 'Tidak Aktif',
|
||||||
|
tarikhDaftar: '2022-12-05',
|
||||||
|
alamat: '101 Jalan Damai',
|
||||||
|
telefon: '013-9876543',
|
||||||
|
email: 'raju@example.com',
|
||||||
|
gender: 'Lelaki',
|
||||||
|
maritalStatus: 'Berkahwin',
|
||||||
|
birthDate: '1975-11-23',
|
||||||
|
occupation: 'Guru',
|
||||||
|
monthlyIncome: '2500.00',
|
||||||
|
otherIncome: '0.00',
|
||||||
|
totalIncome: '2500.00',
|
||||||
|
spouse: { name: 'Saraswathy a/p Maniam', idNumber: '750101-10-1234' },
|
||||||
|
dependents: [],
|
||||||
|
documents: [],
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: '110.00%',
|
||||||
|
suggestedCategory: 'Tidak Layak',
|
||||||
|
status: 'Tidak Layak',
|
||||||
|
familyCategory: 'Non-FM (>100% Had Kifayah)',
|
||||||
|
asnafCategory: 'Fi-sabilillah'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5',
|
||||||
|
nama: 'Aminah Binti Kassim',
|
||||||
|
idNumber: 'MYKAD005',
|
||||||
|
kategori: 'Gharimin',
|
||||||
|
status: 'Aktif',
|
||||||
|
tarikhDaftar: '2023-04-01',
|
||||||
|
alamat: '202 Jalan Ceria',
|
||||||
|
telefon: '014-2345678',
|
||||||
|
email: 'aminah@example.com',
|
||||||
|
gender: 'Perempuan',
|
||||||
|
maritalStatus: 'Janda',
|
||||||
|
birthDate: '1982-03-15',
|
||||||
|
occupation: 'Peniaga',
|
||||||
|
monthlyIncome: '1800.00',
|
||||||
|
otherIncome: '100.00',
|
||||||
|
totalIncome: '1900.00',
|
||||||
|
spouse: null,
|
||||||
|
dependents: [
|
||||||
|
{ name: 'Ali bin Kassim', age: 12, relationship: 'Anak' }
|
||||||
|
],
|
||||||
|
documents: [],
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: '70.00%',
|
||||||
|
suggestedCategory: 'Miskin',
|
||||||
|
status: 'Layak (Miskin)',
|
||||||
|
familyCategory: 'Miskin (50-100% Had Kifayah)',
|
||||||
|
asnafCategory: 'Gharimin'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '6',
|
||||||
|
nama: 'John Doe Anak Luta',
|
||||||
|
idNumber: 'MYKAD006',
|
||||||
|
kategori: 'Ibnu Sabil',
|
||||||
|
status: 'Dalam Semakan',
|
||||||
|
tarikhDaftar: '2023-05-12',
|
||||||
|
alamat: '303 Jalan Gembira',
|
||||||
|
telefon: '016-3456789',
|
||||||
|
email: 'john@example.com',
|
||||||
|
gender: 'Lelaki',
|
||||||
|
maritalStatus: 'Bujang',
|
||||||
|
birthDate: '1995-07-07',
|
||||||
|
occupation: 'Penganggur',
|
||||||
|
monthlyIncome: '0.00',
|
||||||
|
otherIncome: '0.00',
|
||||||
|
totalIncome: '0.00',
|
||||||
|
spouse: null,
|
||||||
|
dependents: [],
|
||||||
|
documents: [],
|
||||||
|
analysis: {
|
||||||
|
hadKifayahPercentage: '30.00%',
|
||||||
|
suggestedCategory: 'Fakir',
|
||||||
|
status: 'Dalam Semakan',
|
||||||
|
familyCategory: 'Fakir (0-49% Had Kifayah)',
|
||||||
|
asnafCategory: 'Ibnu Sabil'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Mock detail data for a profile (DETAIL page)
|
||||||
|
const mockProfileDetail: AsnafProfile = asnafProfiles.value[0];
|
||||||
|
|
||||||
|
// Get profile by ID for detail page
|
||||||
|
function getProfileById(id: string): AsnafProfile | undefined {
|
||||||
|
return asnafProfiles.value.find((p) => p.id === id);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useAsnafMockData = () => {
|
||||||
|
// Computed statistics
|
||||||
|
const statistics = computed(() => {
|
||||||
|
const total = asnafProfiles.value.length;
|
||||||
|
const active = asnafProfiles.value.filter(p => p.status === 'Aktif').length;
|
||||||
|
const inactive = asnafProfiles.value.filter(p => p.status === 'Tidak Aktif').length;
|
||||||
|
const review = asnafProfiles.value.filter(p => p.status === 'Dalam Semakan').length;
|
||||||
|
|
||||||
|
return {
|
||||||
|
total,
|
||||||
|
active,
|
||||||
|
inactive,
|
||||||
|
review
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Filter profiles by search and filters
|
||||||
|
const filterProfiles = (search = '', statusFilter = 'All', categoryFilter = 'All'): AsnafProfile[] => {
|
||||||
|
return asnafProfiles.value.filter(profile => {
|
||||||
|
// Search by name or ID
|
||||||
|
const matchesSearch = search === '' ||
|
||||||
|
profile.nama.toLowerCase().includes(search.toLowerCase()) ||
|
||||||
|
profile.id.toLowerCase().includes(search.toLowerCase()) ||
|
||||||
|
profile.idNumber.includes(search);
|
||||||
|
|
||||||
|
// Filter by status
|
||||||
|
const matchesStatus = statusFilter === 'All' || profile.status === statusFilter;
|
||||||
|
|
||||||
|
// Filter by category
|
||||||
|
const matchesCategory = categoryFilter === 'All' || profile.kategori === categoryFilter;
|
||||||
|
|
||||||
|
return matchesSearch && matchesStatus && matchesCategory;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Categories
|
||||||
|
const categories = [
|
||||||
|
'Fakir',
|
||||||
|
'Miskin',
|
||||||
|
'Mualaf',
|
||||||
|
'Fi-sabilillah',
|
||||||
|
'Gharimin',
|
||||||
|
'Ibnu Sabil'
|
||||||
|
];
|
||||||
|
|
||||||
|
// Statuses
|
||||||
|
const statuses = [
|
||||||
|
'Aktif',
|
||||||
|
'Tidak Aktif',
|
||||||
|
'Dalam Semakan'
|
||||||
|
];
|
||||||
|
|
||||||
|
return {
|
||||||
|
asnafProfiles,
|
||||||
|
statistics,
|
||||||
|
getProfileById,
|
||||||
|
filterProfiles,
|
||||||
|
categories,
|
||||||
|
statuses
|
||||||
|
};
|
||||||
|
};
|
@ -1,100 +1,126 @@
|
|||||||
export default [
|
export default [
|
||||||
{
|
{
|
||||||
"header": "Utama",
|
header: "Utama",
|
||||||
"description": "",
|
description: "",
|
||||||
"child": [
|
child: [
|
||||||
{
|
{
|
||||||
"title": "Dashboard",
|
title: "Dashboard",
|
||||||
"path": "/dashboard",
|
path: "/dashboard",
|
||||||
"icon": "ic:outline-dashboard",
|
icon: "ic:outline-dashboard",
|
||||||
"child": [],
|
child: [],
|
||||||
"meta": {}
|
meta: {},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Notes",
|
title: "Notes",
|
||||||
"path": "/notes",
|
path: "/notes",
|
||||||
"icon": "",
|
icon: "",
|
||||||
"child": []
|
child: [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Metabase",
|
title: "Metabase",
|
||||||
"path": "/metabase",
|
path: "/metabase",
|
||||||
"icon": "",
|
icon: "",
|
||||||
"child": []
|
child: [],
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
"meta": {}
|
meta: {},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "Pentadbiran",
|
header: "BF-PRF",
|
||||||
"description": "Urus aplikasi anda",
|
description: "Profiling",
|
||||||
"child": [
|
child: [
|
||||||
{
|
{
|
||||||
"title": "Konfigurasi",
|
title: "Asnaf",
|
||||||
"icon": "ic:outline-settings",
|
icon: "mdi:account-group",
|
||||||
"child": [
|
child: [
|
||||||
{
|
{
|
||||||
"title": "Persekitaran",
|
title: "Senarai Asnaf",
|
||||||
"path": "/devtool/config/environment"
|
path: "/BF-PRF/AS/LIST",
|
||||||
|
icon: "mdi:format-list-bulleted",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Site Settings",
|
title: "Pendaftaran Pantas (Single)",
|
||||||
"path": "/devtool/config/site-settings"
|
path: "/BF-PRF/AS/FR/01",
|
||||||
}
|
icon: "mdi:account-plus",
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Penyunting Menu",
|
|
||||||
"icon": "ci:menu-alt-03",
|
|
||||||
"path": "/devtool/menu-editor",
|
|
||||||
"child": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Urus Pengguna",
|
|
||||||
"path": "/devtool/user-management",
|
|
||||||
"icon": "ph:user-circle-gear",
|
|
||||||
"child": [
|
|
||||||
{
|
|
||||||
"title": "Senarai Pengguna",
|
|
||||||
"path": "/devtool/user-management/user",
|
|
||||||
"icon": "",
|
|
||||||
"child": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Senarai Peranan",
|
title: "Pendaftaran Lengkap",
|
||||||
"path": "/devtool/user-management/role",
|
path: "/BF-PRF/AS/FR/02",
|
||||||
"icon": "",
|
icon: "mdi:account-multiple-plus",
|
||||||
"child": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Kandungan",
|
|
||||||
"icon": "mdi:pencil-ruler",
|
|
||||||
"child": [
|
|
||||||
{
|
|
||||||
"title": "Penyunting",
|
|
||||||
"path": "/devtool/content-editor"
|
|
||||||
},
|
},
|
||||||
{
|
{ title: "Kemaskini", path: "/BF-PRF/AS/UP/01", icon: "mdi:pencil" },
|
||||||
"title": "Templat",
|
],
|
||||||
"path": "/devtool/content-editor/template"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Penyunting API",
|
|
||||||
"path": "/devtool/api-editor",
|
|
||||||
"icon": "material-symbols:api-rounded",
|
|
||||||
"child": []
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"meta": {
|
},
|
||||||
"auth": {
|
{
|
||||||
"role": [
|
header: "Pentadbiran",
|
||||||
"Developer"
|
description: "Urus aplikasi anda",
|
||||||
]
|
child: [
|
||||||
}
|
{
|
||||||
}
|
title: "Konfigurasi",
|
||||||
}
|
icon: "ic:outline-settings",
|
||||||
]
|
child: [
|
||||||
|
{
|
||||||
|
title: "Persekitaran",
|
||||||
|
path: "/devtool/config/environment",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Site Settings",
|
||||||
|
path: "/devtool/config/site-settings",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Penyunting Menu",
|
||||||
|
icon: "ci:menu-alt-03",
|
||||||
|
path: "/devtool/menu-editor",
|
||||||
|
child: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Urus Pengguna",
|
||||||
|
path: "/devtool/user-management",
|
||||||
|
icon: "ph:user-circle-gear",
|
||||||
|
child: [
|
||||||
|
{
|
||||||
|
title: "Senarai Pengguna",
|
||||||
|
path: "/devtool/user-management/user",
|
||||||
|
icon: "",
|
||||||
|
child: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Senarai Peranan",
|
||||||
|
path: "/devtool/user-management/role",
|
||||||
|
icon: "",
|
||||||
|
child: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Kandungan",
|
||||||
|
icon: "mdi:pencil-ruler",
|
||||||
|
child: [
|
||||||
|
{
|
||||||
|
title: "Penyunting",
|
||||||
|
path: "/devtool/content-editor",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Templat",
|
||||||
|
path: "/devtool/content-editor/template",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Penyunting API",
|
||||||
|
path: "/devtool/api-editor",
|
||||||
|
icon: "material-symbols:api-rounded",
|
||||||
|
child: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
meta: {
|
||||||
|
auth: {
|
||||||
|
role: ["Developer"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user