diff --git a/navigation/index.js b/navigation/index.js index c542d5b..372f90f 100644 --- a/navigation/index.js +++ b/navigation/index.js @@ -1,94 +1,22 @@ export default [ { - "header": "Utama", - "description": "", - "child": [ + header: "Utama", + description: "", + child: [ { - "title": "Dashboard", - "path": "/dashboard", - "icon": "ic:outline-dashboard", - "child": [], - "meta": {} - } + title: "Dashboard", + path: "/dashboard", + icon: "ic:outline-dashboard", + child: [], + meta: {}, + }, + { + title: "API Platform", + path: "/api-platform", + icon: "ic:outline-api", + child: [], + }, ], - "meta": {} + meta: {}, }, - { - "header": "Pentadbiran", - "description": "Urus aplikasi anda", - "child": [ - { - "title": "API Platform", - "path": "/api-platform", - "icon": "", - "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" - ] - } - } - } -]; \ No newline at end of file +]; diff --git a/pages/BF-PRF/AS/DETAIL/[id]/index.vue b/pages/BF-PRF/AS/DETAIL/[id]/index.vue deleted file mode 100644 index 81c6af4..0000000 --- a/pages/BF-PRF/AS/DETAIL/[id]/index.vue +++ /dev/null @@ -1,674 +0,0 @@ - - - \ No newline at end of file diff --git a/pages/BF-PRF/AS/LIST/index.vue b/pages/BF-PRF/AS/LIST/index.vue deleted file mode 100644 index 00a279a..0000000 --- a/pages/BF-PRF/AS/LIST/index.vue +++ /dev/null @@ -1,337 +0,0 @@ - - - \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a3dadf1..34d2c01 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -99,235 +99,3 @@ model site_settings { settingModifiedDate DateTime? @db.DateTime(0) siteLoginLogo String? @db.VarChar(500) } - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_analytics { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - channel_type String @db.VarChar(20) - metric_type String @db.VarChar(30) - metric_value Int? @default(0) - recorded_at DateTime? @default(now()) @db.Timestamp(0) - metadata Json? @default(dbgenerated("(_utf8mb4\\'{}\\')")) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_analytics_ibfk_1") - - @@index([notification_id], map: "idx_notification_analytics_notification_id") -} - -model notification_categories { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - name String @db.VarChar(100) - value String @unique(map: "value") @db.VarChar(50) - description String? @db.Text - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications[] -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_channels { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - channel_type String @db.VarChar(20) - is_enabled Boolean? @default(true) - created_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_channels_ibfk_1") - - @@index([notification_id], map: "notification_id") -} - -model notification_delivery { - id Int @id @default(autoincrement()) - notification_id Int - channel_type String - recipient String - is_success Boolean @default(false) - error_message String? @db.Text - attempts Int @default(0) - sent_at DateTime? - delivered_at DateTime? - created_at DateTime @default(now()) - updated_at DateTime -} - -model notification_delivery_config { - id Int @id @default(autoincrement()) - channel_type String @unique - is_enabled Boolean @default(false) - provider String - provider_config Json @default(dbgenerated("(_utf8mb4\\'{}\\')")) - status String @default("Not Configured") - success_rate Float @default(0) @db.Float - created_at DateTime @default(now()) - updated_at DateTime - created_by Int - updated_by Int -} - -model notification_delivery_settings { - id Int @id @default(1) - auto_retry Boolean @default(true) - enable_fallback Boolean @default(true) - max_retries Int @default(3) - retry_delay Int @default(30) - priority String @default("normal") - enable_reports Boolean @default(true) - created_at DateTime @default(now()) - updated_at DateTime - created_by Int - updated_by Int -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_queue { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - recipient_id String @db.VarChar(36) - scheduled_for DateTime @db.Timestamp(0) - priority Int? @default(5) - attempts Int? @default(0) - max_attempts Int? @default(3) - status String? @default("queued") @db.VarChar(20) - last_attempt_at DateTime? @db.Timestamp(0) - error_message String? @db.Text - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_queue_ibfk_1") - notification_recipients notification_recipients @relation(fields: [recipient_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_queue_ibfk_2") - - @@index([scheduled_for], map: "idx_notification_queue_scheduled_for") - @@index([status], map: "idx_notification_queue_status") - @@index([notification_id], map: "notification_id") - @@index([recipient_id], map: "recipient_id") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notification_recipients { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - user_id String @db.VarChar(36) - email String? @db.VarChar(255) - channel_type String @db.VarChar(20) - status String? @default("pending") @db.VarChar(20) - sent_at DateTime? @db.Timestamp(0) - delivered_at DateTime? @db.Timestamp(0) - opened_at DateTime? @db.Timestamp(0) - clicked_at DateTime? @db.Timestamp(0) - error_message String? @db.Text - ab_test_variant String? @db.VarChar(1) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notification_queue notification_queue[] - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_recipients_ibfk_1") - - @@index([status], map: "idx_notification_recipients_status") - @@index([user_id], map: "idx_notification_recipients_user_id") - @@index([notification_id], map: "notification_id") -} - -model notification_templates { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - name String @db.VarChar(100) - value String @unique(map: "value") @db.VarChar(50) - subject String? @db.VarChar(255) - email_content String? @db.Text - push_title String? @db.VarChar(100) - push_body String? @db.VarChar(300) - variables Json? @default(dbgenerated("(_utf8mb4\\'[]\\')")) - is_active Boolean? @default(true) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications[] -} - -model notification_user_segments { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - notification_id String @db.VarChar(36) - segment_id String @db.VarChar(36) - created_at DateTime? @default(now()) @db.Timestamp(0) - notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_user_segments_ibfk_1") - user_segments user_segments @relation(fields: [segment_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notification_user_segments_ibfk_2") - - @@index([notification_id], map: "notification_id") - @@index([segment_id], map: "segment_id") -} - -/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. -model notifications { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - title String @db.VarChar(255) - type String @db.VarChar(20) - priority String @db.VarChar(20) - category_id String? @db.VarChar(36) - status String? @default("draft") @db.VarChar(20) - delivery_type String @db.VarChar(20) - scheduled_at DateTime? @db.Timestamp(0) - timezone String? @default("UTC") @db.VarChar(50) - expires_at DateTime? @db.Timestamp(0) - enable_ab_testing Boolean? @default(false) - ab_test_split Int? @default(50) - ab_test_name String? @db.VarChar(100) - enable_tracking Boolean? @default(true) - audience_type String @db.VarChar(20) - specific_users String? @db.Text - user_status String? @db.VarChar(20) - registration_period String? @db.VarChar(50) - exclude_unsubscribed Boolean? @default(true) - respect_do_not_disturb Boolean? @default(true) - content_type String @db.VarChar(20) - template_id String? @db.VarChar(36) - email_subject String? @db.VarChar(255) - email_content String? @db.Text - call_to_action_text String? @db.VarChar(100) - call_to_action_url String? @db.Text - push_title String? @db.VarChar(100) - push_body String? @db.VarChar(300) - push_image_url String? @db.Text - estimated_reach Int? @default(0) - actual_sent Int? @default(0) - created_by String @db.VarChar(36) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - sent_at DateTime? @db.Timestamp(0) - notification_analytics notification_analytics[] - notification_channels notification_channels[] - notification_queue notification_queue[] - notification_recipients notification_recipients[] - notification_user_segments notification_user_segments[] - notification_categories notification_categories? @relation(fields: [category_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notifications_ibfk_1") - notification_templates notification_templates? @relation(fields: [template_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notifications_ibfk_2") - - @@index([category_id], map: "category_id") - @@index([created_by], map: "idx_notifications_created_by") - @@index([scheduled_at], map: "idx_notifications_scheduled_at") - @@index([status], map: "idx_notifications_status") - @@index([template_id], map: "template_id") -} - -model user_notification_preferences { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - user_id String @db.VarChar(36) - channel_type String @db.VarChar(20) - category_value String? @db.VarChar(50) - is_enabled Boolean? @default(true) - do_not_disturb_start DateTime? @db.Time(0) - do_not_disturb_end DateTime? @db.Time(0) - timezone String? @default("UTC") @db.VarChar(50) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - - @@unique([user_id, channel_type, category_value], map: "user_id") - @@index([user_id], map: "idx_user_notification_preferences_user_id") -} - -model user_segments { - id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) - name String @db.VarChar(100) - value String @unique(map: "value") @db.VarChar(50) - description String? @db.Text - criteria Json - is_active Boolean? @default(true) - created_at DateTime? @default(now()) @db.Timestamp(0) - updated_at DateTime? @default(now()) @db.Timestamp(0) - notification_user_segments notification_user_segments[] -}