PageRenderTime 52ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/usuario/insertar_U.php

https://gitlab.com/slayerfat/sistemaJAG
PHP | 392 lines | 334 code | 7 blank | 51 comment | 24 complexity | 6c8206300e4e00b7d445468aa0dbe25b MD5 | raw file
  1. <?php
  2. /**
  3. * @author [slayerfat] <[slayerfat@gmail.com]>
  4. *
  5. * {@internal [si tienen dudas sobre este archivo
  6. * pregunten, no es tan dificil, solo sigan el flujo del
  7. * mismo, para registrar a un personal que desee ser usuario:
  8. *
  9. * 1. se inserta usuario.
  10. * 2. se inserta persona.
  11. * 3. se inserta personal.
  12. * 4. se inserta direccion.
  13. *
  14. * y listo.
  15. *
  16. * este archivo fue cambiado para ajustarse a la nueva base de datos.]}
  17. *
  18. * @version [1.7]
  19. */
  20. if(!isset($_SESSION)){
  21. session_start();
  22. }
  23. $enlace = $_SERVER['DOCUMENT_ROOT']."/github/sistemaJAG/php/master.php";
  24. require_once($enlace);
  25. // invocamos validarUsuario desde master.php
  26. validarUsuario();
  27. if ( isset($_SESSION['seudonimo']) && isset($_SESSION['clave']) && isset($_POST['cedula']) ):
  28. //la clave tiene que ser exactamente 60 caracteres:
  29. if (strlen($_SESSION['clave']) <> 60) :
  30. header("Location: form_reg_U.php?clave=MalDefinido");
  31. endif;
  32. //datos para saber si es docente o no:
  33. if (isset($_POST['tipo_personal'])) :
  34. if ($_POST['tipo_personal'] === '3' || $_POST['tipo_personal'] === '4') :
  35. $asume = true;
  36. else:
  37. $asume = false;
  38. endif;
  39. else:
  40. header("Location: form_reg_PI.php?tipo_personal=MalDefinido");
  41. endif;
  42. //iniciamos variables:
  43. //para el escape string:
  44. $correcto = true;
  45. $con = conexion();
  46. //validamos datos basicos de usuario:
  47. $validarForma = new ChequearUsuario(
  48. $_SESSION['seudonimo'],
  49. array('completo' => $_SESSION['clave']) );
  50. if ( $validarForma->valido() ) :
  51. //chequeamos que el usuario ingrese como tal a la
  52. //tabla usuarios antes que todo:
  53. //cod_tipo_usr = 5 (por verificar)
  54. $query = "INSERT INTO usuario
  55. VALUES
  56. (null, $validarForma->seudonimo, ".$validarForma->clave['completo'].",
  57. 5, 1, 1, null, 1, current_timestamp );";
  58. $resultado = conexion($query);
  59. //MUCHO CUIDADO CON MYSQLI_INSERT_ID
  60. //ESTA FUNCION TRAE EL ULTIMO ID AUTOINCREMENTADO.
  61. //EN POCAS PALABRAS NO ES BUENA IDEA USARLO.
  62. //
  63. //chequeamos la BD para ver el codigo:
  64. //del usuario:
  65. $query = "SELECT codigo
  66. from usuario
  67. where seudonimo = $validarForma->seudonimo
  68. and clave = ".$validarForma->clave['completo'].";";
  69. $resultado = conexion($query);
  70. $datos = mysqli_fetch_assoc($resultado);
  71. $codigoUsuario = $datos['codigo'];
  72. $codUsrMod = 1; // 1 porque nadie hace referencia a este registro
  73. else :
  74. $codUsrMod = 'invalido';
  75. $correcto = 'usuario';
  76. endif;
  77. if ($correcto === true) :
  78. //iniciamos datos restantes del formulario:
  79. $p_apellido = $_POST['p_apellido'];
  80. $s_apellido = $_POST['s_apellido'];
  81. $p_nombre = $_POST['p_nombre'];
  82. $s_nombre = $_POST['s_nombre'];
  83. $nacionalidad = $_POST['nacionalidad'];
  84. $cedula = $_POST['cedula'];
  85. $celular = $_POST['celular'];
  86. $telefono = $_POST['telefono'];
  87. $telefonoOtro = $_POST['telefono_otro'];
  88. $nivel_instruccion = $_POST['nivel_instruccion'];
  89. $certificado_1 = $_POST['certificado_1'];
  90. $descripcion_1 = $_POST['descripcion_1'];
  91. $certificado_2 = $_POST['certificado_2'];
  92. $descripcion_2 = $_POST['descripcion_2'];
  93. $certificado_3 = $_POST['certificado_3'];
  94. $descripcion_3 = $_POST['descripcion_3'];
  95. $certificado_4 = $_POST['certificado_4'];
  96. $descripcion_4 = $_POST['descripcion_4'];
  97. $fecNac = $_POST['fec_nac'];
  98. $sexo = $_POST['sexo'];
  99. $email = $_POST['email'];
  100. $codTipoUsr = '5'; //tipo: por verificar
  101. $codCargo = $_POST['cod_cargo'];
  102. $tipo_personal = $_POST['tipo_personal'];
  103. //validamos los datos restantes:
  104. $validarPI = new ChequearPI(
  105. $codUsrMod,
  106. $p_apellido,
  107. $s_apellido,
  108. $p_nombre,
  109. $s_nombre,
  110. $nacionalidad,
  111. $cedula,
  112. $celular,
  113. $telefono,
  114. $telefonoOtro,
  115. $nivel_instruccion,
  116. $certificado_1,
  117. $descripcion_1,
  118. $certificado_2,
  119. $descripcion_2,
  120. $certificado_3,
  121. $descripcion_3,
  122. $certificado_4,
  123. $descripcion_4,
  124. $fecNac,
  125. $sexo,
  126. $email,
  127. $codTipoUsr,
  128. $codCargo,
  129. $tipo_personal
  130. );
  131. if ( $validarPI->valido() ) :
  132. //se inserta en persona
  133. //los datos comunes o basicos:
  134. $query = "INSERT INTO persona
  135. values
  136. (null, $validarPI->p_nombre, $validarPI->s_nombre, $validarPI->p_apellido,
  137. $validarPI->s_apellido, $validarPI->nacionalidad, $validarPI->cedula,
  138. $validarPI->fecNac, $validarPI->telefono, $validarPI->telefonoOtro,
  139. $validarPI->sexo, 1, 1, null, 1, current_timestamp);";
  140. $resultado = conexion($query);
  141. //averiguamos codigo (y de una vez el resto de campos):
  142. $query = "SELECT * from persona where cedula = $validarPI->cedula;";
  143. $resultado = conexion($query);
  144. if ($resultado->num_rows == 1) :
  145. $datosDePersona = mysqli_fetch_assoc($resultado);
  146. endif;
  147. //se inserta en personal
  148. //los datos no comunes o especificos:
  149. $query = "INSERT INTO personal
  150. values
  151. (null, $datosDePersona[codigo],
  152. $validarPI->celular,
  153. $validarPI->nivelInstruccion,
  154. $validarPI->certificado_1,
  155. $validarPI->descripcion_1,
  156. $validarPI->certificado_2,
  157. $validarPI->descripcion_2,
  158. $validarPI->certificado_3,
  159. $validarPI->descripcion_3,
  160. $validarPI->certificado_4,
  161. $validarPI->descripcion_4,
  162. $validarPI->email, $codigoUsuario,
  163. $validarPI->codCargo, $validarPI->tipoPersonal,
  164. 1, 1, null, 1, current_timestamp);";
  165. $resultado = conexion($query);
  166. else :
  167. $correcto = 'PI';
  168. endif;
  169. endif;
  170. if ($correcto === true) :
  171. //validamos campos de direccion:
  172. $direccion = new ChequearDireccion(
  173. $codUsrMod,
  174. $datosDePersona['codigo'],
  175. $_POST['cod_parro'],
  176. $_POST['direcc']
  177. );
  178. if ($direccion->valido()) :
  179. //insertamos datos:
  180. $query = "INSERT INTO direccion
  181. VALUES
  182. (null, $direccion->codPersona, $direccion->codParroquia,
  183. $direccion->direccionExacta, 1, 1, null, 1, current_timestamp);";
  184. $resultado = conexion($query);
  185. else :
  186. $correcto = 'direccion';
  187. endif;
  188. endif;
  189. if ($correcto === true) :
  190. //por ultimo:
  191. $query = "SELECT
  192. usuario.codigo as codigo,
  193. usuario.seudonimo as seudonimo,
  194. personal.codigo as cod_docente,
  195. persona.p_nombre as p_nombre,
  196. persona.p_apellido as p_apellido,
  197. usuario.cod_tipo_usr as cod_tipo_usr
  198. from persona
  199. inner join personal
  200. on persona.codigo = personal.cod_persona
  201. inner join usuario
  202. on personal.cod_usr = usuario.codigo
  203. where persona.cedula = $validarPI->cedula;";
  204. $resultado = conexion($query);
  205. //si todo sale bien
  206. //se inicia la sesion de ese usuario:
  207. if ( $resultado->num_rows == 1 ) :
  208. $datos = mysqli_fetch_assoc($resultado);
  209. if ($asume) :
  210. $query = "INSERT INTO asume values
  211. (null, $datos[cod_docente], 34, 0,
  212. 'Autogenerado en registro, por sistema.',
  213. 1, 1, null, 1, current_timestamp);";
  214. $resultado = conexion($query);
  215. endif;
  216. session_unset();
  217. session_destroy();
  218. session_start();
  219. $_SESSION['codUsrMod'] = $datos['codigo'];
  220. $_SESSION['codigo'] = $datos['codigo'];
  221. $_SESSION['seudonimo'] = $datos['seudonimo'];
  222. $_SESSION['p_nombre'] = $datos['p_nombre'];
  223. $_SESSION['p_apellido'] = $datos['p_apellido'];
  224. $_SESSION['cod_tipo_usr'] = $datos['cod_tipo_usr'];
  225. empezarPagina($_SESSION['cod_tipo_usr'], $_SESSION['cod_tipo_usr'], 'sistemaJAG | Registro de usuario');?>
  226. <div id="blancoAjax">
  227. <div class="container">
  228. <div class="row">
  229. <div class="jumbotron">
  230. <h1>Registro completo!</h1>
  231. <h4>
  232. Bienvenido al sistema <?php echo $_SESSION['seudonimo'] ?>!
  233. </h4>
  234. <p class="bg-primary">
  235. Ud. ya es miembro de este sistema, por favor contacte a un administrador para empezar a usar las diferentes actividades.
  236. </p>
  237. <p class="bg-info">
  238. Ud. tendrá acceso limitado al sistemaJAG mientras su cuenta es validada por un administrador.
  239. </p>
  240. <p>
  241. <?php $index = enlaceDinamico(); ?>
  242. <a href="<?php echo $index ?>" class="btn btn-primary btn-lg">Regresar al sistema</a>
  243. </p>
  244. </div>
  245. </div>
  246. </div>
  247. </div>
  248. <?php else:
  249. empezarPagina($_SESSION['cod_tipo_usr'], $_SESSION['cod_tipo_usr'], 'sistemaJAG | Registro de usuario'); ?>
  250. <div id="blancoAjax">
  251. <div class="container">
  252. <div class="row">
  253. <div class="jumbotron">
  254. <h1>Ups!</h1>
  255. <p>
  256. Error en la base de datos!
  257. </p>
  258. <p class="bg-danger">
  259. Algo inesperado ocurrió, contacte a un administrador del sistema.
  260. </p>
  261. <p>
  262. <?php $cerrar = enlaceDinamico('cerrar.php'); ?>
  263. <a class="btn btn-warning btn-lg" href="<?php echo $cerrar ?>">
  264. Intente nuevamente
  265. </a>
  266. </p>
  267. <h3>
  268. <small>
  269. Lamentablemente, es posible que los datos ingresados se perdieron.
  270. </small>
  271. </h3>
  272. <p>
  273. ¿O será que entro en esta pagina erróneamente?
  274. </p>
  275. <p class="bg-warning">
  276. Si este es un problema recurrente, contacte a un administrador del sistema.
  277. </p>
  278. </div>
  279. </div>
  280. </div>
  281. </div>
  282. <?php endif;
  283. endif;
  284. if ($correcto !== true) :
  285. switch ($correcto) :
  286. case 'usuario':
  287. $info = $validarForma->info();
  288. break;
  289. case 'PI':
  290. $info = $validarPI->info();
  291. break;
  292. case 'direccion':
  293. $info = $direccion->info();
  294. break;
  295. default:
  296. $info = 'error desconocido!';
  297. break;
  298. endswitch;
  299. $query = "DELETE from usuario where seudonimo = $validarForma->seudonimo;";
  300. $resultado = conexion($query);
  301. empezarPagina($_SESSION['cod_tipo_usr'], $_SESSION['cod_tipo_usr'], 'sistemaJAG | Registro de usuario');?>
  302. <div id="contenido_insertar_U">
  303. <div id="blancoAjax">
  304. <div class="container">
  305. <div class="row">
  306. <div class="jumbotron">
  307. <h1>Ups!</h1>
  308. <p>
  309. Error en el proceso de registro!
  310. </p>
  311. <h3>
  312. Los datos suministrados al sistema parecen ser inválidos!
  313. </h3>
  314. <div class="bg-danger">
  315. <p>
  316. <em>Específicamente el sistema declara:</em>
  317. </p>
  318. <p>
  319. <strong>
  320. <em>
  321. <?php echo $info ?>
  322. </em>
  323. </strong>
  324. </p>
  325. </div>
  326. <p>
  327. ¿O será que entro en esta pagina erróneamente?
  328. </p>
  329. <p class="bg-warning">
  330. Si este es un problema recurrente, contacte a un administrador del sistema.
  331. </p>
  332. <p>
  333. <?php $cerrar = enlaceDinamico('cerrar.php'); ?>
  334. <a class="btn btn-warning btn-lg" href="<?php echo $cerrar ?>">
  335. Intente nuevamente
  336. </a>
  337. </p>
  338. </div>
  339. </div>
  340. </div>
  341. </div>
  342. </div>
  343. <?php endif;
  344. //cerramos $con:
  345. mysqli_close($con);
  346. //FINALIZAMOS LA PAGINA:
  347. //trae footer.php y cola.php
  348. finalizarPagina($_SESSION['cod_tipo_usr'], $_SESSION['cod_tipo_usr']);?>
  349. <?php else:
  350. empezarPagina($_SESSION['cod_tipo_usr'], $_SESSION['cod_tipo_usr'], 'sistemaJAG | Registro de usuario'); ?>
  351. <div id="blancoAjax">
  352. <div class="container">
  353. <div class="row">
  354. <div class="jumbotron">
  355. <h1>Ups!</h1>
  356. <p>
  357. Error en el proceso de registro!
  358. </p>
  359. <p>
  360. <?php $cerrar = enlaceDinamico('cerrar.php'); ?>
  361. <a class="btn btn-warning btn-lg" href="<?php echo $cerrar ?>">
  362. Intente nuevamente
  363. </a>
  364. </p>
  365. <h3>
  366. <small>
  367. Lamentablemente, es posible que los datos ingresados se perdieron.
  368. </small>
  369. </h3>
  370. <p>
  371. ¿O será que entro en esta pagina erróneamente?
  372. </p>
  373. <p class="bg-warning">
  374. Si este es un problema recurrente, contacte a un administrador del sistema.
  375. </p>
  376. </div>
  377. </div>
  378. </div>
  379. </div>
  380. <?php
  381. //FINALIZAMOS LA PAGINA:
  382. //trae footer.php y cola.php
  383. finalizarPagina($_SESSION['cod_tipo_usr'], $_SESSION['cod_tipo_usr']);
  384. // finalizarPagina(4, 4);?>
  385. <?php endif ?>