<?php
// Prueba de slim para api rest
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
/*
*
* Como pueden ver aca, armamos las rutas
+ el nombre de la funcion nos define la
+ la operacion de http con el que esta relacionado
* $app->funcionHttp('/ruta','nombreFuncion');
*/
$app->get('/pedidos', 'getPedidos');
$app->post('/pedido','addPedido');
/*
Por ejemplo para actualizar y borrar seria algo parecido a esto
$app->put('/pedido/:id','updatePedido');
$app->delete('/pedido/:id', 'deletePedido');
*/
/* Levantamos la aplicacion */
$app->run();
/*
Se encarga de la conexion a la BD
Nos devuelve un punterillo a la conexion
*/
function getConnection() {
$dbhost="127.0.0.1";
$dbuser="root";
$dbpass="pepe";
$dbname="chespirito";
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
}
/*
Esta funcion seria la encargada de traer del BD
los pedidos y enviarlas al cliente en formato
json. Si, esteticamente tener el query ahi es
horrible, pero dejame respirar un poco negro
*/
function getPedidos() {
//Traemos todos los pedidos de la bd ordenamos por cliente
$sql = "select * FROM pedido ORDER BY nombre";
try {
$db = getConnection();
$stmt = $db->query($sql);
$Pedido = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
//Transformamos a json e imprimimos
echo '{"Pedidos": ' . json_encode($Pedido) . '}';
} catch(PDOException $e) {
//Si paso algo malo, pues imprimos el error
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
/*
Esta seria la encargada de anadir un pedido a la BD
*/
function addPedido() {
//pedimos a Slim que nos mande el request
$request = \Slim\Slim::getInstance()->request();
//como el request esta en json lo decodificamos
$Pedido = json_decode($request->getBody());
//armamos un query sencillo para insertarlo en la BD
$sql = "INSERT INTO pedido (nombre, telefono, hora, direccion, cantidad) VALUES (:nombre, :telefono, :hora, :direccion, :cantidad)";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
//Insertamos los valores en la query
$stmt->bindParam("nombre", $Pedido->nombre);
$stmt->bindParam("telefono", $Pedido->telefono);//$Pedido->descripcion);
$stmt->bindParam("hora", $Pedido->hora);
$stmt->bindParam("direccion", $Pedido->direccion);
$stmt->bindParam("cantidad", $Pedido->cantidad);
$stmt->execute();
$Pedido->id = $db->lastInsertId();
$db = null;
//Si todo salio bien retornamos el pedido recien guardado
echo json_encode($Pedido);
} catch(PDOException $e) {
//Si todo se fue a la mierda, pues retornamos porque se fue todo a la mierda
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}