Guest User

Untitled

a guest
Jan 26th, 2025
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.80 KB | Source Code | 0 0
  1. # Metoda POST
  2. if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['REQUEST_URI'] === '/api/categories/') {
  3.     $name  = $_POST['name'] ?? null;
  4.     $color = $_POST['color'] ?? null;
  5.  
  6.     # 400 Bad Request - pusta nazwa, pusty kolor lub zły format koloru
  7.    if (empty($name) || empty($color) || !preg_match('/^#[0-9A-Fa-f]{6}$/', $color)) {
  8.         http_response_code(400);
  9.         echo json_encode(['error' => 'Bad request']);
  10.         exit();
  11.     }
  12.  
  13.     $stmt = $conn->prepare("SELECT id FROM categories WHERE name = :name");
  14.     $stmt->execute(['name' => $name]);
  15.  
  16.     # 409 Conflict - nazwa istnieje w bazie
  17.    if ($stmt->rowCount() > 0) {
  18.         http_response_code(409);
  19.         echo json_encode(['error' => 'Conflict']);
  20.         exit();
  21.     }
  22.  
  23.     $stmt = $conn->prepare("INSERT INTO categories (name, color) VALUES (:name, :color)");
  24.     $stmt->execute(['name' => $name, 'color' => $color]);
  25.  
  26.     # 201 Created
  27.    $newId = $conn->lastInsertId();
  28.     http_response_code(201);
  29.     echo json_encode(['id' => $newId, 'name' => $name, 'color' => $color]);
  30.     exit();
  31. }
  32.  
  33. # Metoda PUT
  34. if ($_SERVER['REQUEST_METHOD'] === 'PUT' && preg_match('#^/api/categories/(\d+)/$#', $_SERVER['REQUEST_URI'], $matches)) {
  35.     $categoryId = $matches[1];
  36.    
  37.     $input = json_decode(file_get_contents("php://input"), true);
  38.     $name  = $input['name'] ?? null;
  39.     $color = $input['color'] ?? null;
  40.  
  41.  
  42.    if ($name === null || $color === null) {
  43.     http_response_code(400); // Bad Request
  44.     echo json_encode(['error' => 'Bad Request']);
  45.     exit();
  46.     }
  47.  
  48.     // Sprawdź, czy kategoria o podanym ID istnieje
  49.     $stmt = $conn->prepare("SELECT id FROM categories WHERE id = :id");
  50.     $stmt->execute(['id' => $categoryId]);
  51.     $category = $stmt->fetch(PDO::FETCH_ASSOC);
  52.  
  53.     if (!$category) {
  54.         http_response_code(404); // Not Found
  55.         echo json_encode(['error' => 'Not Found']);
  56.         exit();
  57.     }
  58.  
  59.     // Czy już istnieje taka nazwa kategorii dla innego id w bazie danych
  60.     $stmt = $conn->prepare("SELECT id FROM categories WHERE name = :name AND id != :id");
  61.     $stmt->execute(['name' => $name, 'id' => $categoryId]);
  62.  
  63.     if ($stmt->rowCount() > 0) {
  64.         http_response_code(409); // Conflict
  65.         echo json_encode(['error' => 'Conflict']);
  66.         exit();
  67.     }
  68.  
  69.     // Sprawdzenie czy nazwa lub kolor są puste / kolor ma # i 6 znaków
  70.     if (empty($name) || empty($color) || !preg_match('/^#[0-9A-Fa-f]{6}$/', $color)) {
  71.         http_response_code(400);
  72.         echo json_encode(['error' => 'Bad Request']);
  73.         exit();
  74.     }
  75.  
  76.     // Aktualizacja danych
  77.     $stmt = $conn->prepare("UPDATE categories SET name = :name, color = :color WHERE id = :id");
  78.     $stmt->execute(['name' => $name, 'color' => $color]);
  79.  
  80.     http_response_code(204);
  81.     exit();
  82. }
Advertisement
Add Comment
Please, Sign In to add comment