<?php

$id=0;
$fechahora='';
$operacion='';
$permiso='';
$datos='';
$idResponsable=0;
$responsable='';
$emailresponsable='';
$fotoresponsable='';

$idSupervisor=0;
$supervisor='';
$emailSupervisor='';

$idNotificadoDefault1=30; //deberá definirse con un parámetro
$idNotificadoDefault2=30; //deberá definirse con un parámetro
$idNotificadoDefault3=30; //deberá definirse con un parámetro

$tipo='I';
$concepto='';
$mensaje=''; 
$MAILAUTOALERT01 = 0;
$MAILAUTOALERT02 = 0;

$cnx = new PDO("mysql:host=localhost:3306;dbname=qpsec_SIGPROI","qpsec_usrSIGPROI", "MabeLuis2602");

$res=$cnx->query("SELECT nombre, valor FROM `parametros` WHERE nombre in ('MAILAUTOALERT01','CODUSERNOTILEVEL1', 'CODUSERNOTILEVEL2', 'CODUSERNOTILEVEL3','MAILAUTOALERT02')");

foreach ($res as $row){
    switch($row['nombre']){
        case 'MAILAUTOALERT01'  : $MAILAUTOALERT01 = $row['valor']; break;
        case 'MAILAUTOALERT02'  : $MAILAUTOALERT02 = $row['valor']; break;
        case 'CODUSERNOTILEVEL1': $idNotificadoDefault1 = $row['valor']; break;
        case 'CODUSERNOTILEVEL2'  : $idNotificadoDefault2 = $row['valor']; break;
        case 'CODUSERNOTILEVEL3'  : $idNotificadoDefault3 = $row['valor']; break;
    }
}

$res=$cnx->query("SELECT U.id, NOW() as fecha, 'CUENTA DE USUARIO' as operacion, 'CONFIRMAR CORREO' as permiso, 'Por favor confirme su correo en el siguiente link:' as datos, U.id as idResponsable, U.name as nameResponsable, U.email as mailResponsable, U.foto as fotoResponsable, 0 as notificado, U.idSupervisor, S.name as nameSupervisor, S.email as mailSupervisor FROM users U LEFT OUTER JOIN users S ON S.id = U.idSupervisor WHERE U.estado = 1 and U.etapaCuenta = 1");

foreach ($res as $row){
    $id=$row['id'];
    $fechahora=$row['fecha'];
    $operacion=$row['operacion'];
    $permiso=$row['permiso'];
    $datos=$row['datos'];
    $idResponsable=$row['idResponsable'];
    $responsable=$row['nameResponsable'];
    $emailresponsable=$row['mailResponsable'];
    $fotoresponsable=$row['fotoResponsable'];

    $idSupervisor=$row['idSupervisor'];
    if(!$idSupervisor)
        $idSupervisor = $idResponsable;
        
    $supervisor=$row['nameSupervisor'];
    $emailSupervisor=$row['mailSupervisor'];
    
    $tipo = 'I';
    $concepto = $permiso.' :: '.$operacion;
    $mensaje='Su cuenta ha sido creada en el sistema.<br>Por favor confirme su correo y recibir&aacute; un mail con sus credenciales.<br><table border="1" align="center"><tr bgcolor="#1aa1f0"><th>ID</th><th>Cuenta</th><th>Confirmar</th></tr><tr bgcolor="#ddd"><td>'.$fechahora.'<br><br>['.$id.']</td><td style="text-align:center"><img src="https://sigproi.qps.ec/storage/images/personal/'.$fotoresponsable.'" width="80" height="80"><br>'.$responsable.'<br>'.$emailresponsable.'</td><td align="center">'.$datos.'<br><a href="www.qps.ec/SIGPROI/bat/confirmaremail.php?id='.$id.'">[confirmar]</a></td></tr></table>';

    
    if($permiso == 'USUARIO'){
        //1. recuperar del campo $datos el valor del ID para tenerlo en variable
        // $idAfectado = {valor recuperado}
    }

    if(substr($operacion,0,5)=='ELIMI'){
        $tipo = 'U';
    }
    
    $flag=0;
    switch($tipo){
        case 'I': $flag=$MAILAUTOALERT01; break;
        case 'U': $flag=$MAILAUTOALERT02; break;
    }
    //echo $flag;
    
    if($flag==1){ //solo si la bandera confirma que se debe enviar el correo
    $sqlInsert="INSERT INTO `notificaciones` (id, idUser, idSupervisor, idAlerta, tipo, Concepto, mensaje, FechaHora, idDestino1, idDestino2, idDestino3, idDestino4, enviaMail, enviadoMail, enviaSMS, enviadoSMS) values(NULL, $idResponsable, $idSupervisor, 0, '$tipo', '$concepto', '$mensaje', '$fechahora', $idResponsable, $idNotificadoDefault1, $idNotificadoDefault2, $idNotificadoDefault3, 1, 0, 0, 0)";
    
    $cnx->prepare($sqlInsert)->execute();    
    //echo $sqlInsert;

    $sql= "Update `users` set etapaCuenta=2 where id=$id";
    $cnx->prepare($sql)->execute();
    }

}

