USE `garage_management`;

INSERT INTO `permissions` (`module`, `slug`, `name`) VALUES
  ('estimates', 'estimates.view', 'View Estimates'),
  ('estimates', 'estimates.manage', 'Create/Edit Estimates'),
  ('invoices', 'invoices.view', 'View Invoices'),
  ('invoices', 'invoices.manage', 'Create/Edit Invoices'),
  ('payments', 'payments.view', 'View Payments'),
  ('payments', 'payments.manage', 'Record Payments'),
  ('expenses', 'expenses.view', 'View Expenses'),
  ('expenses', 'expenses.manage', 'Record Expenses'),
  ('coupons', 'coupons.view', 'View Coupons'),
  ('coupons', 'coupons.manage', 'Create/Edit Coupons')
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Admin'), p.id FROM permissions p
WHERE p.module IN ('estimates','invoices','payments','expenses','coupons')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Manager'), p.id FROM permissions p
WHERE p.module IN ('estimates','invoices','payments','expenses','coupons')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Accountant'), p.id FROM permissions p
WHERE p.module IN ('estimates','invoices','payments','expenses','coupons')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Cashier'), p.id FROM permissions p
WHERE p.slug IN ('invoices.view','invoices.manage','payments.view','payments.manage','estimates.view')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Service Advisor'), p.id FROM permissions p
WHERE p.slug IN ('estimates.view','estimates.manage','invoices.view')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;
