<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    
    $userid = $_POST["userid"];
    $correo = $_POST["correo"];
    $nombre = $_POST["nombre"];
    $organizacion = $_POST["organizacion"];
    $puesto = $_POST["puesto"];
    $urbanizacion = $_POST["urbanizacion"];
    $calle = $_POST["calle"];
    $pueblo = $_POST["pueblo"];
    $cpostal = $_POST["cpostal"];
    $telefono = $_POST["telefono"];
    $membresia = $_POST["membresia"];
    $vigencia = $_POST["vigencia"];
    $horas = $_POST["horasTrabajadas"];

    # Checks if necessary data is empty
    if(strlen($correo) == 0 or strlen($nombre) == 0 or strlen($urbanizacion) == 0 or strlen($calle) == 0 or 
        strlen($pueblo) == 0 or strlen($cpostal) == 0 or strlen($telefono) == 0){

        http_response_code(400);
        echo json_encode(array("error" => "Informacion necesaria vacia."));

        exit();
    }

    # Ignores not properly formatted emails
    if (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
        http_response_code(400);
        echo json_encode(array("error" => "Email no valido."));

        exit();
    }

    include 'db.php';

    # Starts a transaction
    $conn->autocommit(FALSE);
    $conn->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);

    $sql = "UPDATE Login SET correo = \"%s\" WHERE userid = %d;";
    $sql = sprintf($sql, $correo, $userid);

    if($conn->query($sql) === FALSE){
        http_response_code(500);
        echo json_encode(array("error" => "Error actualizando el correo (".$conn->error.")"));

        $conn->rollback();
        $conn->close();;

        exit();
    }

    if(strlen($vigencia) == 0){
        $sql = "UPDATE Miembro SET nombre = \"%s\", organizacion = \"%s\", puesto = \"%s\", urbanizacion = \"%s\", 
        calle = \"%s\", pueblo = \"%s\", cpostal = \"%s\", telefono = \"%s\", membresia = \"%s\", vigencia = NULL, 
        horasTrabajadas = %d WHERE userid = %d;";

        $sql = sprintf($sql, $nombre, $organizacion, $puesto, $urbanizacion, $calle, $pueblo, $cpostal, $telefono, $membresia, $horas, $userid);
    } else {
        $sql = "UPDATE Miembro SET nombre = \"%s\", organizacion = \"%s\", puesto = \"%s\", urbanizacion = \"%s\", 
        calle = \"%s\", pueblo = \"%s\", cpostal = \"%s\", telefono = \"%s\", membresia = \"%s\", vigencia = \"%s\", 
        horasTrabajadas = %d WHERE userid = %d;";

        $sql = sprintf($sql, $nombre, $organizacion, $puesto, $urbanizacion, $calle, $pueblo, $cpostal, $telefono, $membresia, $vigencia, $horas, $userid);
    }
    
    if($conn->query($sql) === FALSE){
        http_response_code(500);
        echo json_encode(array("error" => "Error actualizando informacion del miembro (".$conn->error.")"));

        $conn->rollback();
        $conn->close();
        
        exit();
    }

    # Commits changes
    $conn->commit();
    $conn->close();

    header("200 OK", true, 200);
    exit(); 

} else {
    header($_SERVER["SERVER_PROTOCOL"]." 405 Method Not Allowed", true, 405);
    exit();
}
?>