<?php
if ($method !== 'POST') {
    json_response(['error' => 'Method not allowed'], 405);
}

$input = json_decode(file_get_contents('php://input'), true);

// Validate required fields
$requiredFields = ['title', 'content', 'type'];
foreach ($requiredFields as $field) {
    if (!isset($input[$field]) || empty(trim($input[$field]))) {
        json_response(['error' => "Field '{$field}' is required"], 400);
    }
}

// Validate article type
if (!in_array($input['type'], ['internal', 'external'])) {
    json_response(['error' => 'Invalid article type'], 400);
}

// Validate status
$validStatuses = ['draft', 'published', 'scheduled'];
$status = $input['status'] ?? 'draft';
if (!in_array($status, $validStatuses)) {
    json_response(['error' => 'Invalid status'], 400);
}

$article = new Article();

// Prepare article data
$articleData = [
    'title' => trim($input['title']),
    'content' => trim($input['content']),
    'excerpt' => trim($input['excerpt'] ?? ''),
    'featured_image' => trim($input['featured_image'] ?? ''),
    'type' => $input['type'],
    'status' => $status,
    'author_id' => $_SESSION['user_id'],
    'category_id' => !empty($input['category_id']) ? intval($input['category_id']) : null,
    'is_ai_generated' => isset($input['is_ai_generated']) ? (bool)$input['is_ai_generated'] : false,
    'source_url' => trim($input['source_url'] ?? ''),
    'meta_title' => trim($input['meta_title'] ?? ''),
    'meta_description' => trim($input['meta_description'] ?? ''),
];

// Generate excerpt if not provided
if (empty($articleData['excerpt'])) {
    $articleData['excerpt'] = substr(strip_tags($articleData['content']), 0, 200) . '...';
}

// Generate meta title if not provided
if (empty($articleData['meta_title'])) {
    $articleData['meta_title'] = $articleData['title'];
}

// Generate meta description if not provided
if (empty($articleData['meta_description'])) {
    $articleData['meta_description'] = $articleData['excerpt'];
}

try {
    $articleId = $article->create($articleData);

    if ($articleId) {
        // Log the creation
        error_log("Article created: ID {$articleId}, Title: {$articleData['title']}, Author: {$_SESSION['username']}");

        json_response([
            'success' => true,
            'article_id' => $articleId,
            'message' => 'Article created successfully',
            'redirect_url' => "/admin/?route=edit-article&id={$articleId}"
        ], 201);
    } else {
        json_response([
            'success' => false,
            'error' => 'Failed to create article'
        ], 500);
    }
} catch (Exception $e) {
    error_log("Create article error: " . $e->getMessage());
    json_response([
        'success' => false,
        'error' => 'Database error occurred'
    ], 500);
}
?>