Cambio a ES6

parent fc9fe877
<component name="ProjectDictionaryState">
<dictionary name="sistem16user" />
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/proyecto-estandar.iml" filepath="$PROJECT_DIR$/.idea/proyecto-estandar.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectTasksOptions" suppressed-tasks="Babel" />
</project>
\ No newline at end of file
...@@ -9,12 +9,14 @@ public interface PersonaDAO { ...@@ -9,12 +9,14 @@ public interface PersonaDAO {
public JSONObject listarPersona(String search, String draw, String start, String length); public JSONObject listarPersona(String search, String draw, String start, String length);
public JSONObject registrarPersona(PersonaBean bean); public JSONObject registrarPersona(JSONObject datos);
public JSONObject editarPersona(PersonaBean bean); public JSONObject editarPersona(JSONObject datos);
public JSONObject activarPersona(PersonaBean bean); public JSONObject activarPersona(PersonaBean bean);
public JSONObject desactivarPersona(PersonaBean bean); public JSONObject desactivarPersona(PersonaBean bean);
public JSONObject cambiarEstado(JSONObject datos);
} }
...@@ -30,20 +30,20 @@ public class PersonaService { ...@@ -30,20 +30,20 @@ public class PersonaService {
return jsonReturn; return jsonReturn;
} }
public JSONObject registrarPersona(PersonaBean bean) { public JSONObject registrarPersona(JSONObject datos) {
JSONObject jsonReturn = null; JSONObject jsonReturn = null;
try { try {
jsonReturn = service.registrarPersona(bean); jsonReturn = service.registrarPersona(datos);
} catch (Exception e) { } catch (Exception e) {
e.getMessage(); e.getMessage();
} }
return jsonReturn; return jsonReturn;
} }
public JSONObject editarPersona(PersonaBean bean) { public JSONObject editarPersona(JSONObject datos) {
JSONObject jsonReturn = null; JSONObject jsonReturn = null;
try { try {
jsonReturn = service.editarPersona(bean); jsonReturn = service.editarPersona(datos);
} catch (Exception e) { } catch (Exception e) {
e.getMessage(); e.getMessage();
} }
...@@ -68,4 +68,13 @@ public class PersonaService { ...@@ -68,4 +68,13 @@ public class PersonaService {
return jsonReturn; return jsonReturn;
} }
public JSONObject cambiarEstado(JSONObject datos) {
JSONObject respuesta = null;
try {
respuesta = service.cambiarEstado(datos);
} catch (Exception e) {
}
return respuesta;
}
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package demojsoncrud.servlets; ...@@ -2,6 +2,7 @@ package demojsoncrud.servlets;
import demojsoncrud.beans.PersonaBean; import demojsoncrud.beans.PersonaBean;
import demojsoncrud.services.PersonaService; import demojsoncrud.services.PersonaService;
import static demojsoncrud.utilities.CustomHttpServletRequest.getBodyJsonObject;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.ServletException;
...@@ -27,6 +28,8 @@ public class PersonaServlet extends HttpServlet { ...@@ -27,6 +28,8 @@ public class PersonaServlet extends HttpServlet {
activarPersona(request, response); activarPersona(request, response);
} else if ("desactivarPersona".equals(param)) { } else if ("desactivarPersona".equals(param)) {
desactivarPersona(request, response); desactivarPersona(request, response);
} else if ("cambiarEstado".equals(param)) {
cambiarEstado(request, response);
} }
} }
...@@ -56,54 +59,21 @@ public class PersonaServlet extends HttpServlet { ...@@ -56,54 +59,21 @@ public class PersonaServlet extends HttpServlet {
response.setContentType("application/json"); response.setContentType("application/json");
PrintWriter pw = response.getWriter(); PrintWriter pw = response.getWriter();
PersonaService service = new PersonaService(); PersonaService service = new PersonaService();
JSONObject datos = new JSONObject();
String json = request.getParameter("json"); datos = getBodyJsonObject(request);
JSONObject jsonObject = new JSONObject(json); JSONObject respuesta = service.registrarPersona(datos.getJSONObject("json"));
pw.print(respuesta);
String dni = jsonObject.getString("dni");
String apellidos = jsonObject.getString("apellidos");
String nombres = jsonObject.getString("nombres");
String edad = jsonObject.getString("edad");
String correo = jsonObject.getString("correo");
PersonaBean bean = new PersonaBean();
bean.setDni(dni);
bean.setApellidos(apellidos);
bean.setNombres(nombres);
bean.setEdad(edad);
bean.setCorreo(correo);
JSONObject jsonReturn = service.registrarPersona(bean);
pw.print(jsonReturn);
} }
private void editarPersona(HttpServletRequest request, HttpServletResponse response) throws IOException { private void editarPersona(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json"); response.setContentType("application/json");
PersonaService service = new PersonaService();
PrintWriter pw = response.getWriter(); PrintWriter pw = response.getWriter();
PersonaService service = new PersonaService();
String json = request.getParameter("json"); JSONObject datos = new JSONObject();
JSONObject jsonObject = new JSONObject(json); datos = getBodyJsonObject(request);
JSONObject respuesta = service.editarPersona(datos.getJSONObject("json"));
String apellidos = jsonObject.getString("apellidos"); pw.print(respuesta);
String nombres = jsonObject.getString("nombres");
String edad = jsonObject.getString("edad");
String correo = jsonObject.getString("correo");
String codigo = jsonObject.getString("codigo");
PersonaBean bean = new PersonaBean();
bean.setApellidos(apellidos);
bean.setNombres(nombres);
bean.setEdad(edad);
bean.setCorreo(correo);
bean.setCodigo(codigo);
JSONObject jsonReturn = service.editarPersona(bean);
pw.print(jsonReturn);
} }
private void activarPersona(HttpServletRequest request, HttpServletResponse response) throws IOException { private void activarPersona(HttpServletRequest request, HttpServletResponse response) throws IOException {
...@@ -140,4 +110,15 @@ public class PersonaServlet extends HttpServlet { ...@@ -140,4 +110,15 @@ public class PersonaServlet extends HttpServlet {
pw.print(jsonReturn); pw.print(jsonReturn);
} }
private void cambiarEstado(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json");
PrintWriter pw = response.getWriter();
PersonaService service = new PersonaService();
JSONObject datos = new JSONObject();
datos = getBodyJsonObject(request);
JSONObject respuesta = service.cambiarEstado(datos.getJSONObject("json"));
System.out.println(respuesta);
pw.print(respuesta);
}
} }
...@@ -178,7 +178,8 @@ public class PersonaSqlserverDAO implements PersonaDAO { ...@@ -178,7 +178,8 @@ public class PersonaSqlserverDAO implements PersonaDAO {
} }
@Override @Override
public JSONObject registrarPersona(PersonaBean bean) { public JSONObject registrarPersona(JSONObject datos) {
System.out.println(datos);
JSONObject jsonReturn = new JSONObject(); JSONObject jsonReturn = new JSONObject();
int resultDni = 0; int resultDni = 0;
int resultPersona = 0; int resultPersona = 0;
...@@ -191,7 +192,7 @@ public class PersonaSqlserverDAO implements PersonaDAO { ...@@ -191,7 +192,7 @@ public class PersonaSqlserverDAO implements PersonaDAO {
String sqlGetDni = "select count(1) dni from persona where dni = ?"; String sqlGetDni = "select count(1) dni from persona where dni = ?";
PreparedStatement psGetDni = connection.prepareStatement(sqlGetDni); PreparedStatement psGetDni = connection.prepareStatement(sqlGetDni);
psGetDni.setString(1, bean.getDni()); psGetDni.setString(1, datos.getString("dni"));
ResultSet rsGetDni = psGetDni.executeQuery(); ResultSet rsGetDni = psGetDni.executeQuery();
rsGetDni.next(); rsGetDni.next();
resultDni = rsGetDni.getInt("dni"); resultDni = rsGetDni.getInt("dni");
...@@ -202,11 +203,11 @@ public class PersonaSqlserverDAO implements PersonaDAO { ...@@ -202,11 +203,11 @@ public class PersonaSqlserverDAO implements PersonaDAO {
+ "(?,RTRIM(UPPER(?)),RTRIM(UPPER(?)),?,RTRIM(UPPER(?)),1)"; + "(?,RTRIM(UPPER(?)),RTRIM(UPPER(?)),?,RTRIM(UPPER(?)),1)";
int c = 1; //contador para las columnas int c = 1; //contador para las columnas
psInsertarPersona = connection.prepareStatement(sql); psInsertarPersona = connection.prepareStatement(sql);
psInsertarPersona.setString(c++, bean.getDni()); psInsertarPersona.setString(c++, datos.getString("dni"));
psInsertarPersona.setString(c++, bean.getApellidos()); psInsertarPersona.setString(c++, datos.getString("apellidos"));
psInsertarPersona.setString(c++, bean.getNombres()); psInsertarPersona.setString(c++, datos.getString("nombres"));
psInsertarPersona.setString(c++, bean.getEdad()); psInsertarPersona.setString(c++, datos.getString("edad"));
psInsertarPersona.setString(c++, bean.getCorreo()); psInsertarPersona.setString(c++, datos.getString("correo"));
resultPersona = psInsertarPersona.executeUpdate(); resultPersona = psInsertarPersona.executeUpdate();
if (resultPersona == 1) { if (resultPersona == 1) {
response.setMessage("Registro correcto!"); response.setMessage("Registro correcto!");
...@@ -239,12 +240,12 @@ public class PersonaSqlserverDAO implements PersonaDAO { ...@@ -239,12 +240,12 @@ public class PersonaSqlserverDAO implements PersonaDAO {
} }
jsonReturn = new JSONObject(response); jsonReturn = new JSONObject(response);
System.out.println(jsonReturn);
return jsonReturn; return jsonReturn;
} }
@Override @Override
public JSONObject editarPersona(PersonaBean bean) { public JSONObject editarPersona(JSONObject datos) {
JSONObject jsonReturn = new JSONObject(); JSONObject jsonReturn = new JSONObject();
String base = "demojsoncrud"; String base = "demojsoncrud";
Connection connection = null; Connection connection = null;
...@@ -264,11 +265,11 @@ public class PersonaSqlserverDAO implements PersonaDAO { ...@@ -264,11 +265,11 @@ public class PersonaSqlserverDAO implements PersonaDAO {
psEditarPersona = connection.prepareStatement(sql); psEditarPersona = connection.prepareStatement(sql);
int q = 1; // CONTADOR PARA LAS COLUMNAS int q = 1; // CONTADOR PARA LAS COLUMNAS
psEditarPersona.setString(q++, bean.getApellidos()); psEditarPersona.setString(q++, datos.getString("apellidos"));
psEditarPersona.setString(q++, bean.getNombres()); psEditarPersona.setString(q++, datos.getString("nombres"));
psEditarPersona.setString(q++, bean.getEdad()); psEditarPersona.setString(q++, datos.getString("edad"));
psEditarPersona.setString(q++, bean.getCorreo()); psEditarPersona.setString(q++, datos.getString("correo"));
psEditarPersona.setString(q++, bean.getCodigo()); psEditarPersona.setString(q++, datos.getString("codigo"));
resultPersona = psEditarPersona.executeUpdate(); resultPersona = psEditarPersona.executeUpdate();
if (resultPersona == 1) { if (resultPersona == 1) {
...@@ -401,4 +402,55 @@ public class PersonaSqlserverDAO implements PersonaDAO { ...@@ -401,4 +402,55 @@ public class PersonaSqlserverDAO implements PersonaDAO {
return jsonReturn; return jsonReturn;
} }
@Override
public JSONObject cambiarEstado(JSONObject datos) {
System.out.println(datos);
JSONObject jsonReturn = new JSONObject();
String base = "demojsoncrud";
Connection connection = null;
PreparedStatement psEditarPersona = null;
int resultPersona = 0;
ResponseHelper response = new ResponseHelper();
try {
connection = SqlserverDAOFactory.obtenerConexion(base);
String sql
= "UPDATE persona "
+ " SET estado = ? "
+ "WHERE codigo = ?;";
psEditarPersona = connection.prepareStatement(sql);
psEditarPersona.setString(1, datos.getString("estado").equals("1") ? "0" : "1");
psEditarPersona.setString(2, datos.getString("codigo"));
resultPersona = psEditarPersona.executeUpdate();
if (resultPersona == 1) {
response.setMessage("Se actualizo correctamente");
response.setStatus(true); // ACTUALIZO
} else {
response.setMessage("Error al actualizar");
response.setStatus(false); // ERROR
}
} catch (SQLException e) {
response.setStatus(false);
response.setMessage("Error al actualizar -> " + e.getMessage() + "[" + e.getErrorCode() + "]");
} finally {
try {
if (connection != null) {
connection.close();
}
if (psEditarPersona != null) {
psEditarPersona.close();
}
} catch (SQLException e) {
response.setStatus(false);
response.setMessage("Error al actualizar -> " + e.getMessage() + "[" + e.getErrorCode() + "]");
}
}
jsonReturn = new JSONObject(response);
return jsonReturn;
}
} }
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package demojsoncrud.sqlserverdao; package demojsoncrud.sqlserverdao;
import demojsoncrud.dao.DAOFactory; import demojsoncrud.dao.DAOFactory;
...@@ -12,10 +7,6 @@ import java.sql.Connection; ...@@ -12,10 +7,6 @@ import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.SQLException;
/**
*
* @author Alonso
*/
public class SqlserverDAOFactory extends DAOFactory { public class SqlserverDAOFactory extends DAOFactory {
public static Connection obtenerConexion(String base) { public static Connection obtenerConexion(String base) {
...@@ -43,10 +34,6 @@ public class SqlserverDAOFactory extends DAOFactory { ...@@ -43,10 +34,6 @@ public class SqlserverDAOFactory extends DAOFactory {
return connection; return connection;
} }
// public static void main(String[] args) {
// SqlserverDAOFactory sqlserverDAOFactory = new SqlserverDAOFactory();
// System.out.println(sqlserverDAOFactory.obtenerConexion("demojsoncrud"));
// }
@Override @Override
public PersonaDAO getPersonaDAO() { public PersonaDAO getPersonaDAO() {
return new PersonaSqlserverDAO(); return new PersonaSqlserverDAO();
......
package demojsoncrud.utilities;
import java.io.BufferedReader;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONObject;
public class CustomHttpServletRequest {
public static JSONObject getBodyJsonObject(HttpServletRequest request) throws IOException {
String body = "";
if (request.getMethod().equals("POST")) {
StringBuilder sb = new StringBuilder();
BufferedReader bufferedReader = null;
bufferedReader = request.getReader(); // swallow silently -- can't get body, won't
char[] charBuffer = new char[128];
int bytesRead;
while ((bytesRead = bufferedReader.read(charBuffer)) != -1) {
sb.append(charBuffer, 0, bytesRead);
}
if (bufferedReader != null) {
bufferedReader.close(); // swallow silently -- can't get body, won't
}
body = sb.toString();
}
JSONObject respuesta = new JSONObject(body);
return respuesta;
}
}
/**
* Facilita el uso de fetch
* @method fetchSo
* @param {String} url nombre de objeto
* @param {object} object mensaje a mostrar
* @returns {Promise} Promise retorna status, msg
*/
let fetchSo = (url, object) => {
return new Promise(
(resolve, reject) => {
let header = {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json; charset=utf-8'
}
let requestInfo = {
method: 'post',
headers: header,
body: JSON.stringify({json: object})
}
fetch(url, requestInfo)
.then((res) => {
return res.json()
})
.then((res) => {
if (res.status) {
resolve(res)
} else {
reject(res)
}
})
.catch((error) => {
reject(error)
})
}
)
}
let customSwal = {
alert (title, text, type) {
let colors = {
success: '#66BB6A',
error: '#EF5350',
warning: '#FF7043'
}
let btnColor = colors[type]
swal({
title: title,
text: text,
confirmButtonColor: btnColor,
type: type
})
}
}
// function imprimirAlerta (title, text, type) {
// var s_col =
// var e_col = '#EF5350'
// var w_col = '#FF7043'
// var btnCol
//
// if (type === 'error') {
// btnCol = e_col
// } else if (type === 'warning') {
// btnCol = w_col
// } else {
// btnCol = s_col
// }
//
// swal({
// title: title,
// text: text,
// confirmButtonColor: btnCol,
// type: type
// })
//
// }
\ No newline at end of file
$(document).ready(function () { let jqueryValidateConfig = () => {
listarPersonaTest(); function stripHtml (value) {
init(); // METODOS // remove html tags and space chars
MyValidate(); return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')
}); // remove numbers and punctuation
.replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g, '')
var codigoPersona;
function init() {
listarPersona();
registrarPersona();
editarPersona();
activarPersona();
desactivarPersona();
obtenerPersona();
filtrarPersona();
}
// LISTADO SIMPLE
function listarPersonaTest() {
$.ajax({
url: '../PersonaServlet?accion=listarPersonaTest',
type: 'POST',
beforeSend: function (xhr) {
// console.log('Antes de ...');
}, success: function (data, textStatus, jqXHR) {
console.log(data);
// var personas = data.data.personas;
// for (var i = 0; i < personas.length; i++) {
// var persona = personas[i];
// console.log(persona.apellidos);
// }
//// console.log("listadoTest");
}, complete: function (jqXHR, textStatus) {
// console.log('Siempre ejecutará esta función');
} }
});
}
// REGISTRAR PERSONA
function registrarPersona() {
$('#btn_registrar_persona').on('click', function () {
var validator = $('#form_registrar_persona').validate({
rules: { jQuery.validator.addMethod('lettersonly', function (value, element) {
txt_numero_documento: {required: true, digits: true, minlength: 8, maxlength: 8}, return this.optional(element) || /^[a-z\s]+$/i.test(value)
txt_apellidos: {required: true, lettersonly: true, maxlength: 50}, }, 'Solo letras.')
txt_nombres: {required: true, lettersonly: true, maxlength: 50}, jQuery.validator.setDefaults({
txt_edad: {required: true, digits: true, maxlength: 2}, debug: true,
txt_correo: {required: true, email: true, maxlength: 50} ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields
errorClass: 'validation-error-label',
successClass: 'validation-valid-label',
highlight: function (element, errorClass) {
$(element).removeClass(errorClass)
}, },
messages: { unhighlight: function (element, errorClass) {
txt_numero_documento: {required: "Ingresar número de documento.", minlength: "Ingresar 8 dígitos.", maxlength: "Ingresar 8 dígitos.", digits: "Ingresar solo números."}, $(element).removeClass(errorClass)
txt_apellidos: {required: "Ingresar apellidos.", maxlength: "Ingresar 50 letras como máximo.", lettersonly: "Ingresar solo letras"},
txt_nombres: {required: "Ingresar nombres.", maxlength: "Ingresar 50 letras como máximo.", lettersonly: "Ingresar solo letras"},
txt_edad: {required: "Ingresar edad.", maxlength: "Ingresar 2 dígitos como máximo", digits: "Ingresar solo números"},
txt_correo: {required: "Ingresar correo.", maxlength: "Ingresar 50 letras como máximo.", email: "Ingresar un correo válido"}
}
});
var estado = validator.form();
if (estado) {
var json = {
dni: $('#txt_numero_documento').val().trim(),
apellidos: $('#txt_apellidos').val().trim(),
nombres: $('#txt_nombres').val().trim(),
edad: $('#txt_edad').val().trim(),
correo: $('#txt_correo').val().trim()
};
$.ajax({
type: 'POST',
url: '../PersonaServlet?accion=registrarPersona',
dataType: 'json',
data: {json: JSON.stringify(json)},
beforeSend: function (xhr) {
console.log('cargando...');
}, },
success: function (data, textStatus, jqXHR) { // Different components require proper error label placement
console.log(data); errorPlacement: function (error, element) {
var status = data.status;
if (status) { // Styled checkboxes, radios, bootstrap switch
imprimirAlerta('Correcto!', data.message, 'success'); if (element.parents('div').hasClass('checker') || element.parents('div').hasClass('choice') || element.parent().hasClass('bootstrap-switch-container')) {
recargarTabla(); if (element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) {
$('#modal_registrar_persona').modal('hide'); error.appendTo(element.parent().parent().parent().parent())
} else { } else {
imprimirAlerta('Error!', data.message, 'error'); error.appendTo(element.parent().parent().parent().parent().parent())
} }
},
complete: function (jqXHR, textStatus) {
} }
});
// Unstyled checkboxes, radios
else if (element.parents('div').hasClass('checkbox') || element.parents('div').hasClass('radio')) {
error.appendTo(element.parent().parent().parent())
} }
}); // Input with icons and Select2
} else if (element.parents('div').hasClass('has-feedback') || element.hasClass('select2-hidden-accessible')) {
error.appendTo(element.parent())
// ACTUALIZAR PERSONA
function editarPersona() {
$('#btn_editar_persona').on('click', function () {
var validator = $('#form_editar_persona').validate({
rules: {
txt_apellidos_editar: {required: true, lettersonly: true, maxlength: 50},
txt_nombres_editar: {required: true, lettersonly: true, maxlength: 50},
txt_edad_editar: {required: true, digits: true, maxlength: 2},
txt_correo_editar: {required: true, email: true, maxlength: 50}
},
messages: {
txt_apellidos_editar: {required: "Ingresar apellidos.", maxlength: "Ingresar 50 letras como máximo.", lettersonly: "Ingresar solo letras"},
txt_nombres_editar: {required: "Ingresar nombres.", maxlength: "Ingresar 50 letras como máximo.", lettersonly: "Ingresar solo letras"},
txt_edad_editar: {required: "Ingresar edad.", maxlength: "Ingresar 2 dígitos como máximo", digits: "Ingresar solo números"},
txt_correo_editar: {required: "Ingresar correo.", maxlength: "Ingresar 50 letras como máximo.", email: "Ingresar un correo válido"}
} }
});
var estado = validator.form(); // Inline checkboxes, radios
else if (element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) {
error.appendTo(element.parent().parent())
}
if (estado) { // Input group, styled file input
var json = { else if (element.parent().hasClass('uploader') || element.parents().hasClass('input-group')) {
apellidos: $('#txt_apellidos_editar').val().trim(), error.appendTo(element.parent().parent())
nombres: $('#txt_nombres_editar').val().trim(),
edad: $('#txt_edad_editar').val().trim(),
correo: $('#txt_correo_editar').val().trim(),
codigo: codigoPersona
};
$.ajax({
type: 'POST',
url: '../PersonaServlet?accion=editarPersona',
dataType: 'json',
data: {json: JSON.stringify(json)},
beforeSend: function (xhr) {
console.log('cargando...');
},
success: function (data, textStatus, jqXHR) {
console.log(data);
var status = data.status;
if (status) {
imprimirAlerta('Correcto!', data.message, 'success');
recargarTabla();
$('#modal_editar_persona').modal('hide');
} else { } else {
imprimirAlerta('Error!', data.message, 'error'); error.insertAfter(element)
}
},
complete: function (jqXHR, textStatus) {
} }
});
} }
}); })
} }
let persona = {
// LISTAR PERSONA DATATABLE listar () {
function listarPersona() { let txtCriterioBusqueda = $('#txt-busqueda').val().trim()
return new Promise((resolve) => {
var txt_criterio_busqueda = $('#txt_criterio_busqueda').val().trim(); $('#tbl-persona').DataTable().destroy()
$('#tbl-persona').DataTable({
$('#tabla_persona').DataTable({
language: { language: {
paginate: {'next': '&rarr; ', 'previous': ' &larr;'}, paginate: {'next': '&rarr; ', 'previous': ' &larr;'},
emptyTable: 'No hay registros' emptyTable: 'No hay registros'
...@@ -169,7 +70,10 @@ function listarPersona() { ...@@ -169,7 +70,10 @@ function listarPersona() {
url: '../PersonaServlet?accion=listarPersona', url: '../PersonaServlet?accion=listarPersona',
type: 'POST', type: 'POST',
dataType: 'json', dataType: 'json',
data: {search: txt_criterio_busqueda} data: {search: txtCriterioBusqueda},
/*success: function (data) {
resolve(data)
}*/
}, },
columnDefs: [ columnDefs: [
{targets: 0, orderable: false, width: '5%', className: 'centrado'}, {targets: 0, orderable: false, width: '5%', className: 'centrado'},
...@@ -191,271 +95,273 @@ function listarPersona() { ...@@ -191,271 +95,273 @@ function listarPersona() {
searching: false, searching: false,
bLengthChange: false, bLengthChange: false,
bFilter: false, bFilter: false,
aaSorting: [], aaSorting: [],
ordering: false, ordering: false,
scrollX: false, scrollX: false,
ScrollCollapse: true, ScrollCollapse: true,
columns: [ columns: [
{data: "codigo"}, {data: 'codigo'},
{data: "dni"}, {data: 'dni'},
{ {
data: null, data: null,
render: function (data, type, row) { render: function (data, type, row) {
return data.apellidos + ", " + data.nombres; return data.apellidos + ', ' + data.nombres
} }
}, },
{data: "edad", className: 'text-center'}, {data: 'edad', className: 'text-center'},
{data: "correo"}, {data: 'correo'},
{ {
data: "estado", data: 'estado',
className: 'text-center', className: 'text-center',
render: function (data, type, row) { render: function (data, type, row) {
return data === "1" ? '<span class="label label-success">activo</span>' : '<span class="label label-danger">inactivo</span>'; return data === '1' ? '<span class="label label-success">activo</span>' : '<span class="label label-danger">inactivo</span>'
} }
}, },
{ {
data: null, data: null,
className: 'text-center', className: 'text-center',
render: function (data, type, row) { render: function (data, type, row) {
return data.estado === "1" ? '<ul class="icons-list"><li title="Editar" data-toggle="modal" data-target="#modal_editar_persona" class="text-primary-600"><a href="#" class="editarPersona"><i class="icon-pencil7"></i></a></li><li title="Desactivar" class="text-success-600"><a href="#" class="desactivarPersona"><i class="icon-switch2"></i></a></li></ul>' : '<ul class="icons-list"><li title="Editar" data-toggle="modal" data-target="#modal_editar_persona" class="text-primary-600"><a href="#" class="editarPersona"><i class="icon-pencil7"></i></a></li><li title="Activar" class="text-danger-600"><a href="#" class="activarPersona"><i class="icon-switch2"></i></a></li></ul>'; // debugger
} return `<ul class="icons-list">
} <li title="Editar" data-toggle="modal" data-target="#modal_editar_persona" class="text-primary-600">
] <a href="#" class="editarPersona"><i class="icon-pencil7"></i></a>
}); </li>
} <li title="${data.estado === '1' ? 'Desactivar' : 'Activar'}" class="${data.estado === '1' ? 'text-success-600' : 'text-danger-600'}">
<a href="#" class="estado"><i class="icon-switch2"></i></a>
// OBTENER UNA PERSONA </li>
function obtenerPersona() { </ul>`
$('#tabla_persona tbody').on('click', '.editarPersona', function () {
var data_row = $('#tabla_persona').DataTable().row($(this).parents('tr')).data();
console.log(data_row);
codigoPersona = '';
$('#txt_numero_documento_editar').val(data_row.dni);
$('#txt_apellidos_editar').val(data_row.apellidos);
$('#txt_nombres_editar').val(data_row.nombres);
$('#txt_edad_editar').val(data_row.edad);
$('#txt_correo_editar').val(data_row.correo);
codigoPersona = data_row.codigo;
});
}
// ACTIVAR UNA PERSONA
function activarPersona() {
$('#tabla_persona tbody').on('click', '.activarPersona', function () {
var data_row = $('#tabla_persona').DataTable().row($(this).parents('tr')).data();
var json = {
codigo: data_row.codigo
};
swal({
title: "¿Estás seguro?",
text: "¿Desea activar a " + data_row.apellidos + ", " + data_row.nombres + " ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#EF5350",
confirmButtonText: "Si!",
cancelButtonText: "No!",
closeOnConfirm: false,
closeOnCancel: true
},
function (isConfirm) {
if (isConfirm) {
$.ajax({
url: '../PersonaServlet?accion=activarPersona',
type: 'POST',
dataType: 'json',
data: {json: JSON.stringify(json)},
beforeSend: function (xhr) {
},
success: function (data, textStatus, jqXHR) {
console.log(data);
var status = data.status;
if (status) {
imprimirAlerta('Activado!', data_row.apellidos + ', ' + data_row.nombres + ' fue activado con exito!', 'success');
recargarTabla();
} else {
imprimirAlerta('Error!', data.message, 'error');
} }
} }
}); ],
'fnInitComplete': function (oSettings, json) {
resolve(json)
} }
}); })
}); })
}
// DESACTIVAR UNA PERSONA
function desactivarPersona() {
$('#tabla_persona tbody').on('click', '.desactivarPersona', function () {
var data_row = $('#tabla_persona').DataTable().row($(this).parents('tr')).data();
var json = {
codigo: data_row.codigo
};
swal({
title: "¿Estás seguro?",
text: "¿Desea desactivar a " + data_row.apellidos + ", " + data_row.nombres + " ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#EF5350",
confirmButtonText: "Si!",
cancelButtonText: "No!",
closeOnConfirm: false,
closeOnCancel: true
}, },
function (isConfirm) { cambiarEstado (datos) {
if (isConfirm) { return new Promise((resolve, reject) => {
$.ajax({ fetchSo('../PersonaServlet?accion=cambiarEstado', datos)
url: '../PersonaServlet?accion=desactivarPersona', .then((data) => {
type: 'POST', resolve(data)
dataType: 'json', })
data: {json: JSON.stringify(json)}, .catch((data) => {
beforeSend: function (xhr) { reject(data)
})
})
}, },
success: function (data, textStatus, jqXHR) { registrar () {
console.log(data); let json = {
var status = data.status; dni: $('#txt_numero_documento').val().trim(),
if (status) { apellidos: $('#txt_apellidos').val().trim(),
imprimirAlerta('Desactivado!', data_row.apellidos + ', ' + data_row.nombres + ' fue desactivado con exito!', 'success'); nombres: $('#txt_nombres').val().trim(),
recargarTabla(); edad: $('#txt_edad').val().trim(),
} else { correo: $('#txt_correo').val().trim()
imprimirAlerta('Error!', data.message, 'error');
}
} }
}); return new Promise((resolve, reject) => {
fetchSo('../PersonaServlet?accion=registrarPersona', json)
.then((data) => {
resolve(data)
})
.catch((data) => {
reject(data)
})
})
},
editar () {
let json = {
apellidos: $('#txt_apellidos_editar').val().trim(),
nombres: $('#txt_nombres_editar').val().trim(),
edad: $('#txt_edad_editar').val().trim(),
correo: $('#txt_correo_editar').val().trim(),
codigo: localStorage.getItem('codigoPersona')
} }
}); return new Promise((resolve, reject) => {
fetchSo('../PersonaServlet?accion=editarPersona', json)
}); .then((data) => {
} resolve(data)
})
// SWEET ALERT .catch((data) => {
function imprimirAlerta(title, text, type) { reject(data)
var s_col = "#66BB6A"; })
var e_col = "#EF5350"; })
var w_col = "#FF7043";
var btnCol;
if (type === 'error') {
btnCol = e_col;
} else if (type === 'warning') {
btnCol = w_col;
} else {
btnCol = s_col;
} }
swal({
title: title,
text: text,
confirmButtonColor: btnCol,
type: type
});
} }
let obtenerDatosTabla = (fila) => {
function recargarTabla() { return $('#tbl-persona').DataTable().row(fila).data()
$('#tabla_persona').DataTable().destroy();
listarPersona();
} }
let limpiarCajasTexto = () => {
// FILTROS DE LA BUSQUEDA
function filtrarPersona() {
// PRIMERA FORMA: CON BOTON
$('#btn_buscar_criterio').on('click', function () {
recargarTabla();
});
// SEGUNDA FORMA: MIENTRAS SE ESCRIBE
// $('#txt_criterio_busqueda').keyup(function (e) {
// recargarTabla();
// });
// TERCERA FORMA: PRESIONANDO ENTER
$('#txt_criterio_busqueda').keyup(function (e) {
if (e.keyCode === 13) {
recargarTabla();
}
});
}
// LIMPIAR INPUTS AL ABRIR EL MODAL PARA REGISTRAR
function limpiarInputs() {
$('#btn_agregar_persona').on('click', function () { $('#btn_agregar_persona').on('click', function () {
$('#txt_numero_documento').attr({ $('#txt_numero_documento').attr({
autofocus: true autofocus: true
}); })
$('#txt_numero_documento').val(''); $('#txt_numero_documento').val('')
$('#txt_apellidos').val(''); $('#txt_apellidos').val('')
$('#txt_nombres').val(''); $('#txt_nombres').val('')
$('#txt_edad').val(''); $('#txt_edad').val('')
$('#txt_correo').val(''); $('#txt_correo').val('')
}); })
} }
let asignarEventos = () => {
// JQUERY VALIDATOR $('#tbl-persona tbody').on('click', '.estado', (event) => {
function MyValidate() { let rowData = obtenerDatosTabla($(event.currentTarget).parents('tr'))
swal({
function stripHtml(value) { title: '¿Estás seguro?',
// remove html tags and space chars text: `¿Desea ${rowData.estado === '1' ? 'DESACTIVAR' : 'ACTIVAR'} a ${rowData.apellidos} ${rowData.nombres}?`,
return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ') type: 'warning',
// remove numbers and punctuation showCancelButton: true,
.replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g, ''); confirmButtonColor: '#EF5350',
confirmButtonText: 'Si',
cancelButtonText: 'No',
closeOnConfirm: false,
closeOnCancel: true
}, (isConfirm) => {
if (isConfirm) {
persona.cambiarEstado(rowData)
.then((data) => {
customSwal
.alert('¡Exito!', 'Se actualizó con exito.', 'success')
.then(() => {
persona.listar()
})
})
.catch((data) => {
customSwal.alert('¡Error!', 'No se registró con exito.', 'error')
})
} }
})
})
$('#tbl-persona tbody').on('click', '.editarPersona', (event) => {
let rowData = $('#tbl-persona').DataTable().row($(event.currentTarget).parents('tr')).data()
$('#txt_numero_documento_editar').val(rowData.dni)
$('#txt_apellidos_editar').val(rowData.apellidos)
$('#txt_nombres_editar').val(rowData.nombres)
$('#txt_edad_editar').val(rowData.edad)
$('#txt_correo_editar').val(rowData.correo)
localStorage.setItem('codigoPersona', rowData.codigo)
})
jQuery.validator.addMethod("lettersonly", function (value, element) { $('#btn_registrar_persona').on('click', function () {
return this.optional(element) || /^[a-z\s]+$/i.test(value); let validator = $('#form_registrar_persona').validate({
}, "Solo letras."); rules: {
txt_numero_documento: {required: true, digits: true, minlength: 8, maxlength: 8},
jQuery.validator.setDefaults({ txt_apellidos: {required: true, lettersonly: true, maxlength: 50},
debug: true, txt_nombres: {required: true, lettersonly: true, maxlength: 50},
ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields txt_edad: {required: true, digits: true, maxlength: 2},
errorClass: 'validation-error-label', txt_correo: {required: true, email: true, maxlength: 50}
successClass: 'validation-valid-label',
highlight: function (element, errorClass) {
$(element).removeClass(errorClass);
}, },
unhighlight: function (element, errorClass) { messages: {
$(element).removeClass(errorClass); txt_numero_documento: {
required: 'Ingresar número de documento.',
minlength: 'Ingresar 8 dígitos.',
maxlength: 'Ingresar 8 dígitos.',
digits: 'Ingresar solo números.'
}, },
// Different components require proper error label placement txt_apellidos: {
errorPlacement: function (error, element) { required: 'Ingresar apellidos.',
maxlength: 'Ingresar 50 letras como máximo.',
// Styled checkboxes, radios, bootstrap switch lettersonly: 'Ingresar solo letras'
if (element.parents('div').hasClass("checker") || element.parents('div').hasClass("choice") || element.parent().hasClass('bootstrap-switch-container')) { },
if (element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) { txt_nombres: {
error.appendTo(element.parent().parent().parent().parent()); required: 'Ingresar nombres.',
} else { maxlength: 'Ingresar 50 letras como máximo.',
error.appendTo(element.parent().parent().parent().parent().parent()); lettersonly: 'Ingresar solo letras'
} },
txt_edad: {
required: 'Ingresar edad.',
maxlength: 'Ingresar 2 dígitos como máximo',
digits: 'Ingresar solo números'
},
txt_correo: {
required: 'Ingresar correo.',
maxlength: 'Ingresar 50 letras como máximo.',
email: 'Ingresar un correo válido'
} }
// Unstyled checkboxes, radios
else if (element.parents('div').hasClass('checkbox') || element.parents('div').hasClass('radio')) {
error.appendTo(element.parent().parent().parent());
} }
})
// Input with icons and Select2 let estado = validator.form()
else if (element.parents('div').hasClass('has-feedback') || element.hasClass('select2-hidden-accessible')) { if (estado) {
error.appendTo(element.parent()); persona
.registrar()
.then((data) => {
customSwal
.alert('¡Exito!', 'Se registró con exito.', 'success')
.then(() => {
$('#modal_registrar_persona').modal('hide')
})
.then(() => {
persona.listar()
})
})
.catch((data) => {
customSwal.alert('¡Error!', 'No se registró con exito.', 'error')
})
} }
})
// Inline checkboxes, radios $('#btn_editar_persona').on('click', function () {
else if (element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) { let validator = $('#form_editar_persona').validate({
error.appendTo(element.parent().parent()); rules: {
txt_apellidos_editar: {required: true, lettersonly: true, maxlength: 50},
txt_nombres_editar: {required: true, lettersonly: true, maxlength: 50},
txt_edad_editar: {required: true, digits: true, maxlength: 2},
txt_correo_editar: {required: true, email: true, maxlength: 50}
},
messages: {
txt_apellidos_editar: {
required: 'Ingresar apellidos.',
maxlength: 'Ingresar 50 letras como máximo.',
lettersonly: 'Ingresar solo letras'
},
txt_nombres_editar: {
required: 'Ingresar nombres.',
maxlength: 'Ingresar 50 letras como máximo.',
lettersonly: 'Ingresar solo letras'
},
txt_edad_editar: {
required: 'Ingresar edad.',
maxlength: 'Ingresar 2 dígitos como máximo',
digits: 'Ingresar solo números'
},
txt_correo_editar: {
required: 'Ingresar correo.',
maxlength: 'Ingresar 50 letras como máximo.',
email: 'Ingresar un correo válido'
} }
// Input group, styled file input
else if (element.parent().hasClass('uploader') || element.parents().hasClass('input-group')) {
error.appendTo(element.parent().parent());
} else {
error.insertAfter(element);
} }
})
let estado = validator.form()
if (estado) {
persona
.editar()
.then((data) => {
customSwal
.alert('¡Exito!', 'Se actualizó con exito.', 'success')
.then(() => {
$('#modal_editar_persona').modal('hide')
})
.then(() => {
persona.listar()
})
})
.catch((data) => {
customSwal.alert('¡Error!', 'No se actualizó con exito.', 'error')
})
} }
}); })
$('#btn_buscar_criterio').on('click', function () {
persona.listar()
})
$('#txt-busqueda').keyup(function (e) {
if (e.keyCode === 13) {
persona.listar()
}
})
} }
jqueryValidateConfig()
persona.listar()
asignarEventos()
limpiarCajasTexto()
\ No newline at end of file
<%--
Document : index
Created on : 05-ene-2018, 20:49:32
Author : Alonso
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
...@@ -18,8 +12,6 @@ ...@@ -18,8 +12,6 @@
<body> <body>
<%@include file="templates/header-body.jsp" %> <%@include file="templates/header-body.jsp" %>
<!-- content --> <!-- content -->
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
...@@ -35,7 +27,7 @@ ...@@ -35,7 +27,7 @@
<label class="control-label display-block">Ingresar criterio de búsqueda: </label> <label class="control-label display-block">Ingresar criterio de búsqueda: </label>
<div class="input-group input-group-xlg"> <div class="input-group input-group-xlg">
<span class="input-group-addon"><i class="icon-search4"></i></span> <span class="input-group-addon"><i class="icon-search4"></i></span>
<input id="txt_criterio_busqueda" type="text" class="form-control" placeholder="Ingresar criterio"> <input id="txt-busqueda" type="text" class="form-control" placeholder="Ingresar criterio">
</div> </div>
</div> </div>
</div> </div>
...@@ -50,22 +42,20 @@ ...@@ -50,22 +42,20 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-10 col-md-offset-1"> <div class="col-md-12">
<div class="panel panel-flat border-top-xlg border-top-primary"> <div class="panel panel-flat border-top-xlg border-top-primary">
<div class="panel-heading"> <div class="panel-heading">
<h6 class="panel-title text-semibold"><i class=" icon-list3 position-left"></i> Listado persona</h6> <h6 class="panel-title text-semibold"><i class=" icon-list3 position-left"></i> Listado persona</h6>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<button id="btn_agregar_persona" type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal_registrar_persona"><i class="icon-plus3 position-left"></i> Agregar</button> <button id="btn_agregar_persona" type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal_registrar_persona"><i class="icon-plus3 position-left"></i> Agregar</button>
</div> </div>
</div><br> </div>
<div class="row"> </div>
<div class="col-md-12">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-sm" id="tabla_persona"> <table class="table table-striped table-sm" id="tbl-persona">
<thead> <thead>
<tr> <tr>
<th>#</th> <th>#</th>
...@@ -85,9 +75,6 @@ ...@@ -85,9 +75,6 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
</div>
<!-- / content --> <!-- / content -->
<!-- modal_registrar_persona --> <!-- modal_registrar_persona -->
...@@ -244,8 +231,6 @@ ...@@ -244,8 +231,6 @@
</div> </div>
<!-- /modal_editar_persona --> <!-- /modal_editar_persona -->
<%@include file="templates/footer-body.jsp" %> <%@include file="templates/footer-body.jsp" %>
<!--js plantilla--> <!--js plantilla-->
...@@ -277,6 +262,7 @@ ...@@ -277,6 +262,7 @@
<!--js plantilla--> <!--js plantilla-->
<!--mi js--> <!--mi js-->
<script src="../js/general.js" type="text/javascript"></script>
<script src="../js/pages/persona.js" type="text/javascript"></script> <script src="../js/pages/persona.js" type="text/javascript"></script>
<!--mi js--> <!--mi js-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment