Imports DevExpress.Web

Public Class ucPreviewPostular
    Inherits ucBase

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim pString As String
        RegisterCustomMessage(cbpPostulacion)
        pString = Request.QueryString("p")
        Session("plaza") = pString
        panel2.Visible = False

        If Not IsPostBack Then

            Dim oCont As New ContadorAplicarPlazaBusinessObject(CInt(pString))

            oCont.Entity.cont = If(oCont.Entity.cont Is Nothing, 0, oCont.Entity.cont) + 1
            oCont.SaveChanges()

            'VERIFICAMOS QUE EL USUARIO SEA PARTICIPANTE
            If STP.BL.RolBusinessObject.IsInRole(CInt(Page.User.Identity.Name), 3) Then

                Dim oPlaza As New PlazaBusinessObject(CInt(pString))

                ''VERIFICAMOS QUE EL CONCURSO ESTE DISPONIBLE PARA APLICAR
                If oPlaza.Entity.idEstadoPlaza = 2 Then

                    Dim oUser As New UsuariosBusinessObject(CInt(Page.User.Identity.Name), 1)

                    SqlGrado.SelectParameters("idUsuario").DefaultValue = CInt(Page.User.Identity.Name)
                    SqlEspecialidad.SelectParameters("idUsuario").DefaultValue = CInt(Page.User.Identity.Name)
                    SqlIdioma.SelectParameters("idUsuario").DefaultValue = CInt(Page.User.Identity.Name)


                    ltlUsuario.Text = String.Format("{0} {1}", oUser.Entity.fkidTratamiento.tratamiento, oUser.Entity.apellidos)

                    ltlPlaza.Text = String.Format("{0} | {1}", oPlaza.Entity.nombrePuesto, oPlaza.Entity.Identificador)

                    If UsuariosBusinessObject.GetExperiencia(CInt(Page.User.Identity.Name)) = False Then
                        ErrorContainer2.Visible = True
                        txtError2.Text = "La experiencia no es un requisito para postular. Pero es recomendable que antes de postular, ingresar todos sus datos a su perfil si cuenta con alguna."
                    End If

                    If (oUser.Entity.vbEspecialidad = True) AndAlso (oUser.Entity.vbReferencias = True) AndAlso (Not oUser.Entity.fechanacimiento Is Nothing) AndAlso (Not oUser.Entity.direccion Is Nothing) Then
                        Dim file As String
                        For Each archivo As DataRow In UsuariosBusinessObject.ObtenerCertificados(CInt(Page.User.Identity.Name)).Tables(0).Rows
                            file = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings("RutaArchivos") & archivo(0))
                            If System.IO.File.Exists(file) = False Then
                                ErrorContainer.Visible = True
                                txtError.Text = "No existe el archivo: " & archivo(0) & " en su grado académico, favor volver a subir su archivo en la sección Formación Académica de su CV"
                                btnMiCV.ClientVisible = True
                                Exit Sub
                            Else
                                If System.IO.File.ReadAllBytes(file).Length = 0 Then
                                    ErrorContainer.Visible = True
                                    txtError.Text = "El archivo: " & archivo(0) & " no contiene bytes, favor intentar volverlo a subir en Formación Académica."
                                    btnMiCV.ClientVisible = True
                                    Exit Sub
                                End If
                            End If
                        Next


                        btnAplicar.Enabled = True
                    Else
                        ErrorContainer.Visible = True
                        txtError.Text = "Falta información importante en su currículo para postular. (Verifique que tenga: Referencias personales, alguna especialidad, y su información personal para efectos estadísticos). Favor regresar a su Curriculum."
                        btnMiCV.ClientVisible = True
                    End If

                Else
                    ErrorContainer.Visible = True
                    txtError.Text = "El Concurso no se encuentra disponible."
                End If

            Else
                ErrorContainer.Visible = True
                txtError.Text = "Ha ingresado como tipo de usuario: Técnico Institucional. El sistema no acepta que se postule."
            End If


            End If
    End Sub


    Protected Sub cbpPostulacion_Callback(sender As Object, e As DevExpress.Web.CallbackEventArgsBase) Handles cbpPostulacion.Callback
        Select Case e.Parameter.ToString
            Case "1"
                Dim errores As String = "<ul>"
                Dim existeError As Boolean = False
                Dim valorGrado As Integer = 1
                Dim valorEsp As Integer = 1
                Dim valorIdioma As Integer = 1

                If gridGrado.Visible Then
                    valorGrado = Convert.ToInt32(gridGrado.GetTotalSummaryValue(gridGrado.TotalSummary("Cumple", DevExpress.Data.SummaryItemType.Max)))
                End If
                If gridEspecialidad.Visible Then
                    valorEsp = Convert.ToInt32(gridEspecialidad.GetTotalSummaryValue(gridEspecialidad.TotalSummary("Cumple", DevExpress.Data.SummaryItemType.Max)))
                End If
                If gridIdioma.Visible Then
                    valorIdioma = Convert.ToInt32(gridIdioma.GetTotalSummaryValue(gridIdioma.TotalSummary("Cumple", DevExpress.Data.SummaryItemType.Max)))
                End If

                If valorGrado = 0 Then
                    existeError = True
                    errores += "<li>No tiene el grado académico para este puesto.</li>"
                End If

                If valorEsp = 0 Then
                    existeError = True
                    errores += "<li>No tiene la especialidad académica para este puesto.</li>"
                End If

                If valorIdioma = 0 Then
                    existeError = True
                    errores += "<li>No tiene el idioma específico para el puesto.</li>"
                End If

                If existeError Then
                    errores += "</ul> Favor revisar su Curriculum si es que tiene uno de estos requisitos para poder Aplicar."
                    CustomMessage(errores, "No puede aplicar a este concurso porque:", cbpPostulacion)
                Else
                    'TODO POSTULAR


                    If ConcursoPostulanteBusinessObject.ExistePostulacion(CInt(Page.User.Identity.Name), CInt(Session("plaza"))) Then

                        Dim _ConcursoPostulante As ConcursoPostulante = ConcursoPostulanteBusinessObject.GetConcursoPostulante(CInt(Page.User.Identity.Name), CInt(Session("plaza")))
                        lblCodigo.Text = _ConcursoPostulante.CodigoPostulante
                        lblFecha.Text = _ConcursoPostulante.fechaCreacion
                        panel1.Visible = False
                        panel2.Visible = True
                    Else
                        Dim oPlaza As New PlazaBusinessObject(CInt(Session("plaza")))
                        Dim msg As New MSG("Creacion")
                        Dim oConcursoPostulante As New ConcursoPostulanteBusinessObject()
                        oConcursoPostulante.Entity.idUsuario = CInt(Page.User.Identity.Name)
                        oConcursoPostulante.Entity.idPlaza = oPlaza.Entity.idPlaza
                        oConcursoPostulante.Entity.Identificador = oPlaza.Entity.Identificador
                        oConcursoPostulante.Entity.idEstadoConcursoPostulante = 1
                        Try
                            msg = oConcursoPostulante.SaveChanges()
                            If msg.EventType = Entity.MSG.MsgType.Success Then
                                'GENERAR REPORTE Y CORREO
                                oConcursoPostulante = New ConcursoPostulanteBusinessObject(oConcursoPostulante.Entity.idConcursoPostulante)

                                If ConfigurationManager.AppSettings("EnviarCorreo").Equals("y") Then
                                    ConcursoPostulanteBusinessObject.EnviarCodigoCorreo(CInt(Page.User.Identity.Name), oConcursoPostulante.Entity.CodigoPostulante, oPlaza.Entity.nombrePuesto)
                                End If


                                lblCodigo.Text = oConcursoPostulante.Entity.CodigoPostulante
                                lblFecha.Text = oConcursoPostulante.Entity.fechaCreacion
                                panel1.Visible = False
                                panel2.Visible = True

                            Else
                                CustomMessage(msg, "Error al tratar de crear la Postulacion al Concurso", cbpPostulacion)
                            End If
                        Catch ex As Exception
                            CustomMessage(msg, "Error al tratar de Aplicar al Concurso", cbpPostulacion)
                        End Try

                    End If



                End If
            Case Else
                Exit Select
        End Select
    End Sub

    Protected Sub grid_DataBound(sender As Object, e As EventArgs) Handles gridGrado.DataBound, gridEspecialidad.DataBound, gridIdioma.DataBound
        Dim g As ASPxGridView = TryCast(sender, ASPxGridView)
        If g.VisibleRowCount = 0 Then
            g.Visible = False
        Else
            rpIndispensables.ClientVisible = True
        End If
    End Sub

    Protected Sub grid_SummaryDisplayText(sender As Object, e As DevExpress.Web.ASPxGridViewSummaryDisplayTextEventArgs) Handles gridGrado.SummaryDisplayText, gridEspecialidad.SummaryDisplayText, gridIdioma.SummaryDisplayText
        If e.Value Is Nothing Then Return
        If e.Value = 1 Then
            e.Text = "CUMPLE"
        Else
            e.Text = "NO CUMPLE"
        End If
    End Sub

    Protected Sub grid_HtmlFooterCellPrepared(sender As Object, e As DevExpress.Web.ASPxGridViewTableFooterCellEventArgs) Handles gridGrado.HtmlFooterCellPrepared, gridEspecialidad.HtmlFooterCellPrepared, gridIdioma.HtmlFooterCellPrepared
        Dim g As ASPxGridView = TryCast(sender, ASPxGridView)
        If e.GetSummaryValue(g.TotalSummary("Cumple", DevExpress.Data.SummaryItemType.Max)) = 0 Then
            e.Cell.BackColor = Drawing.Color.IndianRed
        Else
            e.Cell.BackColor = Drawing.Color.LimeGreen
        End If
    End Sub

    'Protected Sub gridGraDeseables_DataBound(sender As Object, e As EventArgs) Handles gridGraDeseables.DataBound, gridEspDeseables.DataBound
    '    Dim g As ASPxGridView = TryCast(sender, ASPxGridView)
    '    If g.VisibleRowCount = 0 Then
    '        g.Visible = False
    '    Else
    '        rpDeseable.ClientVisible = True
    '    End If
    'End Sub

    Protected Sub gridComp_DataBound(sender As Object, e As EventArgs) Handles gridComp.DataBound
        Dim g As ASPxGridView = TryCast(sender, ASPxGridView)
        If g.VisibleRowCount = 0 Then
            g.Visible = False
        End If
    End Sub

    'Protected Sub gridGrado_HtmlFooterCellPrepared(sender As Object, e As ASPxGridViewTableFooterCellEventArgs) Handles gridGrado.HtmlFooterCellPrepared
    '    Dim g As ASPxGridView = TryCast(sender, ASPxGridView)
    '    If e.GetSummaryValue(g.TotalSummary("Cumple", DevExpress.Data.SummaryItemType.Sum)) = gridGrado.VisibleRowCount Then
    '        e.Cell.BackColor = Drawing.Color.LimeGreen

    '    Else
    '        e.Cell.BackColor = Drawing.Color.IndianRed
    '    End If
    'End Sub

    'Protected Sub gridGrado_SummaryDisplayText(sender As Object, e As ASPxGridViewSummaryDisplayTextEventArgs) Handles gridGrado.SummaryDisplayText
    '    If e.Value Is Nothing Then Return
    '    If e.Value = gridGrado.VisibleRowCount Then
    '        e.Text = "CUMPLE"
    '    Else
    '        e.Text = "NO CUMPLE"
    '    End If
    'End Sub
End Class