empleo.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. /***** INICIALES *****/
  2. let datalist_click = [false];
  3. $('.richtext').richText();
  4. $('.datepicker').MonthPicker({ MaxMonth: 0, Button: false });
  5. loadEmpleos();
  6. /***** EMPLEOS *****/
  7. function loadEmpleos(){
  8. $.ajax({
  9. url: 'action/empleos_action.php',
  10. type: 'POST',
  11. dataType: 'json',
  12. data: { tipo: 1, id: $('#idUser').val() },
  13. success: function(result) {
  14. $('main').children('div').html(result['html']);
  15. $('.ing-editar').click(editarEmpleo);
  16. $('.ing-basura').click(eliminarEmpleo);
  17. },
  18. error: function(jqXHR, textStatus, errorThrown ){
  19. $('main').children('div').html(`<div class='msgAviso d-flex flex-row justify-content-between align-items-stretch mt-4'>
  20. <div class='iconAviso bg-warning d-flex justify-content-center align-items-center'><i class='display-3 ing-importante'></i></div>
  21. <div class='txtAviso flex-grow-1 d-flex flex-column justify-content-center align-items-center'>
  22. <div class='display-5 indivisa-text-black mb-3'>¡Lo sentimos!</div>
  23. <div class='text-center'>Se presentó un error inesperado en el sistema.<br />Por favor inténtalo más tarde.</div>
  24. </div>
  25. </div>`);
  26. }
  27. });
  28. }
  29. /***** AGREGAR | EDITAR *****/
  30. $('#btnAgregar').click(function(){
  31. $('#titModal').text('Nuevo Empleo');
  32. $('#btnOkEmpleo').data('tipo', '2');
  33. $('#btnOkEmpleo').data('id', '0');
  34. $('#modalEmpleo').modal('show');
  35. });
  36. $('#modalEmpleo').on('hidden.bs.modal', function(){
  37. $('#inputPuesto').val('').removeClass('is-invalid');
  38. $('#inputEmpresa').val('').removeClass('is-invalid');
  39. if ($('#switchActual').hasClass('active'))
  40. $('#switchActual').click();
  41. $('#inputFechaInicio').val('').removeClass('is-invalid');
  42. $('#inputFechaFin').val('').removeClass('is-invalid');
  43. $('#txtDescripcion').val('');
  44. $('#txtDescripcion').text('');
  45. $('#txtDescripcion').siblings('div.richText-editor').html('');
  46. $('.alert').hide();
  47. });
  48. $('#dlEmpresa ul li').mousedown({index: 0},mousedownDataList);
  49. $('#dlEmpresa ul li').mouseup({elem: 'Empresa', index: 0},mouseupDataList);
  50. $('#inputEmpresa').click({elem: 'Empresa'},clickDataList);
  51. $('#inputEmpresa').blur({elem: 'Empresa', index: 0},blurDataList);
  52. $('#inputEmpresa').keyup({elem: 'Empresa'},inputKeyUp);
  53. $('#iconEmpresa').mousedown({index: 0},mousedownDataList);
  54. $('#iconEmpresa').mouseup({elem: 'Empresa', index: 0},mouseupDataList);
  55. $('#iconEmpresa').click({elem: 'Empresa'},limpiaInputDL);
  56. $('#dlEmpresa ul li').click({elem: 'Empresa'}, itemDataList);
  57. $('#btnOkEmpleo').click(function(){
  58. if (datosValidos()){
  59. $('#modalEmpleo').modal('hide');
  60. $.ajax({
  61. url: 'action/empleos_action.php',
  62. type: 'POST',
  63. dataType: 'json',
  64. data: {
  65. tipo: $(this).data('tipo'),
  66. id: $(this).data('id'),
  67. puesto: $('#inputPuesto').val(),
  68. empresa: $('#inputEmpresa').val(),
  69. inicio: $('#inputFechaInicio').val(),
  70. fin: $('#inputFechaFin').val(),
  71. descripcion: $('#txtDescripcion').val()
  72. },
  73. success: function(result) {
  74. if(result['error']!= '' && result['error'] !== undefined){
  75. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-danger');
  76. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-cancelar');
  77. $('.msg1').text('¡Error!');
  78. $('.msg2').html(result['error']);
  79. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-danger');
  80. } else {
  81. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-success');
  82. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-aceptar');
  83. $('.msg1').text('¡Felicidades!');
  84. $('.msg2').html(result['ok']);
  85. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-success');
  86. loadEmpleos();
  87. }
  88. $('#modalAviso').modal('show');
  89. },
  90. error: function(jqXHR, textStatus, errorThrown ){
  91. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-warning');
  92. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-importante');
  93. $('.msg1').text('¡Lo sentimos!');
  94. if ($(this).data('tipo') == '2')
  95. $('.msg2').text('Se presentó un error inesperado al momento de agregar el nuevo empleo');
  96. else
  97. $('.msg2').text('Se presentó un error inesperado al momento de actualizar el nuevo empleo');
  98. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-warning');
  99. $('#modalAviso').modal('show');
  100. }
  101. });
  102. }
  103. });
  104. function datosValidos(){
  105. let valido = true;
  106. if($('#inputPuesto').val() == ''){
  107. $('#inputPuesto').addClass('is-invalid');
  108. valido = false;
  109. } else {
  110. $('#inputPuesto').removeClass('is-invalid');
  111. }
  112. if($('#inputEmpresa').val() == ''){
  113. $('#inputEmpresa').addClass('is-invalid');
  114. valido = false;
  115. } else {
  116. $('#inputEmpresa').removeClass('is-invalid');
  117. }
  118. if($('#inputFechaInicio').val() == ''){
  119. $('#inputFechaInicio').addClass('is-invalid');
  120. valido = false;
  121. } else {
  122. $('#inputFechaInicio').removeClass('is-invalid');
  123. }
  124. if (!$('#actual').is(':checked') && $('#inputFechaFin').val() == ''){
  125. $('#inputFechaFin').addClass('is-invalid');
  126. valido = false;
  127. } else {
  128. $('#inputFechaFin').removeClass('is-invalid');
  129. }
  130. return valido;
  131. }
  132. function editarEmpleo(){
  133. let id = $(this).data('id');
  134. let puesto = $(this).parent().siblings('div.indivisa-text-italic').text();
  135. $.ajax({
  136. url: 'action/empleos_action.php',
  137. type: 'POST',
  138. dataType: 'json',
  139. data: { tipo: 5, id: id },
  140. success: function(result) {
  141. if(result['error']!= '' && result['error'] !== undefined){
  142. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-danger');
  143. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-cancelar');
  144. $('.msg1').text('¡Error!');
  145. $('.msg2').html(result['error'] + '<span class="text-azul1">' + puesto + '</span>');
  146. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-danger');
  147. $('#modalAviso').modal('show');
  148. } else {
  149. $('#inputPuesto').val(result['puesto']);
  150. $('#inputEmpresa').val(result['empresa']);
  151. $('#inputFechaInicio').val(result['inicio']);
  152. if (result['fin'] == '') {
  153. if (!$('#switchActual').hasClass('active'))
  154. $('#switchActual').click();
  155. } else {
  156. if ($('#switchActual').hasClass('active'))
  157. $('#switchActual').click();
  158. $('#inputFechaFin').val(result['fin']);
  159. }
  160. $('#txtDescripcion').siblings('div.richText-editor').html(result['descripcion']);
  161. $('#titModal').text('Nuevo Empleo');
  162. $('#btnOkEmpleo').data('tipo', '3');
  163. $('#btnOkEmpleo').data('id', id);
  164. $('#modalEmpleo').modal('show');
  165. }
  166. },
  167. error: function(jqXHR, textStatus, errorThrown ){
  168. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-warning');
  169. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-importante');
  170. $('.msg1').text('¡Lo sentimos!');
  171. $('.msg2').text('Se presentó un error inesperado al momento de editar el empleo ' + puesto);
  172. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-warning');
  173. $('#modalAviso').modal('show');
  174. }
  175. });
  176. }
  177. $('#switchActual').click(function(){
  178. $(this).toggleClass('active');
  179. if ($('.span').text() == $(this).data('on')){
  180. $('.span').text($(this).data('off'));
  181. $(this).children('input').prop('checked',false);
  182. $('#inputFechaFin').show();
  183. $('#lblActualidad').hide();
  184. } else {
  185. $('.span').text($(this).data('on'));
  186. $(this).children('input').prop('checked',true);
  187. $('#inputFechaFin').val('').hide();
  188. $('#lblActualidad').show();
  189. }
  190. });
  191. /***** ELIMINAR *****/
  192. function eliminarEmpleo(){
  193. $('#modalEliminar').children().children().children('div.modal-body').children('span').text($(this).parent().siblings('div.indivisa-text-italic').text());
  194. $('#btnOkEliminar').data('id',$(this).data('id'));
  195. $('#modalEliminar').modal('show');
  196. }
  197. $('#btnOkEliminar').click(function(){
  198. $('#modalEliminar').modal('hide');
  199. $.ajax({
  200. url: 'action/empleos_action.php',
  201. type: 'POST',
  202. dataType: 'json',
  203. data: { tipo: 4, id: $(this).data('id') },
  204. success: function(result) {
  205. if(result['error']!= '' && result['error'] !== undefined){
  206. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-danger');
  207. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-cancelar');
  208. $('.msg1').text('¡Error!');
  209. $('.msg2').html(result['error'] + '<span class="text-azul1">' + $('#modalEliminar').children().children().children('div.modal-body').children('span').text() + '</span>');
  210. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-danger');
  211. } else {
  212. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-success');
  213. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-aceptar');
  214. $('.msg1').text('¡Felicidades!');
  215. $('.msg2').html(result['ok'] + '<span class="text-azul1">' + $('#modalEliminar').children().children().children('div.modal-body').children('span').text() + '</span>');
  216. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-success');
  217. loadEmpleos();
  218. }
  219. $('#modalAviso').modal('show');
  220. },
  221. error: function(jqXHR, textStatus, errorThrown ){
  222. $('.iconAviso').removeClass('bg-success bg-warning bg-danger').addClass('bg-warning');
  223. $('.iconAviso').children('i').removeClass('ing-aceptar ing-cancelar ing-importante').addClass('ing-importante');
  224. $('.msg1').text('¡Lo sentimos!');
  225. $('.msg2').text('Se presentó un error inesperado al momento de eliminar el empleo ' + $('#modalEliminar').children().children().children('div.modal-body').children('span').text());
  226. $('.rounded-pill').removeClass('bg-success bg-warning bg-danger').addClass('bg-warning');
  227. $('#modalAviso').modal('show');
  228. }
  229. });
  230. });
  231. /***** FECHAS *****/
  232. $('input.endDate').change(function(){
  233. var sStart = $(this).siblings('input').val().split('/');
  234. var sEnd = $(this).val().split('/');
  235. var dtStart = new Date(parseInt(sStart[1]),parseInt(sStart[0])-1,1);
  236. var dtEnd = new Date(parseInt(sEnd[1]),parseInt(sEnd[0])-1,1);
  237. if (dtEnd < dtStart){
  238. $('.alert').show();
  239. $(this).val('');
  240. }
  241. else
  242. $('.alert').hide();
  243. });