-- Migration: Tilføj felter til custom/manuelle installation opgaver
-- Dato: 2025-10-29
-- Formål: Gøre det muligt at oprette manuelle opgaver med timer pr. enhed

-- Tilføj time_unit og time_per_unit til smart_package_tasks
ALTER TABLE smart_package_tasks
ADD COLUMN time_unit ENUM('per_sqm', 'per_meter', 'per_piece', 'per_project', 'per_hour') 
  DEFAULT 'per_project' 
  COMMENT 'Enhed for tidsestimering (pr. m², pr. løbende meter, pr. styk, pr. projekt, pr. time)',
ADD COLUMN time_per_unit DECIMAL(10,2) 
  DEFAULT 0 
  COMMENT 'Timer pr. enhed (fx 0.17 timer pr. løbende meter = 10 min)',
ADD COLUMN is_custom BOOLEAN 
  DEFAULT 0 
  COMMENT 'Indikerer om opgaven er manuelt oprettet (ikke fra montage vejledning)',
ADD COLUMN material_varenr VARCHAR(50) 
  NULL 
  COMMENT 'Varenummer på materialet opgaven relaterer til',
ADD INDEX idx_material_varenr (material_varenr);

-- Opdater eksisterende tasks til at bruge per_project som default
UPDATE smart_package_tasks 
SET time_unit = 'per_project', 
    time_per_unit = hours
WHERE time_unit IS NULL OR time_unit = 'per_project';

-- Eksempel: Lægter opsætning (som tømmeren nævnte)
INSERT INTO smart_package_tasks (
  package_id, 
  task_name, 
  task_description, 
  task_order, 
  estimated_hours,
  time_unit,
  time_per_unit,
  hourly_rate,
  is_custom,
  material_varenr,
  required_tools,
  created_at
) VALUES (
  (SELECT id FROM material_packages WHERE name LIKE '%B7 Tag%' LIMIT 1),
  'Opsætning af lægter',
  'Præcis montage af lægter med korrekt afstand (cc 370mm). Inkluderer skruearbejde og kontrol af vaterpas.',
  4,
  0, -- Beregnes dynamisk baseret på løbende meter
  'per_meter', -- Timer pr. løbende meter
  0.17, -- 10 minutter pr. løbende meter (10/60 = 0.166667)
  580,
  1, -- Custom/manuelt oprettet
  '147072', -- Varenr for lægter (hvis kendt)
  '["skruemaskine", "vaterpas", "målebånd", "snor"]',
  NOW()
);

-- Eksempel: Spær opsætning
INSERT INTO smart_package_tasks (
  package_id, 
  task_name, 
  task_description, 
  task_order, 
  estimated_hours,
  time_unit,
  time_per_unit,
  hourly_rate,
  is_custom,
  required_tools,
  created_at
) VALUES (
  (SELECT id FROM material_packages WHERE name LIKE '%B7 Tag%' LIMIT 1),
  'Montage af spær',
  'Præcis opsætning af bærende spær med korrekt afstand og vinkel. Kontrol af niveau og lodrethed.',
  2,
  0, -- Beregnes dynamisk
  'per_piece', -- Timer pr. spær
  0.75, -- 45 minutter pr. spær
  580,
  1, -- Custom
  '["boremaskine", "vaterpas", "vinkelmåler", "sav"]',
  NOW()
);

-- View til at få overblik over custom tasks
CREATE OR REPLACE VIEW custom_installation_tasks AS
SELECT 
  t.id,
  t.task_name,
  t.task_description,
  t.time_unit,
  t.time_per_unit,
  CASE 
    WHEN t.time_unit = 'per_meter' THEN CONCAT(ROUND(t.time_per_unit * 60, 0), ' min pr. løbende meter')
    WHEN t.time_unit = 'per_sqm' THEN CONCAT(ROUND(t.time_per_unit * 60, 0), ' min pr. m²')
    WHEN t.time_unit = 'per_piece' THEN CONCAT(ROUND(t.time_per_unit * 60, 0), ' min pr. styk')
    WHEN t.time_unit = 'per_hour' THEN CONCAT(t.time_per_unit, ' timer pr. time')
    ELSE CONCAT(t.estimated_hours, ' timer totalt')
  END as time_display,
  t.hourly_rate,
  t.material_varenr,
  m.material_name,
  p.name as package_name,
  t.required_tools,
  t.created_at,
  t.updated_at
FROM smart_package_tasks t
LEFT JOIN material_packages p ON t.package_id = p.id
LEFT JOIN materials m ON t.material_varenr = m.varenr
WHERE t.is_custom = 1
ORDER BY t.created_at DESC;

-- Kommenter på tabel og kolonner
ALTER TABLE smart_package_tasks 
COMMENT = 'Installation opgaver for smart pakker - både auto-genererede fra montage vejledninger og manuelt oprettede custom tasks';
