<?php
session_start();

require_once '../include/bd_pdo.php';//die on error
require_once '../classes/SGI.php';
require_once '../include/nusoap/nusoap.php';

$_SESSION = array();

$pag = explode('?', $_SERVER["HTTP_REFERER"]);
$pag = explode('/', $pag[0]);
$pag = $pag[count($pag)-1];

if(!isset($_POST['username']) || !isset($_POST['passwd'])){
    header('Location: ../' . $pag . '?error=0');
    exit;
} else {
    $user = trim(filter_input(INPUT_POST, 'username'));
    $pass = trim(filter_input(INPUT_POST, 'passwd'));    
    $client = new nusoap_client('http://200.13.89.8/webservice/valida_cidit.php?wsdl', 'wsdl');//dirección del webservice
        if ($client->getError()) {
            header('Location: ../' . $pag . '?error=1');
            exit;
        } else {
            $result = $client->call('valida_user', array($user, $pass));//función en el webservice. user necesita ad, do, al
            if (!$result){
                header('Location: ../' . $pag . '?error=1');
                exit;
            } else {
                if (boolval($result['error'])){
                    header('Location: ../' . $pag . '?error=2');
                    exit;
                } else {
                    if ($pag == 'index_bypass.php'){
                        $esSuperAdmin = SGI::claveEsSuperAdmin($pdo, $result['usuario_clave']);
                        if ($esSuperAdmin){
                            if ($_POST['alumno'] != 0){
                                $userId = intval(filter_var($_POST['alumno'], FILTER_SANITIZE_NUMBER_INT));
                                $_SESSION['es_alumno'] = true;
                                $_SESSION['RolUsuario_id'] = SGI::getRol($pdo, 'ALUMNO');
                                if (!empty($_SESSION['RolUsuario_id']))
                                    $_SESSION['RolUsuario_desc'] = 'ALUMNO';
                            } else {
                                $esAlumno = SGI::buscaAlumno($pdo, 0, intval(filter_var($_POST['clave'], FILTER_SANITIZE_NUMBER_INT)));
                                if (!is_bool($esAlumno)){
                                    $_SESSION['es_alumno'] = false;
                                    if (isset($esAlumno['Usuario_id'])) {
                                        $userId = $esAlumno['Usuario_id'];
                                        $_SESSION['es_alumno'] = true;
                                        $_SESSION['RolUsuario_id'] = SGI::getRol($pdo, 'ALUMNO');
                                    if (!empty($_SESSION['RolUsuario_id']))
                                        $_SESSION['RolUsuario_desc'] = 'ALUMNO';
                                    } else {
                                        header('Location: ../' . $pag . '?error=5');
                                        exit;
                                    }
                                } else {
                                    header('Location: ../' . $pag . '?error=3');
                                    exit;
                                }
                            }
                        } else {
                            header('Location: ../' . $pag . '?error=4');
                            exit;
                        }
                    } else {
                        $esAlumno = SGI::buscaAlumno($pdo, 0, $result['usuario_clave']);
                        if (!is_bool($esAlumno)){
                            $_SESSION['es_alumno'] = false;
                            if (isset($esAlumno['Usuario_id'])) {
                                $userId = $esAlumno['Usuario_id'];
                                $_SESSION['es_alumno'] = true;
                                $_SESSION['RolUsuario_id'] = SGI::getRol($pdo, 'ALUMNO');
                                if (!empty($_SESSION['RolUsuario_id']))
                                    $_SESSION['RolUsuario_desc'] = 'ALUMNO';
                            } else {
                                $_SESSION['es_alumno'] = false;
                                header('Location: ../' . $pag . '?error=5');
                                exit;
                            }
                        } else {
                            $esAdmin = SGI::usuarioTieneAcceso($pdo, $result['usuario_id']);
                            if($esAdmin) {
                                $_SESSION['RolUsuario_id'] = SGI::getRol($pdo, 'ADMINISTRADOR');
                                if (!empty($_SESSION['RolUsuario_id']))
                                    $_SESSION['RolUsuario_desc'] = 'ADMINISTRADOR';
                                $userId = $result['usuario_id'];
                                $_SESSION['es_alumno'] = false;
                            } else {
                                header('Location: ../' . $pag . '?error=3');
                                exit;
                            }
                        }
                    }
                    if (obtenerDatos($pdo, $userId)){
                        if ($_SESSION['es_alumno'])
                            header('Location: ../home.php');
                        else
                            header('Location: ../home_admin.php');
                        exit;
                    } else {
                        header('Location: ../' . $pag . '?error=5');
                        exit;
                    }
                }
            }            
        }
}

function obtenerDatos($pdo, $id_user) {
    $datos = false;
    $_SESSION['timeout'] = time();
    $_SESSION['usuario_id'] = $id_user;
    if ($_SESSION['es_alumno']) {
        $nivel = SGI::nivelAlumno($pdo, $id_user);
        if (count($nivel) > 0){
            $_SESSION['estado'] = $nivel['EstadoAlumno_id'];
            $_SESSION['nivel'] = $nivel['Nivel_id'];
            $periodo = SGI::periodoValido($pdo, $nivel['Nivel_id']);
            if (count($periodo) > 0){
                $_SESSION['periodo'] = $periodo['Periodo_id'];
                $_SESSION['periodo_desc'] = $periodo['Periodo_desc'];
                $datos = true;
            }
        }
    } else
        $datos = true;
    return $datos;
}