participantes_asigna.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /*
  3. * Asigna pareja a participantes activos
  4. */
  5. require_once("../../include/constantes.php");
  6. require_once("../../include/bd_pdo.php");
  7. session_start();
  8. if(!isset($_SESSION["n_usuario_id"])){
  9. session_destroy();
  10. $pag = "../salir.php?expired=1";
  11. header("Location: ".$pag);
  12. exit();
  13. }
  14. $session_life = 1*60*60;//convertido a segundos
  15. if (isset($_SESSION["n_timeout"])) {
  16. // calculate the session's "time to live"
  17. $sessionTTL = time() - $_SESSION["n_timeout"];
  18. if ($sessionTTL > $session_life) {
  19. $_SESSION = array();
  20. session_destroy();
  21. $pag = $_SERVER['SERVER_NAME']."/navidad/salir.php?expired=1";
  22. header("Location: http://".$pag);
  23. exit();
  24. }
  25. }else{
  26. $_SESSION = array();
  27. session_destroy();
  28. $pag = $_SERVER['SERVER_NAME']."/navidad/salir.php?expired=1";
  29. header("Location: http://".$pag);
  30. exit();
  31. }
  32. $_SESSION["n_timeout"] = time();
  33. if(!isset($_SESSION["n_sgi_administrador"]) || !$_SESSION["n_sgi_administrador"]){
  34. header("Location: ../main.php?error=0");
  35. exit();
  36. }
  37. $pag = "../participantes.php";
  38. try {
  39. $pdo->beginTransaction();
  40. //obtiene navidad
  41. $stmt = $pdo->prepare('Select * from fs_navidad()');
  42. if(!$stmt->execute()){
  43. header("Location: ../index.php?error=5");
  44. exit();
  45. }
  46. $navidad_rs = $stmt->fetch();//$navidad_rs["Navidad_activa"] || $navidad_rs["Navidad_id"]
  47. $stmt->closeCursor();
  48. //obtiene actuales
  49. $usrArr = array();
  50. $usrAsignaArr = array();
  51. $stmt = $pdo->prepare('Select * from fs_navidadusuario(:nav, NULL, true)');
  52. $stmt->bindParam(":nav", $navidad_rs["Navidad_id"]);
  53. if($stmt->execute()){
  54. $usr_rs = $stmt->fetchAll();
  55. foreach($usr_rs as $usr){
  56. $usrArr[] = array("de"=>$usr["NavidadUsuario_id"], "para" =>"", "rand"=>rand());
  57. }
  58. }else{
  59. $pdo->rollback();
  60. header("Location: ".$pag."?error=0");
  61. exit();
  62. }
  63. $stmt->closeCursor();
  64. //Revuelve
  65. usort($usrArr, function ($item1, $item2) {
  66. return $item2['rand'] <=> $item1['rand'];
  67. });
  68. //Organiza intercambio
  69. for($i=0; $i<count($usrArr); $i++ ){
  70. $usrArr[$i]["para"] = $usrArr[ ($i+1)%count($usrArr) ]["de"];
  71. }
  72. //Borrar todo
  73. $stmt = $pdo->prepare('Select * from fd_navidadtarjeta(:nav)');
  74. $stmt->bindParam(":nav", $navidad_rs["Navidad_id"]);
  75. if($stmt->execute()){
  76. $stmt->closeCursor();
  77. $stmt = $pdo->prepare('Select * from fi_navidadtarjeta(:de, :para)');
  78. foreach($usrArr as $usr){
  79. //Inserta intercambios
  80. $stmt->bindParam(":de", $usr["de"]);
  81. $stmt->bindParam(":para", $usr["para"]);
  82. if(!$stmt->execute()){
  83. $pdo->rollback();
  84. //print_r($stmt->errorInfo());
  85. header("Location: ".$pag."?error=0");
  86. exit();
  87. }
  88. }
  89. }else{
  90. $pdo->rollback();
  91. header("Location: ".$pag."?error=0");
  92. exit();
  93. }
  94. $stmt->closeCursor();
  95. $pdo->commit();
  96. header("Location: ".$pag."?ok=0");
  97. } catch(PDOException $e) {
  98. $pdo->rollBack();
  99. header("Location:".$pag."?error=0");
  100. //print_r($e);
  101. }
  102. ?>