Files
tinker_tickets/create_ticket_api.php
2024-11-30 19:48:01 -05:00

85 lines
1.9 KiB
PHP

<?php
header('Content-Type: application/json');
// Load environment variables with error check
$envFile = __DIR__ . '/.env';
if (!file_exists($envFile)) {
echo json_encode([
'success' => false,
'error' => 'Configuration file not found'
]);
exit;
}
$envVars = parse_ini_file($envFile);
if (!$envVars) {
echo json_encode([
'success' => false,
'error' => 'Invalid configuration file'
]);
exit;
}
// Database connection with detailed error handling
$conn = new mysqli(
$envVars['REACT_APP_DB_HOST'],
$envVars['REACT_APP_DB_USER'],
$envVars['REACT_APP_DB_PASS'],
$envVars['REACT_APP_DB_NAME']
);
if ($conn->connect_error) {
echo json_encode([
'success' => false,
'error' => 'Database connection failed: ' . $conn->connect_error
]);
exit;
}
// Get POST data
$data = json_decode(file_get_contents('php://input'), true);
// Generate ticket ID (9-digit format with leading zeros)
$ticket_id = sprintf('%09d', mt_rand(1, 999999999));
// Prepare insert query
$sql = "INSERT INTO tickets (ticket_id, title, description, status, priority, category, type)
VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
// First, store all values in variables
$title = $data['title'];
$description = $data['description'];
$status = $data['status'] ?? 'Open';
$priority = $data['priority'] ?? '4';
$category = $data['category'] ?? 'General';
$type = $data['type'] ?? 'Issue';
// Then use the variables in bind_param
$stmt->bind_param(
"sssssss",
$ticket_id,
$title,
$description,
$status,
$priority,
$category,
$type
);
if ($stmt->execute()) {
echo json_encode([
'success' => true,
'ticket_id' => $ticket_id,
'message' => 'Ticket created successfully'
]);
} else {
echo json_encode([
'success' => false,
'error' => $conn->error
]);
}
$stmt->close();
$conn->close();