Sesion #8

 De 1pm hasta 4pm


Este dia primeramente se trabajo en el SP de insertar empleado.

ALTER PROCEDURE InsertarEmpleado
    @idPuesto INT,
    @valorDocumento VARCHAR(64),
    @nombre VARCHAR(64),
    @fechaContratacion DATE,
    @saldoVacaciones INT,
    @esActivo BIT,
    @idPostByUser INT,
    @inIp VARCHAR(64)

AS
BEGIN
    DECLARE @rollback BIT = 0;
    BEGIN TRANSACTION;
    BEGIN TRY
        INSERT INTO [dbo].[empleado] ([idPuesto], [valorDocumento], [nombre], [fechaContratacion], [saldoVacaciones], [esActivo])
        VALUES (@idPuesto, @valorDocumento, @nombre, @fechaContratacion, @saldoVacaciones, @esActivo);
        INSERT INTO [dbo].[bitacoraEvento]
                ([idTipoEvento],
                [descripcion],
                [idPostByUser],
                [postInIp],
                [postTime])

                VALUES (6,
                    'Doc: ' + @valorDocumento +
                    ' Nombre: ' + @nombre +
                    ' Puesto: ' + (SELECT nombre FROM puesto WHERE id = @idPuesto),
                    @idPostByUser,
                    @inIp,
                    GETDATE()
                );
        COMMIT TRANSACTION;
    END TRY
    BEGIN CATCH
        SET @rollback = 1;
        DECLARE @error_message NVARCHAR(2048) = ERROR_MESSAGE();
        DECLARE @error_number INT = ERROR_NUMBER();
        DECLARE @error_state INT = ERROR_STATE();
        DECLARE @error_severity INT = ERROR_SEVERITY();
        DECLARE @error_line INT = ERROR_LINE();
        DECLARE @error_procedure NVARCHAR(128) = ERROR_PROCEDURE();
        DECLARE @current_datetime DATETIME = GETDATE();

        INSERT INTO [dbo].[DBErrors] ([UserName], [ErrorNumber], [ErrorState], [ErrorSeverity], [ErrorLine], [ErrorProcedure], [ErrorMessage], [ErrorDateTime])
        VALUES (NULL, @error_number, @error_state, @error_severity, @error_line, @error_procedure, @error_message, @current_datetime);

        IF @rollback = 1
            ROLLBACK TRANSACTION;
    END CATCH

    IF @rollback = 0
        COMMIT TRANSACTION;
END
GO

Se crea el filtro para mostrar los datos de los empleados segun los datos ingresados.


ALTER PROCEDURE GetEmpleados
AS
BEGIN
    SET NOCOUNT ON;
    SELECT idPuesto, valorDocumento, nombre, fechaContratacion, esActivo, saldoVacaciones, id
    FROM empleado
    ORDER BY nombre ASC;
END
GO


CREATE PROCEDURE GetPuestoId
    @id INT
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * FROM puesto WHERE id = @id;
END
GO

CREATE PROCEDURE GetPuestos
AS
BEGIN
    SET NOCOUNT ON;
    SELECT id, nombre, salarioHora  FROM puesto;
END
GO

ALTER PROCEDURE GetFiltroEmpleadosDoc
    @valorDocumento int
AS
BEGIN
    SET NOCOUNT ON;
    SELECT idPuesto, valorDocumento, nombre, fechaContratacion, esActivo, saldoVacaciones, id
    FROM empleado
    WHERE CAST(valorDocumento AS VARCHAR(20)) LIKE '%' + CAST(@valorDocumento AS VARCHAR(20)) + '%'
    ORDER BY nombre ASC;

END
GO


ALTER PROCEDURE GetFiltroEmpleadosNombre
    @nombre VARCHAR(64)
AS
BEGIN
    SET NOCOUNT ON;
    SELECT idPuesto, valorDocumento, nombre, fechaContratacion, esActivo, saldoVacaciones, id
    FROM empleado
    WHERE nombre LIKE '%' + @nombre + '%'
    ORDER BY nombre ASC;
END
GO



Comentarios