project = $project; } public function array(array $rows): void { foreach ($rows as $row) { $name = trim($row['name'] ?? ''); if (empty($name)) { $this->skipped++; continue; } $data = [ 'project_id' => $this->project->id, 'name' => $name, 'description' => $row['description'] ?? null, 'status' => 'pending', 'labor_cost' => is_numeric($row['labor_cost'] ?? null) ? $row['labor_cost'] : 0, 'estimated_hours' => is_numeric($row['estimated_hours'] ?? null) ? $row['estimated_hours'] : 0, 'sort_order' => is_numeric($row['sort_order'] ?? null) ? (int) $row['sort_order'] : 0, ]; // Parse dates safely $startDate = $row['start_date_yyyy_mm_dd'] ?? $row['start_date'] ?? null; $endDate = $row['end_date_yyyy_mm_dd'] ?? $row['end_date'] ?? null; if ($startDate) { try { $data['start_date'] = Carbon::parse($startDate)->format('Y-m-d'); } catch (\Exception) {} } if ($endDate) { try { $data['end_date'] = Carbon::parse($endDate)->format('Y-m-d'); } catch (\Exception) {} } Task::create($data); $this->imported++; } } public function getImportedCount(): int { return $this->imported; } public function getSkippedCount(): int { return $this->skipped; } }