'Unauthorized', 'message' => 'Invalid API Key.'], 401); } } checkApiKey(); $pdo = db(); $method = $_SERVER['REQUEST_METHOD']; switch ($method) { case 'GET': if (isset($_GET['id'])) { // Get single company $id = $_GET['id']; try { $stmt = $pdo->prepare("SELECT * FROM companies WHERE id = :id"); $stmt->execute(['id' => $id]); $company = $stmt->fetch(); if ($company) { sendJsonResponse($company); } else { sendJsonResponse(['error' => 'Not Found', 'message' => 'Company not found.'], 404); } } catch (PDOException $e) { sendJsonResponse(['error' => 'Database Error', 'message' => $e->getMessage()], 500); } } else { // Get all companies try { $stmt = $pdo->query("SELECT * FROM companies ORDER BY name"); $companies = $stmt->fetchAll(); sendJsonResponse($companies); } catch (PDOException $e) { sendJsonResponse(['error' => 'Database Error', 'message' => $e->getMessage()], 500); } } break; case 'POST': $data = json_decode(file_get_contents('php://input'), true); if (!$data || empty($data['name'])) { sendJsonResponse(['error' => 'Bad Request', 'message' => 'Company name is required.'], 400); } $name = $data['name']; $email = $data['email'] ?? null; $phone = $data['phone'] ?? null; $address = $data['address'] ?? null; try { $stmt = $pdo->prepare("INSERT INTO companies (name, email, phone, address) VALUES (:name, :email, :phone, :address)"); $stmt->execute([ 'name' => $name, 'email' => $email, 'phone' => $phone, 'address' => $address ]); sendJsonResponse(['message' => 'Company created successfully', 'id' => $pdo->lastInsertId()], 201); } catch (PDOException $e) { sendJsonResponse(['error' => 'Database Error', 'message' => $e->getMessage()], 500); } break; case 'PUT': $data = json_decode(file_get_contents('php://input'), true); if (!isset($_GET['id'])) { sendJsonResponse(['error' => 'Bad Request', 'message' => 'Company ID is required for update.'], 400); } if (!$data || empty($data['name'])) { sendJsonResponse(['error' => 'Bad Request', 'message' => 'Company name is required.'], 400); } $id = $_GET['id']; $name = $data['name']; $email = $data['email'] ?? null; $phone = $data['phone'] ?? null; $address = $data['address'] ?? null; try { $stmt = $pdo->prepare("UPDATE companies SET name = :name, email = :email, phone = :phone, address = :address WHERE id = :id"); $stmt->execute([ 'name' => $name, 'email' => $email, 'phone' => $phone, 'address' => $address, 'id' => $id ]); if ($stmt->rowCount() > 0) { sendJsonResponse(['message' => 'Company updated successfully.']); } else { sendJsonResponse(['error' => 'Not Found', 'message' => 'Company not found or no changes made.'], 404); } } catch (PDOException $e) { sendJsonResponse(['error' => 'Database Error', 'message' => $e->getMessage()], 500); } break; case 'DELETE': if (!isset($_GET['id'])) { sendJsonResponse(['error' => 'Bad Request', 'message' => 'Company ID is required for deletion.'], 400); } $id = $_GET['id']; try { $stmt = $pdo->prepare("DELETE FROM companies WHERE id = :id"); $stmt->execute(['id' => $id]); if ($stmt->rowCount() > 0) { sendJsonResponse(['message' => 'Company deleted successfully.']); } else { sendJsonResponse(['error' => 'Not Found', 'message' => 'Company not found.'], 404); } } catch (PDOException $e) { sendJsonResponse(['error' => 'Database Error', 'message' => $e->getMessage()], 500); } break; default: sendJsonResponse(['error' => 'Method Not Allowed', 'message' => '' . $method . ' method is not supported.'], 405); break; }