Imports System.Data.SqlClient

Public Class SeleccionTitulosReportosDAO

    Dim da As SqlDataAdapter
    Dim Operaciones As New Operaciones

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

        myTrans = cn.BeginTransaction()
        Try


            Dim PosicionCreacion As Integer = 0




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

                PosicionCreacion += 1


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




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


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



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

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



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




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


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





                Dim MontoDisponible = Function()
                                          If DicRegistros.ContainsKey("MontoDisponible") Then
                                              Return DicRegistros.Item("MontoDisponible")
                                          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 MontoTitulo = Function()
                                      If DicRegistros.ContainsKey("MontoTitulo") Then
                                          Return DicRegistros.Item("MontoTitulo")
                                      Else
                                          Return 0
                                      End If
                                  End Function





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





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





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

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

                Dim CodigoReporto = Function()
                                        If DicRegistros.ContainsKey("CodigoReporto") Then
                                            Return DicRegistros.Item("CodigoReporto")
                                        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 ValorCodigoAsociado As String = CodigoAsociado().ToString
                Dim ValorNombreInstrumento As String = NombreInstrumento().ToString
                Dim ValorNombreEmpresa As String = NombreEmpresa().ToString
                Dim ValorTipoAsignacion As String = TipoAsignacion().ToString
                Dim ValorMontoInicial As Double = Operaciones.ConvertirDecimal(MontoInicial().ToString)
                Dim ValorMontoTotalUsado As Double = Operaciones.ConvertirDecimal(MontoTotalUsado().ToString)
                Dim ValorPorcentajeRestante As Double = Operaciones.ConvertirDecimal(PorcentajeRestante().ToString) / 100
                Dim ValorPorcentajeMontoUsado As Double = Operaciones.ConvertirDecimal(PorcentajeMontoUsado().ToString) / 100
                Dim ValorMontoDisponible As Double = Operaciones.ConvertirDecimal(MontoDisponible().ToString)
                Dim ValorMontoUsado As Double = Operaciones.ConvertirDecimal(MontoUsado().ToString)
                Dim ValorMontoTitulo As Double = Operaciones.ConvertirDecimal(MontoTitulo().ToString)
                Dim ValorMontoNoUsado As Double = Operaciones.ConvertirDecimal(MontoNoUsado().ToString)
                Dim ValorFechaCreado As Date = Operaciones.ConvertirFecha(FechaCreado().ToString)
                Dim ValorEstadoProceso As String = EstadoProceso().ToString
                Dim ValorAsociado As String = Asociado().ToString

                Dim ValorCodigoReporto As String = CodigoReporto().ToString
                Dim ValorIdFlujo As Integer = IdFlujo()










                sql = "INSERT INTO EspCreTit(
                                     [CodigoAsociado]
                                    ,[CodigoReporto]
                                    ,[Titulo]
                                    ,[Empresa]
                                    ,[Instrumento]
                                    ,[CodigoEstado]
                                    ,[Nombre]
                                    ,[Descrip]
                                    ,[IdFlujo]
                                    ,[PosicionCreacion]
                                    ,[TipoAsignacion]
                                    ,[MontoInicial]
                                    ,[MontoAplicadoPorcentajeCasa]
                                    ,[PorcentajeRestante]
                                    ,[PorcentajeGarantia]
                                    ,[MontoDisponible]
                                    ,[MontoUsado]
                                    ,[SaldoAplicadoTitulo]
                                    ,[SaldoValorTitulo]
                                    ,[FechaCreado]
                                    ,[EstadoProceso]



)VALUES(
                                     @CodigoAsociado
                                    ,@CodigoReporto
                                    ,@Titulo
                                    ,@Empresa
                                    ,@Instrumento
                                    ,@CodigoEstado
                                    ,@Nombre
                                    ,@Descrip
                                    ,@IdFlujo
                                    ,@PosicionCreacion

                                    ,@TipoAsignacion
                                    ,@MontoInicial
                                    ,@MontoAplicadoPorcentajeCasa
                                    ,@PorcentajeRestante
                                    ,@PorcentajeGarantia
                                    ,@MontoDisponible
                                    ,@MontoUsado
                                    ,@SaldoAplicadoTitulo
                                    ,@SaldoValorTitulo
                                    ,@FechaCreado
                                    ,@EstadoProceso

)"
                cmd = New SqlCommand
                cmd.CommandText = sql
                cmd.Connection = cn
                cmd.Transaction = myTrans
                cmd.Parameters.Add("@CodigoAsociado", SqlDbType.VarChar).Value = ValorCodigoAsociado
                cmd.Parameters.Add("@CodigoReporto", SqlDbType.VarChar).Value = ValorCodigoReporto
                cmd.Parameters.Add("@Titulo", SqlDbType.VarChar).Value = ValorNombreInstrumento
                cmd.Parameters.Add("@Empresa", SqlDbType.VarChar).Value = ValorNombreEmpresa
                cmd.Parameters.Add("@Instrumento", SqlDbType.VarChar).Value = ValorNombreInstrumento
                cmd.Parameters.Add("@CodigoEstado", SqlDbType.VarChar).Value = "TA"
                cmd.Parameters.Add("@Nombre", SqlDbType.VarChar).Value = "Titulos Asignados"
                cmd.Parameters.Add("@Descrip", SqlDbType.VarChar).Value = "Titulos Asignados(En Espera de ser Generados)"
                cmd.Parameters.Add("@IdFlujo", SqlDbType.Int).Value = ValorIdFlujo
                cmd.Parameters.Add("@PosicionCreacion", SqlDbType.Int).Value = PosicionCreacion
                cmd.Parameters.Add("@TipoAsignacion", SqlDbType.VarChar).Value = ValorTipoAsignacion
                cmd.Parameters.Add("@MontoInicial", SqlDbType.Float).Value = ValorMontoInicial
                cmd.Parameters.Add("@MontoAplicadoPorcentajeCasa", SqlDbType.Float).Value = ValorMontoTotalUsado
                cmd.Parameters.Add("@PorcentajeRestante", SqlDbType.Float).Value = ValorPorcentajeRestante
                cmd.Parameters.Add("@PorcentajeGarantia", SqlDbType.Float).Value = ValorPorcentajeMontoUsado
                cmd.Parameters.Add("@MontoDisponible", SqlDbType.Float).Value = ValorMontoDisponible
                cmd.Parameters.Add("@MontoUsado", SqlDbType.Float).Value = ValorMontoUsado
                cmd.Parameters.Add("@SaldoAplicadoTitulo", SqlDbType.Float).Value = ValorMontoTitulo
                cmd.Parameters.Add("@SaldoValorTitulo", SqlDbType.Float).Value = ValorMontoNoUsado
                cmd.Parameters.Add("@FechaCreado", SqlDbType.Date).Value = ValorFechaCreado
                cmd.Parameters.Add("@EstadoProceso", SqlDbType.VarChar).Value = ValorEstadoProceso





                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
