USE `garage_management`;

-- Work Orders are now presented to users as "Job Cards" — switch the number prefix accordingly.
UPDATE `settings` SET `setting_value` = 'JC' WHERE `setting_key` = 'workorder_prefix';

-- ---------------------------------------------------------------------------
-- Make/Model catalog — Suzuki and Toyota seeded by default, easy to extend
-- later from Vehicles → Makes & Models. "Other" is an escape hatch so a
-- vehicle outside the seeded makes never blocks check-in.
-- ---------------------------------------------------------------------------
INSERT INTO `vehicle_makes` (`name`) VALUES ('Suzuki'), ('Toyota'), ('Other')
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

INSERT INTO `vehicle_models` (`make_id`, `name`)
SELECT m.id, v.name FROM vehicle_makes m
JOIN (
  SELECT 'Suzuki' make, 'Dzire' name UNION ALL
  SELECT 'Suzuki', 'Alto' UNION ALL
  SELECT 'Suzuki', 'Swift' UNION ALL
  SELECT 'Suzuki', 'Vitara' UNION ALL
  SELECT 'Suzuki', 'Grand Vitara' UNION ALL
  SELECT 'Suzuki', 'Baleno' UNION ALL
  SELECT 'Suzuki', 'Wagon R' UNION ALL
  SELECT 'Suzuki', 'Ertiga' UNION ALL
  SELECT 'Suzuki', 'Celerio' UNION ALL
  SELECT 'Suzuki', 'Jimny' UNION ALL
  SELECT 'Suzuki', 'APV' UNION ALL
  SELECT 'Toyota', 'Corolla' UNION ALL
  SELECT 'Toyota', 'Vitz' UNION ALL
  SELECT 'Toyota', 'Yaris' UNION ALL
  SELECT 'Toyota', 'Camry' UNION ALL
  SELECT 'Toyota', 'RAV4' UNION ALL
  SELECT 'Toyota', 'Land Cruiser' UNION ALL
  SELECT 'Toyota', 'Land Cruiser Prado' UNION ALL
  SELECT 'Toyota', 'Hilux' UNION ALL
  SELECT 'Toyota', 'Hiace' UNION ALL
  SELECT 'Toyota', 'Corona' UNION ALL
  SELECT 'Toyota', 'Premio' UNION ALL
  SELECT 'Toyota', 'Allion' UNION ALL
  SELECT 'Toyota', 'Fielder' UNION ALL
  SELECT 'Toyota', 'Noah' UNION ALL
  SELECT 'Toyota', 'Avensis' UNION ALL
  SELECT 'Other', 'Other'
) v ON v.make = m.name
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

-- ---------------------------------------------------------------------------
-- Predefined base prices per service category (ETB) — auto-added to the Job
-- Card the moment a service is selected. Matched by name so it's safe to
-- re-run regardless of category ids.
-- ---------------------------------------------------------------------------
UPDATE `service_categories` SET `base_price` = 1500 WHERE `name` = 'Oil Change';
UPDATE `service_categories` SET `base_price` = 2500 WHERE `name` = 'General Service';
UPDATE `service_categories` SET `base_price` = 1800 WHERE `name` = 'Brake Service';
UPDATE `service_categories` SET `base_price` = 2200 WHERE `name` = 'AC Service';
UPDATE `service_categories` SET `base_price` = 800  WHERE `name` = 'Battery Service';
UPDATE `service_categories` SET `base_price` = 500  WHERE `name` = 'Diagnostic Service';
UPDATE `service_categories` SET `base_price` = 1200 WHERE `name` = 'Electrical Service';
UPDATE `service_categories` SET `base_price` = 3500 WHERE `name` = 'Engine Service';
UPDATE `service_categories` SET `base_price` = 900  WHERE `name` = 'Filter Replacement';
UPDATE `service_categories` SET `base_price` = 1000 WHERE `name` = 'Fluid Replacement';
UPDATE `service_categories` SET `base_price` = 400  WHERE `name` = 'Inspection';
UPDATE `service_categories` SET `base_price` = 2000 WHERE `name` = 'Preventive Maintenance';
UPDATE `service_categories` SET `base_price` = 600  WHERE `name` = 'Tire Service';
UPDATE `service_categories` SET `base_price` = 4000 WHERE `name` = 'Transmission Service';

-- ---------------------------------------------------------------------------
-- Permissions: mechanics can request parts; storekeepers review/issue
-- requests and can add parts to any Job Card directly.
-- ---------------------------------------------------------------------------
INSERT INTO `permissions` (`module`, `slug`, `name`) VALUES
  ('parts', 'parts.request', 'Request Spare Parts on a Job Card'),
  ('parts', 'parts.approve', 'Approve/Issue Spare Part Requests')
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 = 'parts'
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 = 'parts'
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Mechanic'), p.id FROM permissions p
WHERE p.slug = 'parts.request'
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Storekeeper'), p.id FROM permissions p
WHERE p.slug = 'parts.approve'
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- The Storekeeper's core workflow is "search for and open any Job Card, add
-- parts directly" — that requires being able to view Job Cards at all.
INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Storekeeper'), p.id FROM permissions p
WHERE p.slug = 'workorders.view'
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;
