Imports dGen.Library.Enums.QueryEnums.QueryOperatorEnum
Imports dGen.Library.Enums.QueryEnums.CompareEnum
Partial Class PlazaDbHelper

#Region "Metodos Personalizados"
    ' Definir en esta region los metodos personalizados para el DbHelper
    Public Function ExecuteCopiaPuestoFuncional(idPlaza As Integer, COD_INSPTO As String) As MSG
        Dim msg As New MSG("SetPuestoFuncional")

        Try
            Dim QueryObject = Me.CreateQueryObject

            'QueryObject.CreateQuery("declare @paramOutput")
            QueryObject.CreateQuery("execute CopiaPuestoFuncional @idPlaza, @cod_inspto")
            QueryObject.AddParameter("@idPlaza", SqlDbType.Int, idPlaza)
            QueryObject.AddParameter("@cod_inspto", SqlDbType.VarChar, COD_INSPTO)

            msg = QueryObject.ExecuteNonQuery
            Return msg
        Catch ex As Exception
            msg.FriendlyMessage = "No fue posible guardar la informacion de la plaza"
            msg.TechnicalMessage = ex.Message
            Return msg
        End Try

    End Function

    Public Function ExecuteCopiaPuestoDesdeDotacion(idPlaza As Integer, COD_INSPTO As String) As MSG
        Dim msg As New MSG("SetPuestoFuncional")

        Try
            Dim QueryObject = Me.CreateQueryObject

            'QueryObject.CreateQuery("declare @paramOutput")
            QueryObject.CreateQuery("execute CopiaPuestoDesdeDotacion @idPlaza, @cod_inspto")
            QueryObject.AddParameter("@idPlaza", SqlDbType.Int, idPlaza)
            QueryObject.AddParameter("@cod_inspto", SqlDbType.VarChar, COD_INSPTO)

            msg = QueryObject.ExecuteNonQuery
            Return msg
        Catch ex As Exception
            msg.FriendlyMessage = "No fue posible guardar la informacion de la plaza"
            msg.TechnicalMessage = ex.Message
            Return msg
        End Try

    End Function

    Public Function ExecuteCreacionConfiguracion(idPlaza As Integer, idUsuario As Integer) As MSG
        Dim msg As New MSG("Configuracion")

        Try
            Dim QueryObject = Me.CreateQueryObject

            'QueryObject.CreateQuery("declare @paramOutput")
            QueryObject.CreateQuery("execute ADMIN_crearEvaluacion @idPlaza, @idUsuario")
            QueryObject.AddParameter("@idPlaza", SqlDbType.Int, idPlaza)
            QueryObject.AddParameter("@idUsuario", SqlDbType.Int, idUsuario)

            msg = QueryObject.ExecuteNonQuery
            Return msg
        Catch ex As Exception
            msg.FriendlyMessage = "No fue posible hacer los registros de configuración"
            msg.TechnicalMessage = ex.Message
            Return msg
        End Try

    End Function

    Public Function ExecuteCreacionRegistrosConfiguracion(idPlaza As Integer, idUsuario As Integer) As MSG
        Dim msg As New MSG("Configuracion")

        Try
            Dim QueryObject = Me.CreateQueryObject

            'QueryObject.CreateQuery("declare @paramOutput")
            QueryObject.CreateQuery("execute ADMIN_CrearRegistrosPostulantesSegunEvaluacion @idPlaza, @idUsuario")
            QueryObject.AddParameter("@idPlaza", SqlDbType.Int, idPlaza)
            QueryObject.AddParameter("@idUsuario", SqlDbType.Int, idUsuario)

            msg = QueryObject.ExecuteNonQuery
            Return msg
        Catch ex As Exception
            msg.FriendlyMessage = "No fue posible hacer los registros de para las calificación según configuración"
            msg.TechnicalMessage = ex.Message
            Return msg
        End Try

    End Function


    'exec [CrearConcursoPostulanteMuestra] 686, 5203
    Public Function ExecuteCrearConcursoPostulanteMuestra(idPlaza As Integer, idUsuario As Integer) As MSG
        Dim msg As New MSG("Configuracion")

        Try
            Dim QueryObject = Me.CreateQueryObject

            'QueryObject.CreateQuery("declare @paramOutput")
            QueryObject.CreateQuery("execute CrearConcursoPostulanteMuestra @idPlaza, @idUsuario")
            QueryObject.AddParameter("@idPlaza", SqlDbType.Int, idPlaza)
            QueryObject.AddParameter("@idUsuario", SqlDbType.Int, idUsuario)

            msg = QueryObject.ExecuteNonQuery
            Return msg
        Catch ex As Exception
            msg.FriendlyMessage = "No fue posible hacer los registros de para las calificación según configuración"
            msg.TechnicalMessage = ex.Message
            Return msg
        End Try

    End Function

    Public Function GetTotalEmpleosActuales() As Integer
        Dim QueryObject = Me.CreateQueryObject
        QueryObject.CreateQuery("select COUNT(*) from Plaza where idEstadoPlaza=2 and (fechaInicioInscripcion <= GETDATE()) and idInstitucion not in ('AA') and idConvocatoria<>'C1'")
        Return QueryObject.ExecuteScalar()
    End Function

    Public Function GetTotalVacantesActuales() As Integer
        Dim QueryObject = Me.CreateQueryObject
        QueryObject.CreateQuery("select isnull(sum(vacantes),0) from Plaza where idEstadoPlaza=2 and (fechaInicioInscripcion <= GETDATE()) and idInstitucion not in ('AA') and idConvocatoria<>'C1'")
        Return QueryObject.ExecuteScalar()
    End Function

    Public Function GetTotalConcursos() As Integer
        Dim QueryObject = Me.CreateQueryObject
        QueryObject.CreateQuery(" select COUNT(*) from Plaza where idEstadoPlaza<>1 and idInstitucion not in ('AA') and idConvocatoria<>'C1' and (fechaInicioInscripcion <= GETDATE())")
        Return QueryObject.ExecuteScalar()
    End Function


    Public Function GetTotalSalario() As Double
        Dim QueryObject = Me.CreateQueryObject
        QueryObject.CreateQuery("select sum(salario * vacantes) from Plaza where idEstadoPlaza not in (1,7) and idInstitucion not in ('AA') and idConvocatoria<>'C1' and (fechaInicioInscripcion <= GETDATE())")
        Return QueryObject.ExecuteScalar()
    End Function

    Public Function ExecuteEstadoConcursos(idInstitucion As String) As String

        Dim QueryObject = Me.CreateQueryObject

        'QueryObject.CreateQuery("declare @paramOutput")
        QueryObject.CreateQuery("execute EstadoConcursos @idIns")
        QueryObject.AddParameter("@idIns", SqlDbType.VarChar, idInstitucion)

        Return QueryObject.ExecuteScalar()
    End Function

    Public Function GetAnalytics() As Integer
        Dim QueryObject = Me.CreateQueryObject
        QueryObject.CreateQuery("select top 1 paginasVistas from GoogleAnalytics")
        Return QueryObject.ExecuteScalar()
    End Function

    Public Function ExisteIndispensable(idPlaza As Integer) As Boolean
        Dim QueryObject = Me.CreateQueryObject
        QueryObject.CreateQuery("select count(*) from GOES_Grado where idplaza=@idPlaza and REQ_CODIGO=2")
        QueryObject.AddParameter("@idPlaza", SqlDbType.Int, idPlaza)
        If QueryObject.ExecuteScalar() > 0 Then
            Return True
        Else
            Return False
        End If
    End Function

#End Region
End Class
