Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions API.REST.PHP/api-rest/create_client.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
require_once('../includes/Client.class.php');

if($_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_GET['email']) && isset($_GET['name']) && isset($_GET['city']) && isset($_GET['telephone'])){
Client::create_client($_GET['email'], $_GET['name'], $_GET['city'], $_GET['telephone']);
&& isset($_POST['email']) && isset($_POST['name']) && isset($_POST['city']) && isset($_POST['telephone'])){
Client::create_client($_POST['email'], $_POST['name'], $_POST['city'], $_POST['telephone']);
}

?>
12 changes: 7 additions & 5 deletions API.REST.PHP/api-rest/get_all_client.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
<?php
require_once('../includes/Client.class.php');

if($_SERVER['REQUEST_METHOD'] == 'GET'){
Client::get_all_clients();
}
require_once('../includes/Client.class.php');

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
Client::get_all_clients();
} else {
header('HTTP/1.1 400 Bad Request');
exit();
}
?>
70 changes: 70 additions & 0 deletions API.REST.PHP/css/styles.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}

.container {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

h2 {
margin-bottom: 20px;
}

form {
display: flex;
flex-direction: column;
}

label {
margin-bottom: 5px;
}

input {
margin-bottom: 15px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
}

button {
padding: 10px;
background-color: #007BFF;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}

button:hover {
background-color: #0056b3;
}

table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}

th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}

th {
background-color: #f2f2f2;
}

#message {
margin-top: 20px;
font-size: 1.2em;
}
30 changes: 30 additions & 0 deletions API.REST.PHP/html/clients.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Client List</title>
<link rel="stylesheet" href="../css/styles.css">
</head>
<body>
<div class="container">
<h2>Client List</h2>
<button onclick="fetchClients()">Load Clients</button>
<table id="clientTable">
<thead>
<tr>
<th>ID</th>
<th>Email</th>
<th>Name</th>
<th>City</th>
<th>Telephone</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<p id="message"></p>
</div>
<script src="../js/get-all-client/script.js"></script>
</body>
</html>
30 changes: 30 additions & 0 deletions API.REST.PHP/html/create.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Create Client</title>
<link rel="stylesheet" href="../css/styles.css">
</head>
<body>
<div class="container">
<h2>Create New Client</h2>
<form id="clientForm" action="../api-rest/create_client.php" method="POST">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>

<label for="name">Name:</label>
<input type="text" id="name" name="name" required>

<label for="city">City:</label>
<input type="text" id="city" name="city" required>

<label for="telephone">Telephone:</label>
<input type="tel" id="telephone" name="telephone" required>

<button type="submit">Create Client</button>
</form>
</div>
<script src="../js/create-client/script.js"></script>
</body>
</html>
18 changes: 18 additions & 0 deletions API.REST.PHP/html/delete.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Delete Client</title>
<link rel="stylesheet" href="../css/styles.css">
</head>
<body>
<div class="container">
<h2>Delete Client</h2>
<input type="number" id="clientId" placeholder="Enter Client ID" required>
<button onclick="deleteClient()">Delete Client</button>
<p id="message"></p>
</div>
<script src="../js/delete-client/script.js"></script>
</body>
</html>
34 changes: 34 additions & 0 deletions API.REST.PHP/html/update.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Update Client</title>
<link rel="stylesheet" href="../css/styles.css">
</head>
<body>
<div class="container">
<h2>Update Client</h2>
<form id="updateClientForm">
<label for="clientId">Client ID:</label>
<input type="number" id="clientId" name="id" required>

<label for="email">Email:</label>
<input type="email" id="email" name="email" required>

<label for="name">Name:</label>
<input type="text" id="name" name="name" required>

<label for="city">City:</label>
<input type="text" id="city" name="city" required>

<label for="telephone">Telephone:</label>
<input type="tel" id="telephone" name="telephone" required>

<button type="submit">Update Client</button>
</form>
<p id="message"></p>
</div>
<script src="../js/update-client/script.js"></script>
</body>
</html>
9 changes: 6 additions & 3 deletions API.REST.PHP/includes/Client.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,16 @@ public static function get_all_clients(){
$conn = $database->getConnection();
$stmt = $conn->prepare('SELECT * FROM listado_clientes');
if($stmt->execute()){
$result = $stmt->fetchAll();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: application/json');
echo json_encode($result);
header('HTTP/1.1 201 OK');
header('HTTP/1.1 200 OK');
} else {
header('HTTP/1.1 404 No se ha podido consultar los clientes');
echo json_encode(['error' => 'No se ha podido consultar los clientes']);
}
}
exit();
}

