init php rest api

This commit is contained in:
devfzn 2023-03-24 12:41:27 -03:00
commit 4f9ea1dbfd
Signed by: devfzn
GPG Key ID: E070ECF4A754FDB1
23 changed files with 1388 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
pruebas/
config

1
.htaccess Normal file
View File

@ -0,0 +1 @@
RedirectMatch 404 /\.git

98
README.md Normal file
View File

@ -0,0 +1,98 @@
# Apuntes PHP REST API
### Requerimientos
[MariaDB](https://mariadb.com/docs/), [Apache](https://httpd.apache.org/docs/)
y [PHP](https://www.php.net/docs.php). Opcional
[PhpMyAdmin](https://docs.phpmyadmin.net/en/latest/)
```sh
sudo apt install mariadb-server apache2 php-mysql python3-mysqldb php php-cli \
php-curl php-gd php-json php-mbstring php-mysql php-zip
# opcional
sudo apt install phpmyadmin
```
```sh
sudo systemctl enable mysql
```
### Configuracion Apache2
#### Agregar user a www-data
```sh
sudo usermod -a -G www-data $USER
```
#### Crear regla
Ejemplo usando symlink `html` a `$HOME/projects/apirest` en vez de usar el
directorio `/var/www/html`.
```sh
cd /var/www/
sudo ln -s $HOME/projects/apirest html
```
`/etc/apache2/apache2.conf`
```apache
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Para usar phpmyadmin, agregar al final
Include /etc/phpmyadmin/apache.conf
```
#### Activar modulo rewrite
Para usar `.htaccess` específico del proyecto.
```sh
sudo a2enmod rewrite
sudo systemctl restart apache2
```
> ¿Como mostrar errores en php? [stackoverflow](https://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display).
Agregar la sgte. linea en `.htaccess`
```apache
php_flag display_errors 1
```
O modifcar el/los parametro(s) en `/etc/php/8.1/php.ini`
```apache
error_reporting = E_ALL
display_errors = On
```
#### Extension RESTED para Firefox
![img](./imgs/firefox_rested_extension.png)
----
### Inicio del proyecto
Crear y poblar base de datos, según archivo `./original/database/apirest.sql`.
Crear archivo de configuración en la ruta `./<projecto>/clases/conexion/config`.
```json
{
"conexion":{
"server" : "127.0.0.1",
"user" : "<USER>",
"password" : "<PASWORD>",
"database" : "apirest",
"port" : "3306"
}
}
```

19
apirest_yt/.htaccess Normal file
View File

@ -0,0 +1,19 @@
php_flag display_errors 1
FallbackResource /index.php
RewriteEngine On
# Si el archivo existe no es necesario especificar extension ".php"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
# Si el archivo existe no es necesario especificar extension ".html"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
# Si la ruta no existe redirige al index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ index.php?url=$1 [L,QSA]

29
apirest_yt/auth.php Normal file
View File

@ -0,0 +1,29 @@
<?php
require_once 'clases/auth.class.php';
require_once 'clases/respuestas.class.php';
$_auth = new auth;
$_respuestas = new respuestas;
if($_SERVER['REQUEST_METHOD'] == "POST"){
// recibir datos
$postBody = file_get_contents("php://input");
// envío de datos al manejador
$datosArray = $_auth->login($postBody);
// respuesta
header('Content-Type: application/json');
if(isset($datosArray["result"]["error_id"])){
$responseCode = $datosArray["result"]["error_id"];
http_response_code($responseCode);
}else{
http_response_code(200);
}
echo json_encode($datosArray);
}else{
header('Content-Type: application/json');
$datosArray = $_respuestas->error_405();
echo json_encode($datosArray);
}
?>

View File

@ -0,0 +1,68 @@
<?php
require_once 'conexion/conexion.php';
require_once 'respuestas.class.php';
// auth hereda de conexion (solo metodos publicos)
class auth extends conexion{
public function login($json){
$_respuestas = new respuestas;
$datos = json_decode($json,true);
if (!isset($datos['usuario']) || !isset($datos['password'])){
// echo "Error parametros auth";
return $_respuestas->error_400();
} else {
// echo "ok";
$usuario = $datos['usuario'];
$password = $datos['password'];
$datos = $this->obtenerDatosUsuario($usuario);
if ($datos){
// Usuario existe
//print_r($datos);
} else {
// Usuario no existe
//echo "Usuario no existe";
// return $_respuestas->error_400();
return $_respuestas->error_200("No existe el usuario $usuario");
}
}
}
private function obtenerDatosUsuario($correo){
$query = "SELECT UsuarioID,Password,Estado FROM usuarios WHERE Usuario = '$correo'";
# Llamado a método de clase padre
$datos = parent::obtenerDatos($query);
if(isset($datos[0]["UsuarioID"])){
return $datos;
} else {
return 0;
}
}
}
?>

View File

@ -0,0 +1,102 @@
<?php
class conexion {
#private $debug=true;
private $debug=false;
private $server;
private $user;
private $password;
private $database;
private $port;
private $conector;
function __construct(){
if ($this->debug){ echo '</br>'."En constructor clase conexion".'</br>'; }
$listadatos = $this->datosConexion();
foreach ($listadatos as $key => $value) {
$this->server = $value['server'];
$this->user = $value['user'];
$this->password = $value['password'];
$this->database = $value['database'];
$this->port = $value['port'];
}
if ($this->debug){ echo "datos constructor: SERVER: $this->server, USER: $this->user,
PASS: $this->password, DB: $this->database, PORT: $this->port".'</br>';}
if ($this->debug){ echo '</br>'."pre conector".'</br>'; }
try {
$conn = new mysqli("$this->server","$this->user","$this->password","$this->database","$this->port");
$this->conector = $conn;
if ($this->debug){ echo "todo BIEN con la conexion"; }
} catch (Exception $e) {
echo '</br>'."Error al intentar conectar con base de datos!".'</br>';
echo "connect_errno: [$conn->connect_errno]".'</br>';
echo "connect_error: [$conn->connect_error]".'</br>';
echo "Exception: $e".'</br>';
die();
}
if ($this->debug){ echo '</br>'."post conector".'</br>'; }
}
private function datosConexion(){
if ($this->debug){ echo '</br>'."En funcion datosConexion".'</br>'; }
$ruta = dirname(__FILE__);
$jsondata = file_get_contents($ruta . "/" . "config");
if ($this->debug){ echo '</br>'."Ruta: $ruta".'</br>'.'<pre>'; print_r($jsondata); echo '</pre>'.'</br>'; }
return json_decode($jsondata, true);
}
private function convertirUTF8($array){
if ($this->debug){ echo '</br>'."En funcion convertirUTF8".'</br>'; }
array_walk_recursive($array,function(&$item,$key){
if(!mb_detect_encoding($item,'utf-8',true)){
$item = utf8_encode($item);
}
});
return $array;
}
public function obtenerDatos($query){
if ($this->debug){ echo '</br>'."En funcion obtenerDatos".'</br>'; }
$results = $this->conector->query($query);
$resultsArray = array();
foreach ($results as $value) {
$resultsArray[] = $value;
}
if ($this->debug){ echo '<pre>'; print_r($resultsArray); echo '</pre>'.'</br>'; }
return $this->convertirUTF8($resultsArray);
}
public function test_conector(){
echo '</br>'."Funcion test_conector".'</br>';
}
public function nonQuery($sqlstr){
$results = $this->conector->query($sqlstr);
#return $results->affected_rows;
return $this->conector->affected_rows;
}
// INSERT
public function nonQueryId($sqlstr){
$results = $this->conector->query($sqlstr);
$filas = $this->conector->affected_rows;
if ($filas >= 1){
#return $results->insert_id;
return $this->conector->insert_id;
} else {
return 0;
}
}
}
?>

View File

@ -0,0 +1,37 @@
<?php
class respuestas{
public $response = [
"status" => "ok",
"result" => array()
];
public function error_405(){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "405",
"error_msg" => "Metodo no permitido"
);
return $this->response;
}
public function error_200($mensaje = "Datos incorrectos"){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "200",
"error_msg" => $mensaje
);
return $this->response;
}
public function error_400(){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "400",
"error_msg" => "Datos recibidos incompletos o formato erroneo"
);
return $this->response;
}
}
?>

20
apirest_yt/index.php Normal file
View File

@ -0,0 +1,20 @@
<?php
echo "INDEX.php".'</br>';
require_once "clases/conexion/conexion.php";
$conector = new conexion;
#$conector->test_conector();
// Prueba Select
#$query = "SELECT * FROM pacientes";
#echo '<pre>'; print_r($conector->obtenerDatos($query)); echo '</pre>';
// Prueba insert
#$query = "INSERT INTO pacientes (DNI)value('0')";
#echo '<pre>'; print_r($conector->nonQuery($query)); echo '</pre>';
#$query = "INSERT INTO pacientes (DNI)value('1')";
#echo '<pre>'; print_r($conector->nonQueryId($query)); echo '</pre>';
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

19
original/.htaccess Normal file
View File

@ -0,0 +1,19 @@
#php_flag display_errors 1
RewriteEngine On
# esta lineas son para quitar la ext .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
# esta lineas son para quitar la ext .html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
# Si la ruta no es un archivo existente, ni una carpeta
# Reescribir al index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ index.php?url=$1 [L,QSA]

View File

@ -0,0 +1,63 @@
body{
color:black;
}
.container {
margin: 10px;
border: 1px solid #D0D0D0;
box-shadow: 0 0 8px #D0D0D0;
}
h1{
color: #444;
background-color: transparent;
border-bottom: 1px solid #D0D0D0;
font-size: 24px;
font-weight: normal;
margin: 0 0 14px 0;
padding: 14px 15px 10px 15px;
}
h2 {
display: block;
font-size: 1.5em;
-webkit-margin-before: 0.83em;
-webkit-margin-after: 0.83em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
font-weight: bold;
}
p {
display: block;
-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
}
.divbody{
margin: 0 15px 0 15px;
}
p.divfooter {
text-align: right;
font-size: 16px;
border-top: 1px solid #D0D0D0;
line-height: 32px;
padding: 0 10px 0 10px;
margin: 20px 0 0 0;
}
code {
font-family: Consolas, Monaco, Courier New, Courier, monospace;
font-size: 16px;
background-color: #f9f9f9;
border: 1px solid #D0D0D0;
color: #002166;
display: block;
margin: 14px 0 14px 0;
padding: 12px 10px 12px 10px;
}

29
original/auth.php Normal file
View File

@ -0,0 +1,29 @@
<?php
require_once 'clases/auth.class.php';
require_once 'clases/respuestas.class.php';
$_auth = new auth;
$_respuestas = new respuestas;
if($_SERVER['REQUEST_METHOD'] == "POST"){
//recibir datos
$postBody = file_get_contents("php://input");
//enviamos los datos al manejador
$datosArray = $_auth->login($postBody);
//delvolvemos una respuesta
header('Content-Type: application/json');
if(isset($datosArray["result"]["error_id"])){
$responseCode = $datosArray["result"]["error_id"];
http_response_code($responseCode);
}else{
http_response_code(200);
}
echo json_encode($datosArray);
}else{
header('Content-Type: application/json');
$datosArray = $_respuestas->error_405();
echo json_encode($datosArray);
}
?>

View File

@ -0,0 +1,86 @@
<?php
require_once 'conexion/conexion.php';
require_once 'respuestas.class.php';
class auth extends conexion{
public function login($json){
$_respustas = new respuestas;
$datos = json_decode($json,true);
if(!isset($datos['usuario']) || !isset($datos["password"])){
//error con los campos
return $_respustas->error_400();
}else{
//todo esta bien
$usuario = $datos['usuario'];
$password = $datos['password'];
$password = parent::encriptar($password);
$datos = $this->obtenerDatosUsuario($usuario);
if($datos){
//verificar si la contraseña es igual
if($password == $datos[0]['Password']){
if($datos[0]['Estado'] == "Activo"){
//crear el token
$verificar = $this->insertarToken($datos[0]['UsuarioId']);
if($verificar){
// si se guardo
$result = $_respustas->response;
$result["result"] = array(
"token" => $verificar
);
return $result;
}else{
//error al guardar
return $_respustas->error_500("Error interno, No hemos podido guardar");
}
}else{
//el usuario esta inactivo
return $_respustas->error_200("El usuario esta inactivo");
}
}else{
//la contraseña no es igual
return $_respustas->error_200("El password es invalido");
}
}else{
//no existe el usuario
return $_respustas->error_200("El usuaro $usuario no existe ");
}
}
}
private function obtenerDatosUsuario($correo){
$query = "SELECT UsuarioId,Password,Estado FROM usuarios WHERE Usuario = '$correo'";
$datos = parent::obtenerDatos($query);
if(isset($datos[0]["UsuarioId"])){
return $datos;
}else{
return 0;
}
}
private function insertarToken($usuarioid){
$val = true;
$token = bin2hex(openssl_random_pseudo_bytes(16,$val));
$date = date("Y-m-d H:i");
$estado = "Activo";
$query = "INSERT INTO usuarios_token (UsuarioId,Token,Estado,Fecha)VALUES('$usuarioid','$token','$estado','$date')";
$verifica = parent::nonQuery($query);
if($verifica){
return $token;
}else{
return 0;
}
}
}
?>

View File

@ -0,0 +1,92 @@
<?php
class conexion {
private $server;
private $user;
private $password;
private $database;
private $port;
private $conexion;
function __construct(){
$listadatos = $this->datosConexion();
foreach ($listadatos as $key => $value) {
$this->server = $value['server'];
$this->user = $value['user'];
$this->password = $value['password'];
$this->database = $value['database'];
$this->port = $value['port'];
}
$this->conexion = new mysqli($this->server,$this->user,$this->password,$this->database,$this->port);
if($this->conexion->connect_errno){
echo "algo va mal con la conexion";
die();
}
}
private function datosConexion(){
$direccion = dirname(__FILE__);
$jsondata = file_get_contents($direccion . "/" . "config");
return json_decode($jsondata, true);
}
private function convertirUTF8($array){
array_walk_recursive($array,function(&$item,$key){
if(!mb_detect_encoding($item,'utf-8',true)){
$item = utf8_encode($item);
}
});
return $array;
}
public function obtenerDatos($sqlstr){
$results = $this->conexion->query($sqlstr);
$resultArray = array();
foreach ($results as $key) {
$resultArray[] = $key;
}
return $this->convertirUTF8($resultArray);
}
public function nonQuery($sqlstr){
$results = $this->conexion->query($sqlstr);
return $this->conexion->affected_rows;
}
//INSERT
public function nonQueryId($sqlstr){
$results = $this->conexion->query($sqlstr);
$filas = $this->conexion->affected_rows;
if($filas >= 1){
return $this->conexion->insert_id;
}else{
return 0;
}
}
//encriptar
protected function encriptar($string){
return md5($string);
}
}
?>

View File

@ -0,0 +1,232 @@
<?php
require_once "conexion/conexion.php";
require_once "respuestas.class.php";
class pacientes extends conexion {
private $table = "pacientes";
private $pacienteid = "";
private $dni = "";
private $nombre = "";
private $direccion = "";
private $codigoPostal = "";
private $genero = "";
private $telefono = "";
private $fechaNacimiento = "0000-00-00";
private $correo = "";
private $token = "";
//912bc00f049ac8464472020c5cd06759
public function listaPacientes($pagina = 1){
$inicio = 0 ;
$cantidad = 100;
if($pagina > 1){
$inicio = ($cantidad * ($pagina - 1)) +1 ;
$cantidad = $cantidad * $pagina;
}
$query = "SELECT PacienteId,Nombre,DNI,Telefono,Correo FROM " . $this->table . " limit $inicio,$cantidad";
$datos = parent::obtenerDatos($query);
return ($datos);
}
public function obtenerPaciente($id){
$query = "SELECT * FROM " . $this->table . " WHERE PacienteId = '$id'";
return parent::obtenerDatos($query);
}
public function post($json){
$_respuestas = new respuestas;
$datos = json_decode($json,true);
if(!isset($datos['token'])){
return $_respuestas->error_401();
}else{
$this->token = $datos['token'];
$arrayToken = $this->buscarToken();
if($arrayToken){
if(!isset($datos['nombre']) || !isset($datos['dni']) || !isset($datos['correo'])){
return $_respuestas->error_400();
}else{
$this->nombre = $datos['nombre'];
$this->dni = $datos['dni'];
$this->correo = $datos['correo'];
if(isset($datos['telefono'])) { $this->telefono = $datos['telefono']; }
if(isset($datos['direccion'])) { $this->direccion = $datos['direccion']; }
if(isset($datos['codigoPostal'])) { $this->codigoPostal = $datos['codigoPostal']; }
if(isset($datos['genero'])) { $this->genero = $datos['genero']; }
if(isset($datos['fechaNacimiento'])) { $this->fechaNacimiento = $datos['fechaNacimiento']; }
$resp = $this->insertarPaciente();
if($resp){
$respuesta = $_respuestas->response;
$respuesta["result"] = array(
"pacienteId" => $resp
);
return $respuesta;
}else{
return $_respuestas->error_500();
}
}
}else{
return $_respuestas->error_401("El Token que envio es invalido o ha caducado");
}
}
}
private function insertarPaciente(){
$query = "INSERT INTO " . $this->table . " (DNI,Nombre,Direccion,CodigoPostal,Telefono,Genero,FechaNacimiento,Correo)
values
('" . $this->dni . "','" . $this->nombre . "','" . $this->direccion ."','" . $this->codigoPostal . "','" . $this->telefono . "','" . $this->genero . "','" . $this->fechaNacimiento . "','" . $this->correo . "')";
$resp = parent::nonQueryId($query);
if($resp){
return $resp;
}else{
return 0;
}
}
public function put($json){
$_respuestas = new respuestas;
$datos = json_decode($json,true);
if(!isset($datos['token'])){
return $_respuestas->error_401();
}else{
$this->token = $datos['token'];
$arrayToken = $this->buscarToken();
if($arrayToken){
if(!isset($datos['pacienteId'])){
return $_respuestas->error_400();
}else{
$this->pacienteid = $datos['pacienteId'];
if(isset($datos['nombre'])) { $this->nombre = $datos['nombre']; }
if(isset($datos['dni'])) { $this->dni = $datos['dni']; }
if(isset($datos['correo'])) { $this->correo = $datos['correo']; }
if(isset($datos['telefono'])) { $this->telefono = $datos['telefono']; }
if(isset($datos['direccion'])) { $this->direccion = $datos['direccion']; }
if(isset($datos['codigoPostal'])) { $this->codigoPostal = $datos['codigoPostal']; }
if(isset($datos['genero'])) { $this->genero = $datos['genero']; }
if(isset($datos['fechaNacimiento'])) { $this->fechaNacimiento = $datos['fechaNacimiento']; }
$resp = $this->modificarPaciente();
if($resp){
$respuesta = $_respuestas->response;
$respuesta["result"] = array(
"pacienteId" => $this->pacienteid
);
return $respuesta;
}else{
return $_respuestas->error_500();
}
}
}else{
return $_respuestas->error_401("El Token que envio es invalido o ha caducado");
}
}
}
private function modificarPaciente(){
$query = "UPDATE " . $this->table . " SET Nombre ='" . $this->nombre . "',Direccion = '" . $this->direccion . "', DNI = '" . $this->dni . "', CodigoPostal = '" .
$this->codigoPostal . "', Telefono = '" . $this->telefono . "', Genero = '" . $this->genero . "', FechaNacimiento = '" . $this->fechaNacimiento . "', Correo = '" . $this->correo .
"' WHERE PacienteId = '" . $this->pacienteid . "'";
$resp = parent::nonQuery($query);
if($resp >= 1){
return $resp;
}else{
return 0;
}
}
public function delete($json){
$_respuestas = new respuestas;
$datos = json_decode($json,true);
if(!isset($datos['token'])){
return $_respuestas->error_401();
}else{
$this->token = $datos['token'];
$arrayToken = $this->buscarToken();
if($arrayToken){
if(!isset($datos['pacienteId'])){
return $_respuestas->error_400();
}else{
$this->pacienteid = $datos['pacienteId'];
$resp = $this->eliminarPaciente();
if($resp){
$respuesta = $_respuestas->response;
$respuesta["result"] = array(
"pacienteId" => $this->pacienteid
);
return $respuesta;
}else{
return $_respuestas->error_500();
}
}
}else{
return $_respuestas->error_401("El Token que envio es invalido o ha caducado");
}
}
}
private function eliminarPaciente(){
$query = "DELETE FROM " . $this->table . " WHERE PacienteId= '" . $this->pacienteid . "'";
$resp = parent::nonQuery($query);
if($resp >= 1 ){
return $resp;
}else{
return 0;
}
}
private function buscarToken(){
$query = "SELECT TokenId,UsuarioId,Estado from usuarios_token WHERE Token = '" . $this->token . "' AND Estado = 'Activo'";
$resp = parent::obtenerDatos($query);
if($resp){
return $resp;
}else{
return 0;
}
}
private function actualizarToken($tokenid){
$date = date("Y-m-d H:i");
$query = "UPDATE usuarios_token SET Fecha = '$date' WHERE TokenId = '$tokenid' ";
$resp = parent::nonQuery($query);
if($resp >= 1){
return $resp;
}else{
return 0;
}
}
}
?>

View File

@ -0,0 +1,63 @@
<?php
class respuestas{
public $response = [
'status' => "ok",
"result" => array()
];
public function error_405(){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "405",
"error_msg" => "Metodo no permitido"
);
return $this->response;
}
public function error_200($valor = "Datos incorrectos"){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "200",
"error_msg" => $valor
);
return $this->response;
}
public function error_400(){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "400",
"error_msg" => "Datos enviados incompletos o con formato incorrecto"
);
return $this->response;
}
public function error_500($valor = "Error interno del servidor"){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "500",
"error_msg" => $valor
);
return $this->response;
}
public function error_401($valor = "No autorizado"){
$this->response['status'] = "error";
$this->response['result'] = array(
"error_id" => "401",
"error_msg" => $valor
);
return $this->response;
}
}
?>

