-- ============================================================================
-- PHASE 2 — Seed: permissions, role grants, default service categories
-- Safe to re-run.
-- ============================================================================

USE `garage_management`;

INSERT INTO `permissions` (`module`, `slug`, `name`) VALUES
  ('mechanics', 'mechanics.view', 'View Mechanics'),
  ('mechanics', 'mechanics.manage', 'Create/Edit Mechanics'),
  ('services', 'services.view', 'View Service Categories & Packages'),
  ('services', 'services.manage', 'Manage Service Categories & Packages'),
  ('appointments', 'appointments.view', 'View Appointments'),
  ('appointments', 'appointments.manage', 'Create/Edit Appointments & Check-in'),
  ('workorders', 'workorders.view', 'View Work Orders'),
  ('workorders', 'workorders.manage', 'Create/Edit Work Orders & Change Status'),
  ('jobcards', 'jobcards.view', 'View Job Cards'),
  ('jobcards', 'jobcards.manage', 'Update Job Card Progress')
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

-- Admin: everything from Phase 2
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 ('mechanics','services','appointments','workorders','jobcards')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- Manager: view everything, manage work orders/appointments
INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Manager'), p.id FROM permissions p
WHERE p.slug IN ('mechanics.view','services.view','appointments.view','appointments.manage','workorders.view','workorders.manage','jobcards.view')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- Receptionist: appointments + check-in
INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Receptionist'), p.id FROM permissions p
WHERE p.slug IN ('appointments.view','appointments.manage','services.view','workorders.view','workorders.manage','mechanics.view')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- Service Advisor: work orders + appointments + services
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 ('appointments.view','appointments.manage','services.view','workorders.view','workorders.manage','jobcards.view','jobcards.manage','mechanics.view')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- Mechanic: view work orders, manage own job cards
INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Mechanic'), p.id FROM permissions p
WHERE p.slug IN ('workorders.view','jobcards.view','jobcards.manage')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- ---------------------------------------------------------------------------
-- Default service categories (core to spec section 1A)
-- ---------------------------------------------------------------------------
INSERT INTO `service_categories` (`name`, `description`, `default_interval_km`, `default_interval_days`) VALUES
  ('Oil Change', 'Engine oil and filter replacement', 5000, 180),
  ('General Service', 'Routine multi-point vehicle service', 10000, 180),
  ('Brake Service', 'Brake pads, discs, and fluid inspection/service', 20000, 365),
  ('Tire Service', 'Tire rotation, balancing, and replacement', 10000, 180),
  ('Battery Service', 'Battery testing, charging, and replacement', NULL, 365),
  ('Engine Service', 'Engine diagnostics and repair work', NULL, NULL),
  ('Transmission Service', 'Transmission fluid and system service', 40000, 730),
  ('AC Service', 'Air conditioning inspection and recharge', NULL, 365),
  ('Electrical Service', 'Electrical system diagnostics and repair', NULL, NULL),
  ('Inspection', 'General vehicle inspection', NULL, 180),
  ('Diagnostic Service', 'Computerized diagnostic scan', NULL, NULL),
  ('Filter Replacement', 'Air, cabin, and fuel filter replacement', 10000, 180),
  ('Fluid Replacement', 'Coolant, brake, and other fluid replacement', 20000, 365),
  ('Preventive Maintenance', 'Scheduled preventive maintenance', 10000, 180),
  ('Other', 'Other service not otherwise categorized', NULL, NULL)
ON DUPLICATE KEY UPDATE `description` = VALUES(`description`);