public static function update_client($id, $email, $name, $city, $telephone){
$database = new Database();
Expand Down
29 changes: 29 additions & 0 deletions API.REST.PHP/js/create-client/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
document.getElementById('clientForm').addEventListener('submit', function(event) {
event.preventDefault();

const formData = new FormData(event.target);

const params = new URLSearchParams(formData);

fetch('../api-rest/create_client.php?' + params.toString(), {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: params.toString()
})
.then(response => {
if (response.status === 201) {
alert('Cliente creado correctamente');
event.target.reset();
} else if (response.status === 404) {
alert('Error: Cliente no se ha creado correctamente');
} else {
alert('Error desconocido');
}
})
.catch(error => {
console.error('Error:', error);
alert('Error de red. Por favor, inténtalo de nuevo más tarde.');
});
});
25 changes: 25 additions & 0 deletions API.REST.PHP/js/delete-client/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
function deleteClient() {
const clientId = document.getElementById('clientId').value;
const message = document.getElementById('message');

fetch(`../api-rest/delete_client.php?id=${clientId}`, {
method: 'DELETE',
})
.then(response => {
if (response.status === 201) {
message.textContent = 'Cliente borrado correctamente';
message.style.color = 'green';
} else if (response.status === 404) {
message.textContent = 'Error: Cliente no se ha podido borrar correctamente';
message.style.color = 'red';
} else {
message.textContent = 'Error desconocido';
message.style.color = 'red';
}
})
.catch(error => {
console.error('Error:', error);
message.textContent = 'Error de red. Por favor, inténtalo de nuevo más tarde.';
message.style.color = 'red';
});
}
45 changes: 45 additions & 0 deletions API.REST.PHP/js/get-all-client/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
function fetchClients() {
const message = document.getElementById('message');
const tbody = document.querySelector('#clientTable tbody');
tbody.innerHTML = '';

fetch('../api-rest/get_all_client.php')
.then(response => {
console.log(response);
if (response.status === 200) {
return response.json();
} else if (response.status === 404) {
message.textContent = 'Error: No se ha podido consultar los clientes';
message.style.color = 'red';
return Promise.reject('Client fetch failed');
} else {
message.textContent = 'Error desconocido';
message.style.color = 'red';
return Promise.reject('Unknown error');
}
})
.then(data => {
if (data.error) {
message.textContent = `Error: ${data.error}`;
message.style.color = 'red';
} else {
data.forEach(client => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${client.id}</td>
<td>${client.email}</td>
<td>${client.name}</td>
<td>${client.city}</td>
<td>${client.telephone}</td>
`;
tbody.appendChild(row);
});
message.textContent = '';
}
})
.catch(error => {
console.error('Error:', error);
message.textContent = 'Error de red. Por favor, inténtalo de nuevo más tarde.';
message.style.color = 'red';
});
}
34 changes: 34 additions & 0 deletions API.REST.PHP/js/update-client/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
document.getElementById('updateClientForm').addEventListener('submit', function(event) {
event.preventDefault();

const formData = new FormData(event.target);

const params = new URLSearchParams(formData);

// Make an AJAX request to the PHP API
fetch(`../api-rest/update_client.php?${params.toString()}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: params.toString()
})
.then(response => {
if (response.status === 201) {
document.getElementById('message').textContent = 'Cliente actualizado correctamente';
document.getElementById('message').style.color = 'green';
event.target.reset();
} else if (response.status === 404) {
document.getElementById('message').textContent = 'Error: Cliente no se ha podido actualizar correctamente';
document.getElementById('message').style.color = 'red';
} else {
document.getElementById('message').textContent = 'Error desconocido';
document.getElementById('message').style.color = 'red';
}
})
.catch(error => {
console.error('Error:', error);
document.getElementById('message').textContent = 'Error de red. Por favor, inténtalo de nuevo más tarde.';
document.getElementById('message').style.color = 'red';
});
});