View File

@ -0,0 +1,42 @@
<?php
require_once 'conexion/conexion.php';
class token extends conexion{
function actualizarTokens($fecha){
$query = "update usuarios_token set Estado = 'Inactivo' WHERE Fecha < '$fecha'";
$verifica = parent::nonQuery($query);
if($verifica){
$this->escribirEntrada($verifica);
return $verifica;
}else{
return 0;
}
}
function crearTxt($direccion){
$archivo = fopen($direccion, 'w') or die ("error al crear el archivo de registros");
$texto = "------------------------------------ Registros del CRON JOB ------------------------------------ \n";
fwrite($archivo,$texto) or die ("no pudimos escribir el registro");
fclose($archivo);
}
function escribirEntrada($registros){
$direccion = "../cron/registros/registros.txt";
if(!file_exists($direccion)){
$this->crearTxt($direccion);
}
/* crear una entrada nueva */
$this->escribirTxt($direccion, $registros);
}
function escribirTxt($direccion, $registros){
$date = date("Y-m-d H:i");
$archivo = fopen($direccion, 'a') or die ("error al abrir el archivo de registros");
$texto = "Se modificaron $registros registro(s) el dia [$date] \n";
fwrite($archivo,$texto) or die ("no pudimos escribir el registro");
fclose($archivo);
}
}
?>

