Imports System.Data.SqlClient
Imports BD.ABD
Imports Funcion.Funcion

Public Class Modulos
    Dim sql As String
    Dim ser As New BD.ABD
    Dim sentFuncion As New Funcion.Funcion
    Dim cmd As SqlCommand
    Dim ds As DataSet
    Dim dr As SqlDataReader
    Dim da As SqlDataAdapter
    Dim cnn As SqlConnection
    Dim myTrans As SqlTransaction
    Dim CodModulo As Long               'Para manejar el codigo del Color con el Cual se va a Guardar

    Dim strFecha As String
    Dim formato As New System.Globalization.CultureInfo("es-PY", True)
    Dim fecha, b As System.DateTime

    Public Function Insertar(ByVal DESMODULO As String, ByVal CodSistemas As String, ByVal USUARIO As Long, ByVal Codigo_De_Empresa As Long) As Boolean
        cnn = New SqlConnection
        cnn = ser.Abrir()
        'crea un comando y le asigna la conección
        Dim cmd As SqlCommand = cnn.CreateCommand()

        'comienza la Transacción y le asigna un nombre 
        'le asigna una conección al comando SQL
        'le asigna una transancción al comando SQL
        myTrans = cnn.BeginTransaction(IsolationLevel.ReadCommitted, "InsertarSistemas")
        cmd.Connection = cnn
        cmd.Transaction = myTrans
        'Maximo mas 1
        CodModulo = sentFuncion.Maximo("CODMODULO", "MODULOS") + 1

        Try
            sql = ""
            sql = "INSERT INTO MODULOS(CODMODULO, DESMODULO, USUARIO, CODSISTEMAS, FecGra, CODEMPRESA) " & _
                "VALUES ( " & CodModulo & ", '" & DESMODULO & "', " & USUARIO & ", " & CodSistemas & ", GETDATE(), " & Codigo_De_Empresa & ")"

            cmd.CommandText = sql
            cmd.ExecuteNonQuery()
            myTrans.Commit()
            'si llega hasta acá es que se ha grabado correctamente
            '#######
            '# OK  #
            '#######
            Return True
        Catch ex As Exception
            MsgBox(EX.ToString)
        Catch e As Exception
            Try
                myTrans.Rollback("InsertarMODULOS")
            Catch ex As SqlException
                If Not myTrans.Connection Is Nothing Then
                    'cuando ocurre un  error de la transacción
                    Return False
                End If
            End Try
            Return False
            'cuando ocurre un error con el comit
        Finally
            ser.Cerrar(cnn)
        End Try
    End Function

    Public Function Eliminar(ByVal codModulos As Long) As Boolean
        cnn = New SqlConnection
        cnn = ser.Abrir()
        'crea un comando y le asigna la conección
        Dim cmd As SqlCommand = cnn.CreateCommand()
        'comienza la Transacción y le asigna un nombre 
        'le asigna una conección al comando SQL
        'le asigna una transancción al comando SQL
        myTrans = cnn.BeginTransaction(IsolationLevel.ReadCommitted, "EliminarModulos")
        cmd.Connection = cnn
        cmd.Transaction = myTrans

        'busca el maximo mas uno

        Try
            'sintaxis SQL
            sql = ""
            sql = "DELETE FROM Modulos WHERE codModulo = " & codModulos & ""  'sintaxis sql
            'asigna sintaxis SQL al comando SQL y ejecuta el comando
            cmd.CommandText = sql
            cmd.ExecuteNonQuery()

            myTrans.Commit()
            'si llega hasta acá es que se ha grabado correctamente
            '#######
            '# OK  #
            '#######
            Return True
        Catch e As Exception
            Try
                myTrans.Rollback("EliminarModulos")
            Catch ex As SqlException
                If Not myTrans.Connection Is Nothing Then
                    'cuando ocurre un  error de la transacción
                    Return False
                End If
            End Try
            Return False
            'cuando ocurre un error con el comit
        Finally
            ser.Cerrar(cnn)
        End Try
    End Function 'RunSqlTransaction

    Public Function Modificar(ByVal CodModulos As Long, ByVal DESMODULOS As String, ByVal CODSISTEMAS As Long, ByVal USUARIO As Long) As Boolean
        cnn = New SqlConnection
        cnn = ser.Abrir()
        Dim cmd As SqlCommand = cnn.CreateCommand()
        'comienza la Transacción y le asigna un nombre 
        'le asigna una conección al comando SQL
        'le asigna una transancción al comando SQL
        myTrans = cnn.BeginTransaction(IsolationLevel.ReadCommitted, "ModificarModulos")
        cmd.Connection = cnn
        cmd.Transaction = myTrans

        Try
            sql = ""
            sql = "UPDATE MODULOS SET DESMODULO = '" & DESMODULOS & "', USUARIO = " & USUARIO & ", CODSISTEMAS = " & CODSISTEMAS & ", FECGRA = GETDATE () " & _
            "WHERE CODMODULO = " & CodModulos & " " 'sintaxis sql
            cmd.CommandText = sql
            cmd.ExecuteNonQuery()                             'ejecuta el comando
            myTrans.Commit()
            'si llega hasta acá es que se ha grabado correctamente
            '#######
            '# OK  #
            '#######

            Return True
        Catch e As Exception
            Try
                myTrans.Rollback("ModificarModulos")
            Catch ex As SqlException
                If Not myTrans.Connection Is Nothing Then
                    'cuando ocurre un  error de la transacción
                    Return False
                End If
            End Try
            Return False
            'cuando ocurre un error con el comit
        Finally
            ser.Cerrar(cnn)
        End Try
    End Function
   
    Public Function DsRecorrerCodigo(ByVal Codigo_De_Empresa As Long) As DataSet
        cnn = New SqlConnection
        Dim ser As BD.ABD
        ser = New BD.ABD
        cnn = ser.Abrir()
        da = New SqlDataAdapter
        da = New SqlDataAdapter("SELECT CODMODULO As CODMODULO FROM MODULOS WHERE CODEMPRESA = " & Codigo_De_Empresa & "", cnn)
        ds = New DataSet
        da.Fill(ds)
        ser.Cerrar(cnn)
        Return ds
    End Function

    Public Function DsRecorrerDescripcion(ByVal Codigo_De_Modulos As Long, ByVal Codigo_De_Empresa As Long) As DataSet
        cnn = New SqlConnection
        cnn = ser.Abrir()
        da = New SqlDataAdapter
        sql = ""
        sql = "SELECT RTRIM(M.CODMODULO)AS CODMODULO, RTRIM(M.DESMODULO) AS DESMODULO, RTRIM(S.DESSISTEMAS)AS DESSISTEMAS, RTRIM(M.CODSISTEMAS)AS CODSISTEMAS, RTRIM(S.NUMSISTEMAS) AS NUMSISTEMAS, RTRIM(M.USUARIO)AS USUARIO " & _
             "FROM MODULOS M, SISTEMAS S  WHERE  M.CODMODULO = " & Codigo_De_Modulos & " AND M.CODSISTEMAS = S.CODSISTEMAS AND M.CodEmpresa = " & Codigo_De_Empresa & " "
        da = New SqlDataAdapter(sql, cnn)
        ds = New DataSet
        da.Fill(ds)
        ser.Cerrar(cnn)
        Return ds
    End Function

End Class