-- Permissions and role-permissions reset to enforce restricted cashier role
-- Run this on your MySQL/MariaDB (Laragon) database

START TRANSACTION;

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `role_permissions`;
TRUNCATE TABLE `permissions`;
SET FOREIGN_KEY_CHECKS = 1;

-- Seed permissions (same as PermissionsSeeder, updated)
INSERT INTO `permissions` (`name`, `display_name`, `description`) VALUES
  ('view_users', 'عرض المستخدمين', 'عرض قائمة المستخدمين'),
  ('create_users', 'إضافة مستخدمين', 'إنشاء مستخدمين جدد'),
  ('edit_users', 'تعديل المستخدمين', 'تعديل بيانات المستخدمين'),
  ('delete_users', 'حذف المستخدمين', 'حذف المستخدمين من النظام'),

  ('view_products', 'عرض المنتجات', 'عرض قائمة المنتجات'),
  ('create_products', 'إضافة منتجات', 'إضافة منتجات جديدة'),
  ('edit_products', 'تعديل المنتجات', 'تعديل بيانات المنتجات'),
  ('delete_products', 'حذف المنتجات', 'حذف المنتجات من النظام'),

  ('manage_categories', 'إدارة الفئات', 'إدارة فئات المنتجات'),

  ('view_tables', 'عرض الطاولات', 'عرض حالة الطاولات'),
  ('manage_tables', 'إدارة الطاولات', 'إضافة وتعديل وحذف الطاولات'),

  ('view_all_orders', 'عرض جميع الطلبات', 'عرض جميع الطلبات في النظام'),
  ('view_kitchen_orders', 'عرض طلبات المطبخ', 'عرض الطلبات المخصصة للمطبخ'),
  ('update_order_status', 'تحديث حالة الطلب', 'تغيير حالة الطلبات'),
  ('cancel_orders', 'إلغاء الطلبات', 'إلغاء الطلبات النشطة'),

  ('process_payments', 'معالجة المدفوعات', 'معالجة مدفوعات الطلبات'),
  ('view_payments', 'عرض المدفوعات', 'عرض سجل المدفوعات'),
  ('issue_refunds', 'إصدار المبالغ المستردة', 'إصدار استرداد للمدفوعات'),

  ('view_reports', 'عرض التقارير', 'عرض تقارير المبيعات والإحصائيات'),
  ('export_reports', 'تصدير التقارير', 'تصدير التقارير إلى ملفات خارجية'),

  ('manage_settings', 'إدارة الإعدادات', 'تغيير إعدادات النظام');

-- Assign permissions to roles
-- Admin: all relevant permissions
INSERT INTO `role_permissions` (`role`, `permission_id`, `created_at`, `updated_at`)
SELECT 'admin', p.id, NOW(), NOW()
FROM `permissions` p
WHERE p.`name` IN (
  'view_users','create_users','edit_users','delete_users',
  'view_products','create_products','edit_products','delete_products',
  'manage_categories',
  'view_tables','manage_tables',
  'view_all_orders','view_kitchen_orders','update_order_status','cancel_orders',
  'process_payments','view_payments','issue_refunds',
  'view_reports','export_reports',
  'manage_settings'
);

-- Cashier: restricted to orders visibility and payments only
INSERT INTO `role_permissions` (`role`, `permission_id`, `created_at`, `updated_at`)
SELECT 'cashier', p.id, NOW(), NOW()
FROM `permissions` p
WHERE p.`name` IN (
  'view_all_orders',
  'process_payments','view_payments'
);

-- Waiter
INSERT INTO `role_permissions` (`role`, `permission_id`, `created_at`, `updated_at`)
SELECT 'waiter', p.id, NOW(), NOW()
FROM `permissions` p
WHERE p.`name` IN (
  'view_products',
  'view_tables',
  'view_all_orders','update_order_status'
);

-- Kitchen
INSERT INTO `role_permissions` (`role`, `permission_id`, `created_at`, `updated_at`)
SELECT 'kitchen', p.id, NOW(), NOW()
FROM `permissions` p
WHERE p.`name` IN (
  'view_kitchen_orders','update_order_status'
);

COMMIT;
