
Imports System.Data.SqlClient
Public Class PoolTitulosDAO


    Dim Operaciones As New Operaciones


    Function NuevoCodigo()

        Dim objCon As New Conexion
        Dim valor As String = String.Empty
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If




        Dim sql = "[dbo].[SP_GenerarCodigoAsociacion]"


        Dim cmd As New SqlCommand(sql, cn)
        cmd.CommandType = CommandType.StoredProcedure
        valor = cmd.ExecuteScalar
        cmd.Dispose()




        cn.Dispose()

        Return valor

    End Function

    Public Function FiltroReportoVenta(ByRef FechaVenOperacion1 As String, ByRef FechaVenOperacion2 As String, ByRef Estado As String, ByRef Empresa As String, ByRef Instrumento As String) As DataSet
        Dim objCon As New Conexion
        Dim da As New SqlDataAdapter
        Dim ds As New DataSet
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If

        Dim sql = "[dbo].[SP_PoolTitulos]"


        Dim cmd As New SqlCommand(sql, cn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@FechaOperacion1", SqlDbType.Date).Value = Operaciones.ConvertirFechaBaseDatos(FechaVenOperacion1)
        cmd.Parameters.Add("@FechaOperacion2", SqlDbType.Date).Value = Operaciones.ConvertirFechaBaseDatos(FechaVenOperacion2)
        cmd.Parameters.Add("@Empresa", SqlDbType.VarChar).Value = Empresa
        cmd.Parameters.Add("@Instrumento", SqlDbType.VarChar).Value = Instrumento
        cmd.Parameters.Add("@Estado", SqlDbType.VarChar).Value = Estado
        da = New SqlDataAdapter(cmd)

        da.Fill(ds)
        cn.Close()
        Return ds
    End Function

    Public Function ProcesoDatos(ByVal Coleccion As Collection)
        Dim objCon As New Conexion
        Dim retorno As Integer
        Dim sql As String
        Dim cmd As SqlCommand
        Dim myTrans As SqlTransaction
        Dim cn As SqlConnection = objCon.Conectar
        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        myTrans = cn.BeginTransaction()
        Try







            For Each DicRegistros As Dictionary(Of String, Object) In Coleccion


                Dim CodigoTitulo = Function()
                                       If DicRegistros.ContainsKey("CodigoTitulo") Then
                                           Return DicRegistros.Item("CodigoTitulo")
                                       Else
                                           Return String.Empty
                                       End If
                                   End Function




                Dim CodigoAsociacion = Function()
                                           If DicRegistros.ContainsKey("CodigoAsociacion") Then
                                               Return DicRegistros.Item("CodigoAsociacion")
                                           Else
                                               Return String.Empty
                                           End If
                                       End Function


                Dim Instrumento = Function()
                                      If DicRegistros.ContainsKey("Instrumento") Then
                                          Return DicRegistros.Item("Instrumento")
                                      Else
                                          Return String.Empty
                                      End If
                                  End Function

                Dim Empresa = Function()
                                  If DicRegistros.ContainsKey("Empresa") Then
                                      Return DicRegistros.Item("Empresa")
                                  Else
                                      Return String.Empty
                                  End If
                              End Function



                Dim MontoTotal = Function()
                                     If DicRegistros.ContainsKey("MontoTotal") Then
                                         Return DicRegistros.Item("MontoTotal")
                                     Else
                                         Return 0
                                     End If
                                 End Function

                Dim MontoUsado = Function()
                                     If DicRegistros.ContainsKey("MontoUsado") Then
                                         Return DicRegistros.Item("MontoUsado")
                                     Else
                                         Return 0
                                     End If
                                 End Function



                Dim Porcentaje = Function()
                                     If DicRegistros.ContainsKey("Porcentaje") Then
                                         Return DicRegistros.Item("Porcentaje")
                                     Else
                                         Return 0
                                     End If
                                 End Function





                Dim FechaCreacion = Function()
                                        If DicRegistros.ContainsKey("FechaCreacion") Then
                                            Return DicRegistros.Item("FechaCreacion")
                                        Else
                                            Return Date.Now.Date
                                        End If
                                    End Function



                Dim Asociado = Function()
                                   If DicRegistros.ContainsKey("Asociado") Then
                                       Return DicRegistros.Item("Asociado")
                                   Else
                                       Return String.Empty
                                   End If
                               End Function

                Dim IdFlujo = Function()
                                  If DicRegistros.ContainsKey("IdFlujo") Then
                                      Return DicRegistros.Item("IdFlujo")
                                  Else
                                      Return 0
                                  End If
                              End Function


                Dim IdEspLR = Function()
                                  If DicRegistros.ContainsKey("IdEspLR") Then
                                      Return DicRegistros.Item("IdEspLR")
                                  Else
                                      Return 0
                                  End If
                              End Function




                Dim ValorCodigoTitulo As String = CodigoTitulo().ToString
                Dim ValorCodigoAsociacion As String = CodigoAsociacion().ToString
                Dim ValorInstrumento As String = Instrumento().ToString
                Dim ValorEmpresa As String = Empresa().ToString
                Dim ValorMontoTotal As Double = Operaciones.ConvertirDecimal(MontoTotal().ToString)
                Dim ValorMontoUsado As Double = Operaciones.ConvertirDecimal(MontoUsado().ToString)
                Dim ValorPorcentaje As Double = Operaciones.ConvertirDecimal(Porcentaje().ToString)
                Dim ValorFechaCreacion As Date = Operaciones.ConvertirFecha(FechaCreacion().ToString)
                Dim ValorAsociado As String = Asociado().ToString
                Dim ValorIdFlujo As Integer = Operaciones.ConvertirEntero(IdFlujo().ToString)
                Dim ValorIdEspLR As Integer = Operaciones.ConvertirEntero(IdEspLR().ToString)









                '###########################################################'
                sql = "INSERT INTO [dbo].[ListTitREPO](
                [CodigoAsociado]
               ,[CodigoTitulos]
               ,[CodigoEstado]
               ,[Nombre]
               ,[Descrip]
               ,[MontoTotal]
               ,[MontoUsado]
               ,[Porcentaje]
               ,[FechaCreacion]
               ,[IdFlujo]
               ,[IdEspLR]


) VALUES(
                @CodigoAsociado
               ,@CodigoTitulos
               ,@CodigoEstado
               ,@Nombre
               ,@Descrip
               ,@MontoTotal
               ,@MontoUsado
               ,@Porcentaje
               ,@FechaCreacion
               ,@IdFlujo
               ,@IdEspLR
  
)
    "

                cmd = New SqlCommand
                cmd.CommandText = sql
                cmd.Connection = cn
                cmd.Transaction = myTrans
                With cmd.Parameters










                    .Add("@CodigoAsociado", SqlDbType.VarChar).Value = ValorCodigoAsociacion
                    .Add("@CodigoTitulos", SqlDbType.VarChar).Value = ValorCodigoTitulo
                    .Add("@CodigoEstado", SqlDbType.VarChar).Value = "GRESP"
                    .Add("@Nombre", SqlDbType.VarChar).Value = "Lista Titulos"
                    .Add("@Descrip", SqlDbType.VarChar).Value = "Lista de Titulos en Espera de Reportear"
                    .Add("@IdFlujo", SqlDbType.VarChar).Value = ValorIdFlujo
                    .Add("@IdEspLR", SqlDbType.VarChar).Value = ValorIdEspLR



                    .Add("@MontoTotal", SqlDbType.Float).Value = ValorMontoTotal
                    .Add("@MontoUsado", SqlDbType.Float).Value = ValorMontoUsado
                    .Add("@Porcentaje", SqlDbType.Float).Value = ValorPorcentaje
                    .Add("@FechaCreacion", SqlDbType.Date).Value = ValorFechaCreacion
                End With

                retorno = cmd.ExecuteNonQuery

                '#########################################################'



                sql = "UPDATE IniFlu SET 
                        [CodigoAsociado]=@CodigoAsociado
                        where [IdFlujo]=@IdFlujo AND [CodigoTitulo]=@CodigoTitulo
"

                cmd = New SqlCommand
                cmd.CommandText = sql
                cmd.Connection = cn
                cmd.Transaction = myTrans
                With cmd.Parameters
                    .Add("@CodigoAsociado", SqlDbType.VarChar).Value = ValorCodigoAsociacion
                    .Add("@IdFlujo", SqlDbType.VarChar).Value = ValorIdFlujo
                    .Add("@CodigoTitulo", SqlDbType.VarChar).Value = ValorCodigoTitulo

                End With

                retorno = cmd.ExecuteNonQuery
            Next






            ''''''''''''''''''












            myTrans.Commit()
            MsgBox("Datos Ingresados")
        Catch ex As Exception
            myTrans.Rollback()
            MsgBox(ex.Message)
        End Try
        cn.Close()

        Return retorno


    End Function
End Class
