-- ============================================================================
-- Garage Management System — Required Seed Data (roles, permissions, admin, settings)
-- Safe to re-run: uses INSERT IGNORE / ON DUPLICATE KEY UPDATE.
-- ============================================================================

USE `garage_management`;

-- ---------------------------------------------------------------------------
-- Default roles
-- ---------------------------------------------------------------------------
INSERT INTO `roles` (`name`, `description`, `is_super_admin`) VALUES
  ('Super Admin', 'Full unrestricted access to every module and setting.', 1),
  ('Admin', 'Administrative access to daily operations and configuration.', 0),
  ('Manager', 'Oversees workshop operations, approvals, and reporting.', 0),
  ('Receptionist', 'Handles customer check-in, appointments, and front-desk tasks.', 0),
  ('Service Advisor', 'Manages service work orders and customer communication.', 0),
  ('Mechanic', 'Works on assigned job cards and updates job status.', 0),
  ('Storekeeper', 'Manages inventory, parts, and purchases.', 0),
  ('Cashier', 'Handles invoices and payment collection.', 0),
  ('Accountant', 'Manages financial records, expenses, and reports.', 0)
ON DUPLICATE KEY UPDATE `description` = VALUES(`description`);

-- ---------------------------------------------------------------------------
-- Phase 1 permissions (Users, Roles, Customers, Vehicles, Settings)
-- ---------------------------------------------------------------------------
INSERT INTO `permissions` (`module`, `slug`, `name`) VALUES
  ('users', 'users.view', 'View Users'),
  ('users', 'users.manage', 'Create/Edit/Deactivate Users'),
  ('roles', 'roles.view', 'View Roles & Permissions'),
  ('roles', 'roles.manage', 'Create/Edit/Delete Roles'),
  ('customers', 'customers.view', 'View Customers'),
  ('customers', 'customers.manage', 'Create/Edit/Delete Customers'),
  ('vehicles', 'vehicles.view', 'View Vehicles'),
  ('vehicles', 'vehicles.manage', 'Create/Edit/Delete Vehicles'),
  ('settings', 'settings.manage', 'Manage Branding & System Settings')
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);

-- ---------------------------------------------------------------------------
-- Give the Admin role every Phase 1 permission by default (adjustable in-app)
-- ---------------------------------------------------------------------------
INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT (SELECT id FROM roles WHERE name = 'Admin'), p.id FROM permissions p
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- Manager, Receptionist, Service Advisor: view-only on customers/vehicles by default
INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT r.id, p.id FROM roles r
JOIN permissions p ON p.slug IN ('customers.view','customers.manage','vehicles.view','vehicles.manage')
WHERE r.name = 'Manager'
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT r.id, p.id FROM roles r
JOIN permissions p ON p.slug IN ('customers.view','customers.manage','vehicles.view','vehicles.manage')
WHERE r.name = 'Receptionist'
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

INSERT INTO `role_permissions` (`role_id`, `permission_id`)
SELECT r.id, p.id FROM roles r
JOIN permissions p ON p.slug IN ('customers.view','vehicles.view')
WHERE r.name IN ('Service Advisor','Mechanic','Storekeeper','Cashier','Accountant')
ON DUPLICATE KEY UPDATE `role_id` = `role_id`;

-- ---------------------------------------------------------------------------
-- Default Super Admin account — CHANGE THIS PASSWORD IMMEDIATELY AFTER INSTALL
-- Email: admin@garage.local  Password: Admin@12345
-- ---------------------------------------------------------------------------
INSERT INTO `users` (`full_name`, `email`, `phone`, `password`, `role_id`, `is_active`) VALUES
  ('System Administrator', 'admin@garage.local', '+251900000000',
   '$2y$10$055SKQx.1J0gXk.poCwx/u/W.cVhrQKE64BowzFK5UcrKptus.LB2',
   (SELECT id FROM roles WHERE name = 'Super Admin'), 1)
ON DUPLICATE KEY UPDATE `full_name` = VALUES(`full_name`);

-- ---------------------------------------------------------------------------
-- Default settings
-- ---------------------------------------------------------------------------
INSERT INTO `settings` (`setting_key`, `setting_value`) VALUES
  ('garage_name', 'Sample Garage Management'),
  ('garage_short_name', 'Sample Garage'),
  ('garage_phone', '+251 11 000 0000'),
  ('garage_email', 'info@samplegarage.et'),
  ('garage_address', 'Bole Road, Addis Ababa, Ethiopia'),
  ('garage_website', 'www.samplegarage.et'),
  ('currency_symbol', 'ETB'),
  ('currency_code', 'ETB'),
  ('tax_enabled', '1'),
  ('tax_rate', '15'),
  ('tax_number', ''),
  ('invoice_prefix', 'INV'),
  ('estimate_prefix', 'EST'),
  ('workorder_prefix', 'WO'),
  ('invoice_footer', 'Thank you for trusting us with your vehicle.'),
  ('invoice_terms', 'Payment is due upon vehicle collection unless otherwise agreed in writing.'),
  ('default_labor_rate', '350'),
  ('low_stock_default_threshold', '5'),
  ('service_due_km_threshold', '1000'),
  ('service_due_days_threshold', '30'),
  ('inactive_customer_months', '6'),
  ('vehicle_aging_days_threshold', '3'),
  ('brand_primary_color', '#0f5132'),
  ('brand_secondary_color', '#1c2b36'),
  ('brand_accent_color', '#c9a227'),
  ('brand_background_color', '#f5f6f8')
ON DUPLICATE KEY UPDATE `setting_value` = `setting_value`;
