Sesión #7
De 2pm hasta 7pm
Se corrigió el problema de la SP, estaba a la hora de leer los datos de usuario y movimiento del xml
Se logró realizar la carga masiva de los datos proporcionados por los compañeros y están listos para continuar con el desarrollo
INSERT INTO usuario (id, username, password)
SELECT
usuario.value('@Id', 'int') AS id,
usuario.value('@Nombre', 'varchar(64)') AS username,
usuario.value('@Pass', 'varchar(64)') AS password
FROM @DatosXML.nodes('/Datos/Usuarios/usuario') AS Tbl(usuario);
INSERT INTO movimiento (idEmpleado, idTipoMovimiento, fecha, monto, nuevoSaldo, idPostByUser, postInIp, postTime)
SELECT
(SELECT id FROM empleado WHERE valorDocumento = movimiento.value('@ValorDocId', 'int')) AS idEmpleado,
(SELECT id FROM tipoMovimiento WHERE nombre = movimiento.value('@IdTipoMovimiento', 'varchar(64)')) AS idTipoMovimiento,
movimiento.value('@Fecha', 'datetime') AS fecha,
movimiento.value('@Monto', 'int') AS monto,
0 AS nuevoSaldo,
(SELECT id FROM usuario WHERE username = movimiento.value('@PostByUser', 'varchar(64)')) AS idPostByUser,
movimiento.value('@PostInIP', 'varchar(64)') AS postInIp,
movimiento.value('@PostTime', 'datetime') AS postTime
FROM @DatosXML.nodes('/Datos/Movimientos/movimiento') AS Tbl(movimiento);
Se crearon SP para manejar el inicio de sesión y la inserción de empleados
CREATE PROCEDURE ValidarCredenciales
@username VARCHAR(64),
@password VARCHAR(64)
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM usuario WHERE username = @username AND password = @password)
BEGIN
SELECT 'Usuario válido' AS Estado;
END
ELSE
BEGIN
SELECT 'Usuario inválido' AS Estado;
END
END
GO
CREATE PROCEDURE InsertarEmpleado
@IdPuesto VARCHAR(50),
@ValorDocumentoIdentidad NVARCHAR(50),
@Nombre VARCHAR(50),
@FechaContratacion DATE,
@SaldoVacaciones INT,
@EsActivo BIT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO empleado (IdPuesto, ValorDocumentoIdentidad, Nombre, FechaContratacion, SaldoVacaciones, EsActivo)
VALUES (@IdPuesto, @ValorDocumentoIdentidad, @Nombre, @FechaContratacion, @SaldoVacaciones, @EsActivo);
END
GO
Todavía no están terminados, solo se crearon para probar datos, posteriormente se les incluirá un manejo de errores.
Por el lado del servidor, se agregaron las rutas para acceder a los SP con los datos enviados de la página web
@app.route('/validar', methods=['GET'])
def validar_credenciales():
username = request.args.get('username')
password = request.args.get('password')
resultado = ejecutar_stored_procedure('ValidarCredenciales', f"'{username}', '{password}'")
if resultado[0][0] == 'Usuario válido':
print('Usuario válido')
return redirect(url_for('pagina_exitosa'))
else:
return redirect(url_for('pagina_error'))
@app.route('/exitoso', methods=['GET'])
def pagina_exitosa():
return redirect('\..\Paginaweb\index.html')
@app.route('/error', methods=['GET'])
def pagina_error():
return redirect('/error.html')
@app.route('/insertar', methods=['POST'])
def insertar_empleado():
idPuesto = 1
ValorDocumentoIdentidad = 1111
nombre = "Nombre"
FechaContratacion = "2021-01-01"
SaldoVacaiones = 0
EsActivo = 1
ejecutar_stored_procedure('InsertarEmpleado', f"{idPuesto}, {ValorDocumentoIdentidad}, '{nombre}', '{FechaContratacion}', {SaldoVacaiones}, {EsActivo}")
return jsonify({'mensaje': 'Empleado insertado correctamente'})
Comentarios
Publicar un comentario