View File

@ -0,0 +1,6 @@
<?php
require_once '../clases/token.class.php';
$_token = new token;
$fecha = date('Y-m-d H:i');
echo $_token->actualizarTokens($fecha);
?>

View File

@ -0,0 +1,4 @@
------------------------------------ Registros del CRON JOB ------------------------------------
Se modificaron -1 el dia [2020-10-18 16:36]
Se modificaron 3 el dia [2020-10-18 16:39]
Se modificaron 2 el dia [2020-10-18 16:41]

View File

@ -0,0 +1,181 @@
-- phpMyAdmin SQL Dump
-- version 5.0.1
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 07-08-2020 a las 15:36:00
-- Versión del servidor: 10.4.11-MariaDB
-- Versión de PHP: 7.2.28
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Base de datos: `apirest`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `citas`
--
CREATE TABLE `citas` (
`CitaId` int(11) NOT NULL,
`PacienteId` varchar(45) DEFAULT NULL,
`Fecha` varchar(45) DEFAULT NULL,
`HoraInicio` varchar(45) DEFAULT NULL,
`HoraFIn` varchar(45) DEFAULT NULL,
`Estado` varchar(45) DEFAULT NULL,
`Motivo` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Volcado de datos para la tabla `citas`
--
INSERT INTO `citas` (`CitaId`, `PacienteId`, `Fecha`, `HoraInicio`, `HoraFIn`, `Estado`, `Motivo`) VALUES
(1, '1', '2020-06-09', '08:30:00', '09:00:00', 'Confirmada', 'El paciente presenta un leve dolor de espalda'),
(2, '2', '2020-06-10', '08:30:00', '09:00:00', 'Confirmada', 'Dolor en la zona lumbar '),
(3, '3', '2020-06-18', '09:00:00', '09:30:00', 'Confirmada', 'Dolor en el cuello');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `pacientes`
--
CREATE TABLE `pacientes` (
`PacienteId` int(11) NOT NULL,
`DNI` varchar(45) DEFAULT NULL,
`Nombre` varchar(150) DEFAULT NULL,
`Direccion` varchar(45) DEFAULT NULL,
`CodigoPostal` varchar(45) DEFAULT NULL,
`Telefono` varchar(45) DEFAULT NULL,
`Genero` varchar(45) DEFAULT NULL,
`FechaNacimiento` date DEFAULT NULL,
`Correo` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Volcado de datos para la tabla `pacientes`
--
INSERT INTO `pacientes` (`PacienteId`, `DNI`, `Nombre`, `Direccion`, `CodigoPostal`, `Telefono`, `Genero`, `FechaNacimiento`, `Correo`) VALUES
(1, 'A000000001', 'Juan Carlos Medina', 'Calle de pruebas 1', '20001', '633281515', 'M', '1989-03-02', 'Paciente1@gmail.com'),
(2, 'B000000002', 'Daniel Rios', 'Calle de pruebas 2', '20002', '633281512', 'M', '1990-05-11', 'Paciente2@gmail.com'),
(3, 'C000000003', 'Marcela Dubon', 'Calle de pruebas 3', '20003', '633281511', 'F', '2000-07-22', 'Paciente3@gmail.com'),
(4, 'D000000004', 'Maria Mendez', 'Calle de pruebas 4', '20004', '633281516', 'F', '1980-01-01', 'Paciente4@gmail.com'),
(5, 'E000000005', 'Zamuel Valladares', 'Calle de pruebas 5', '20006', '633281519', 'M', '1985-12-15', 'Paciente5@gmail.com'),
(6, 'F000000006', 'Angel Rios', 'Calle de pruebas 6', '20005', '633281510', 'M', '1988-11-30', 'Paciente6@gmail.com');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `usuarios`
--
CREATE TABLE `usuarios` (
`UsuarioId` int(11) NOT NULL,
`Usuario` varchar(45) DEFAULT NULL,
`Password` varchar(45) DEFAULT NULL,
`Estado` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Volcado de datos para la tabla `usuarios`
--
INSERT INTO `usuarios` (`UsuarioId`, `Usuario`, `Password`, `Estado`) VALUES
(1, 'usuario1@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Activo'),
(2, 'usuario2@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Activo'),
(3, 'usuario3@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Activo'),
(4, 'usuario4@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Activo'),
(5, 'usuario5@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Activo'),
(6, 'usuario6@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Activo'),
(7, 'usuario7@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Inactivo'),
(8, 'usuario8@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Inactivo'),
(9, 'usuario9@gmail.com', 'e10adc3949ba59abbe56e057f20f883e', 'Inactivo');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `usuarios_token`
--
CREATE TABLE `usuarios_token` (
`TokenId` int(11) NOT NULL,
`UsuarioId` varchar(45) DEFAULT NULL,
`Token` varchar(45) DEFAULT NULL,
`Estado` varchar(45) CHARACTER SET armscii8 DEFAULT NULL,
`Fecha` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Índices para tablas volcadas
--
--
-- Indices de la tabla `citas`
--
ALTER TABLE `citas`
ADD PRIMARY KEY (`CitaId`);
--
-- Indices de la tabla `pacientes`
--
ALTER TABLE `pacientes`
ADD PRIMARY KEY (`PacienteId`);
--
-- Indices de la tabla `usuarios`
--
ALTER TABLE `usuarios`
ADD PRIMARY KEY (`UsuarioId`);
--
-- Indices de la tabla `usuarios_token`
--
ALTER TABLE `usuarios_token`
ADD PRIMARY KEY (`TokenId`);
--
-- AUTO_INCREMENT de las tablas volcadas
--
--
-- AUTO_INCREMENT de la tabla `citas`
--
ALTER TABLE `citas`
MODIFY `CitaId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT de la tabla `pacientes`
--
ALTER TABLE `pacientes`
MODIFY `PacienteId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT de la tabla `usuarios`
--
ALTER TABLE `usuarios`
MODIFY `UsuarioId` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
--
-- AUTO_INCREMENT de la tabla `usuarios_token`
--
ALTER TABLE `usuarios_token`
MODIFY `TokenId` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

105
original/index.php Normal file
View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API - Prubebas</title>
<link rel="stylesheet" href="assets/estilo.css" type="text/css">
</head>
<body>
<div class="container">
<h1>Api de pruebas</h1>
<div class="divbody">
<h3>Auth - login</h3>
<code>
POST /auth
<br>
{
<br>
"usuario" :"", -> REQUERIDO
<br>
"password": "" -> REQUERIDO
<br>
}
</code>
</div>
<div class="divbody">
<h3>Pacientes</h3>
<code>
GET /pacientes?page=$numeroPagina
<br>
GET /pacientes?id=$idPaciente
</code>
<code>
POST /pacientes
<br>
{
<br>
"nombre" : "", -> REQUERIDO
<br>
"dni" : "", -> REQUERIDO
<br>
"correo":"", -> REQUERIDO
<br>
"codigoPostal" :"",
<br>
"genero" : "",
<br>
"telefono" : "",
<br>
"fechaNacimiento" : "",
<br>
"token" : "" -> REQUERIDO
<br>
}
</code>
<code>
PUT /pacientes
<br>
{
<br>
"nombre" : "",
<br>
"dni" : "",
<br>
"correo":"",
<br>
"codigoPostal" :"",
<br>
"genero" : "",
<br>
"telefono" : "",
<br>
"fechaNacimiento" : "",
<br>
"token" : "" , -> REQUERIDO
<br>
"pacienteId" : "" -> REQUERIDO
<br>
}
</code>
<code>
DELETE /pacientes
<br>
{
<br>
"token" : "", -> REQUERIDO
<br>
"pacienteId" : "" -> REQUERIDO
<br>
}
</code>
</div>
</div>
</body>
</html>

90
original/pacientes.php Normal file
View File

@ -0,0 +1,90 @@
<?php
require_once 'clases/respuestas.class.php';
require_once 'clases/pacientes.class.php';
$_respuestas = new respuestas;
$_pacientes = new pacientes;
if($_SERVER['REQUEST_METHOD'] == "GET"){
if(isset($_GET["page"])){
$pagina = $_GET["page"];
$listaPacientes = $_pacientes->listaPacientes($pagina);
header("Content-Type: application/json");
echo json_encode($listaPacientes);
http_response_code(200);
}else if(isset($_GET['id'])){
$pacienteid = $_GET['id'];
$datosPaciente = $_pacientes->obtenerPaciente($pacienteid);
header("Content-Type: application/json");
echo json_encode($datosPaciente);
http_response_code(200);
}
}else if($_SERVER['REQUEST_METHOD'] == "POST"){
//recibimos los datos enviados
$postBody = file_get_contents("php://input");
//enviamos los datos al manejador
$datosArray = $_pacientes->post($postBody);
//delvovemos una respuesta
header('Content-Type: application/json');
if(isset($datosArray["result"]["error_id"])){
$responseCode = $datosArray["result"]["error_id"];
http_response_code($responseCode);
}else{
http_response_code(200);
}
echo json_encode($datosArray);
}else if($_SERVER['REQUEST_METHOD'] == "PUT"){
//recibimos los datos enviados
$postBody = file_get_contents("php://input");
//enviamos datos al manejador
$datosArray = $_pacientes->put($postBody);
//delvovemos una respuesta
header('Content-Type: application/json');
if(isset($datosArray["result"]["error_id"])){
$responseCode = $datosArray["result"]["error_id"];
http_response_code($responseCode);
}else{
http_response_code(200);
}
echo json_encode($datosArray);
}else if($_SERVER['REQUEST_METHOD'] == "DELETE"){
$headers = getallheaders();
if(isset($headers["token"]) && isset($headers["pacienteId"])){
//recibimos los datos enviados por el header
$send = [
"token" => $headers["token"],
"pacienteId" =>$headers["pacienteId"]
];
$postBody = json_encode($send);
}else{
//recibimos los datos enviados
$postBody = file_get_contents("php://input");
}
//enviamos datos al manejador
$datosArray = $_pacientes->delete($postBody);
//delvovemos una respuesta
header('Content-Type: application/json');
if(isset($datosArray["result"]["error_id"])){
$responseCode = $datosArray["result"]["error_id"];
http_response_code($responseCode);
}else{
http_response_code(200);
}
echo json_encode($datosArray);
}else{
header('Content-Type: application/json');
$datosArray = $_respuestas->error_405();
echo json_encode($datosArray);
}
?>