lunes, 15 de abril de 2024

Entrada 5 - 15/04/24

Hora Inicio: 9 p.m

Hora Fin: 1 a.m

Horas Trabajadas: 4 horas

Modalidad: Virtual


Se crearon varios SP complementarios los cuales son los siguientes:

  • InfoBorrar: este SP lo que realiza es mostrar la información del empleado que se desea eliminar, como el nombre y documento de identidad.
  • InfoInsertarMovimiento: realiza lo mismo que el anterior, sin embargo, este también muestra el saldo de vacaciones. 
  • ListarPuesto: este SP nos ayuda a poder obtener los nombres de todos los puestos para poder mostrarlos en una lista despegable donde el usuario debe elegir uno de todos los puestos.
  • ListarTipoMovimiento: realiza lo mismo del SP anterior, pero esta muestra todos los tipos de movimientos que se pueden realizar.
  • LogOut: este SP nos ayuda para que, a la hora de presionar el botón de salir en capa lógica, esto se guarde en la bitacota de evento.
Estos fueron conectados con sus respectivas solicitudes a la base de datos, en las cuales se debió de investigar una nueva forma de paso de parámetros mediante concatenación de url. Un ejemplo de esto es el siguiente:
const fetchData = async () => {
    try {
        const response = await fetch(`http://localhost:3006/api/borrarInfo?employee=${employee}`, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }
        });
        if (!response.ok) {
            throw new Error(`Network response was not ok: ${response.statusText}`);
        }
        const result = await response.json();
        setData(result);
    } catch (error) {
        console.error('Error fetching data:', error);
        setError('Error fetching data. Please try again.');
    }
};
useEffect(() => {
    fetchData(); //Llama a la función fetchData cuando el componente se monta
}, []);
Además, el API debe de hacer uso de una query para la recepción de dichos parametros
app.get('/api/borrarInfo', async (req, res) => {

    try {
        const employee = req.query.employee; // Access the employee parameter from the query string
        const result = await infoBorrarStoredProcedure(employee);
        res.json(result);
    } catch (error) {
        console.error('Error calling infoBorrar stored procedure:', error);
        res.status(500).json({ error: 'Internal Server Error' });
    }
});

Se logró conectar todas las ventanas de la capa lógica con sus respectivos sp mediantes solicitudes a la base de datos y sus respectivas funciones dentro de la API. Además se completo una vista estructurada de cada una de ellas mediante componentes pertinentes, como las listas desplegables para los tipos puestos y tipos de movimientos.

Los SP quedaron de la siguiente manera:



Todos los SP siguen la siguiente estructura:
ALTER PROCEDURE [dbo].[InsertarEmpleado]
@OutResulTCode INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY

-- ejemplo de ejecucion del SP

-- se hacen declaraciones

-- se hacen inicializacion
SET @OutResulTCode=0;

-- se hacen validaciones

        -- inicia el código

        INSERT dbo.BitacoraEvento(
[IdTipoEvento]
, [Descripcion]
, [IdPostByUser]
, [PostInIP]
, [PostTime]
)
VALUES (
                        -- se ingresan los valores dependiendo de lo que se solicite
                        );

END TRY
BEGIN CATCH

INSERT INTO dbo.DBError VALUES (
SUSER_SNAME(),
ERROR_NUMBER(),
ERROR_STATE(),
ERROR_SEVERITY(),
ERROR_LINE(),
ERROR_PROCEDURE(),
ERROR_MESSAGE(),
GETDATE()
);

SET @OutResulTCode=50008  ;  
END CATCH;

SET NOCOUNT OFF;
END;

No hay comentarios.:

Publicar un comentario

Entrada 8 - 20/04/24

Hora Inicio: 8 p.m Hora Fin: 10 p.m Horas Trabajadas: 2 horas Modalidad: Virtual Nos reunimos para terminar los últimos detalles del proyect...