From 3e4ed97de18251a2bcf3a8c56fe1e86ccba2a56f Mon Sep 17 00:00:00 2001
From: coolneng <akasroua@gmail.com>
Date: Sun, 14 Jun 2020 03:12:32 +0200
Subject: [PATCH] Add database queries

---
 shell.nix        |  5 +--
 src/database.php | 92 +++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 90 insertions(+), 7 deletions(-)

diff --git a/shell.nix b/shell.nix
index a9f1c48..c327d8e 100644
--- a/shell.nix
+++ b/shell.nix
@@ -3,8 +3,7 @@
 with pkgs;
 
 mkShell {
-  buildInputs =
-    [ php74 php74Extensions.pdo_mysql php74Packages.composer mysql57 ];
+  buildInputs = [ php74 php74Extensions.pdo_mysql mysql57 ];
 
   shellHook = ''
     pkill mysql
@@ -15,5 +14,7 @@ mkShell {
     sleep 1
 
     mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql
+
+    alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root'
   '';
 }
diff --git a/src/database.php b/src/database.php
index aa0b912..6aa6240 100644
--- a/src/database.php
+++ b/src/database.php
@@ -1,13 +1,95 @@
 <?php
 
-function connectDatabase($user, $pass, $db) {
+function connectDatabase(str $user, str $pass, str $db) {
     $unix_socket = '.mysql/mysql.sock';
     $charset = 'utf8mb4';
     $dsn = "mysql:unix_socket=$unix_socket;dbname=$db;charset=$charset";
-    $db_connection = new PDO($dsn, $user, $pass);
-    return $db_connection;
+    $pdo = new PDO($dsn, $user, $pass);
+    return $pdo;
 }
 
-function closeDatabase($db_connection) {
-    $db_connection = null;
+function closeDatabase($pdo) {
+    $pdo = null;
 }
+
+function displayResults($query) {
+    while($row = $query->fetch()){
+        echo $row . "\n";
+    }
+}
+
+function listRows($pdo, $table) {
+    $query = "SELECT * FROM ?";
+    $result = $pdo->prepare($query)->execute([$table]);
+    displayResults($query);
+}
+
+function findRows($pdo, str $table, str $attr, str $param) {
+    $query = "SELECT * FROM ? WHERE ? = ?";
+    $result = $pdo->prepare($query)->execute([$table, $attr, $param]);
+    displayResults($query);
+}
+
+function createPatient($pdo, $data) {
+    $query = "INSERT INTO paciente (nombre, apellido, fecha_de_nacimiento, documento_identificativo, tipo_documento, direccion, localidad, provincia, pais) VALUES (? ? ? ? ? ? ? ? ?)";
+    $pdo->prepare($query)->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"], $data["documento_identificativo"], $data["tipo_documento"], $data["direccion"], $data["localidad"], $data["provincia"], $data["pais"]]);
+    return "Paciente creado con éxito";
+}
+
+function editPatient($pdo, str $attr, str $param, str $id) {
+    $query = "UPDATE paciente SET ? = ? WHERE documento_identificativo = ?";
+    $pdo->prepare($query)->execute([$attr, $param, $id]);
+    return "Paciente modificado con éxito";
+}
+
+function deletePatient($pdo, str $id) {
+    $check = "SELECT * FROM informes where paciente = ?";
+    $result = $pdo->prepare($check)->execute([$id]);
+    if($result->columnCount() == 0){
+        $statement = "DELETE FROM paciente where document_identificado = ?";
+        $pdo->prepare($statement)->execute([$id]);
+        return "El paciente se ha eliminado correctamente";
+    }
+    return "No se puede eliminar el paciente dado que tiene citas";
+}
+
+function createHoliday($pdo, $data) {
+    $query = "INSERT INTO festivo (fecha_festivo, tipo_festivo, medico) VALUES (? ? ?)";
+    $pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"]]);
+    return "Festivo creado con éxito";
+}
+
+function editHoliday($pdo, $attr, $param, $id) {
+    $query = "UPDATE festivo SET ? = ? WHERE id = ?";
+    $pdo->prepare($query)->execute([$attr, $param, $id]);
+    return "Festivo modificado con éxito";
+}
+
+function deleteHoliday($pdo, str $id) {
+    $statement = "DELETE FROM festivo where id = ?";
+    $pdo->prepare($statement)->execute([$id]);
+    return "Festivo borrado con éxito";
+}
+
+function createUser($pdo, $data) {
+    $query = "INSERT INTO usuario (nombre, usuario, contraseña, rol, correo) VALUES (? ? ? ? ?)";
+    $pdo->prepare($query)->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data[$correo]]);
+    return "Usuario creado con éxito";
+}
+
+function editUser($pdo, $attr, $param, $id) {
+    $query = "UPDATE usuario SET ? = ? WHERE usuario = ?";
+    $pdo->prepare($query)->execute([$attr, $param, $id]);
+    return "Usuario modificado con éxito";
+}
+
+function deactivateUser($pdo, str $id) {
+    editUser($pdo, "fecha_baja", "CURRENT_TIMESTAMP", $id);
+    return "Usuario desactivado con éxito";
+}
+
+function listAppointments($pdo, str $doctor) {
+    findRows($pdo, "cita", "medico", $doctor);
+}
+
+?>