//Generación de notificaciones para los que ya confirmaron el correo.  Se envía las credenciales
$res=$cnx->query("SELECT U.id, NOW() as fecha, 'NUEVA CUENTA DE USUARIO' as operacion, 'SUS CREDENCIALES' as permiso, 'Estas son sus credenciales:' as datos, U.id as idResponsable, U.name as nameResponsable, U.email as mailResponsable, U.foto as fotoResponsable, U.otd, 0 as notificado, U.idSupervisor, S.name as nameSupervisor, S.email as mailSupervisor FROM users U LEFT OUTER JOIN users S ON S.id = U.idSupervisor WHERE U.estado = 1 and U.etapaCuenta = 3");

foreach ($res as $row){
    $id=$row['id'];
    $fechahora=$row['fecha'];
    $operacion=$row['operacion'];
    $permiso=$row['permiso'];
    $datos=$row['datos'];
    $idResponsable=$row['idResponsable'];
    $responsable=$row['nameResponsable'];
    $emailresponsable=$row['mailResponsable'];
    $fotoresponsable=$row['fotoResponsable'];
    $clave=$row['otd'];

    $idSupervisor=$row['idSupervisor'];
    if(!$idSupervisor)
        $idSupervisor = $idResponsable;
        
    $supervisor=$row['nameSupervisor'];
    $emailSupervisor=$row['mailSupervisor'];
    
    $tipo = 'I';
    $concepto = $permiso.' :: '.$operacion;
    $mensaje='credenciales para acceso al sistema:<br><table border="1" align="center"><tr><th>ID</th><th>Account</th><th>Credentials</th></tr><tr><td>'.$fechahora.'<br><br>['.$id.']</td><td style="text-align:center"><img src="https://sigproi.qps.ec/storage/images/personal/'.$fotoresponsable.'" width="80" height="80"><br>'.$responsable.'<br>'.$emailresponsable.'</td><td align="center">'.$datos.'<br><b>USER:</b> '.$emailresponsable.'<br><b>PASSWORD:</b> '.$clave.'</td></tr></table>';
    
    if($permiso == 'USUARIO'){
        //1. recuperar del campo $datos el valor del ID para tenerlo en variable
        // $idAfectado = {valor recuperado}
    }

    if(substr($operacion,0,5)=='ELIMI'){
        $tipo = 'U';
    }
    
    $flag=0;
    switch($tipo){
        case 'I': $flag=$MAILAUTOALERT01; break;
        case 'U': $flag=$MAILAUTOALERT02; break;
    }
    //echo $flag;
    
    if($flag==1){ //solo si la bandera confirma que se debe enviar el correo
        //$sqlInsert="INSERT INTO `notificaciones` (id, idUser, idSupervisor, idAlerta, tipo, Concepto, mensaje, FechaHora, idDestino1, idDestino2, idDestino3, idDestino4, enviaMail, enviadoMail, enviaSMS, enviadoSMS) values(NULL, $idResponsable, $idSupervisor, 0, '$tipo', '$concepto', '$mensaje', '$fechahora', $idResponsable, $idNotificadoDefault1, $idNotificadoDefault2, $idNotificadoDefault3, 1, 0, 0, 0)";
        //LEQF 2021JUN21: para recuperar posteriormente el id del usuario, lo enviamos en el campo idSupervisor
        $sqlInsert="INSERT INTO `notificaciones` (id, idUser, idSupervisor, idAlerta, tipo, Concepto, mensaje, FechaHora, idDestino1, idDestino2, idDestino3, idDestino4, enviaMail, enviadoMail, enviaSMS, enviadoSMS) values(NULL, $idResponsable, $id, 0, '$tipo', '$concepto', '$mensaje', '$fechahora', $idResponsable, $idNotificadoDefault1, $idNotificadoDefault2, $idNotificadoDefault3, 1, 0, 0, 0)";
        
        $cnx->prepare($sqlInsert)->execute();    
        //echo $sqlInsert;
    
        $sql= "Update `users` set etapaCuenta=4 where id=$id";
        $cnx->prepare($sql)->execute();
        
        //registrar en el log el envío del correo.
        $datos = 'Las credenciales se enviaron al correo: '.$emailresponsable;
        $sqlInsert="INSERT INTO logs_sistema (id, fecha, user_id, operacion, permiso, datos, notificado) values (NULL, '$fechahora', $idResponsable, 'USUARIO', 'CREDENCIALES', '$datos', 1)";
        //echo $sqlInsert;
        $cnx->prepare($sqlInsert)->execute();

    }

}
?>