Public Class ucRegistro
    Inherits ucBase

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        RegisterCustomMessage(cbpRegistro)
    End Sub

    Protected Sub cbpRegistro_Callback(sender As Object, e As DevExpress.Web.CallbackEventArgsBase) Handles cbpRegistro.Callback
        Dim msg As New MSG("SaveChanges")

        Try


            Dim oUsuario As New UsuariosBusinessObject()
            'oUsuario.Entity.login = Replace(txtDUI.Text, "-", "")


            oUsuario.Entity.documento = CBool(tipoDoc.Value)
            If tipoDoc.Value = 0 Then
                oUsuario.Entity.login = txtDUI.Text.Trim
                oUsuario.Entity.DUI = txtDUI.Text.Trim
                oUsuario.Entity.clave = txtDUI.Text.Trim
            Else
                oUsuario.Entity.login = txtResidente.Text.Trim
                oUsuario.Entity.carneExtranjero = txtResidente.Text.Trim
                oUsuario.Entity.clave = txtResidente.Text.Trim
            End If
            oUsuario.Entity.nombres = StrConv(txtNombres.Text, VbStrConv.ProperCase)
            oUsuario.Entity.apellidos = StrConv(txtApellidos.Text, VbStrConv.ProperCase)
            oUsuario.Entity.email = LCase(txtEmail.Text)

            'oUsuario.Entity.codigoTrans = UsuariosBusinessObject.GenerateRandomString(6)
            oUsuario.Entity.estado = 0

            'No existe usuario logeado por lo que se genera la información del UserInfo con el id Usuario que lo solicita
            Dim userinfo As New UserInfo(1, 1, False)
            Dim dGenPrincipal As New dGenPrincipal(userinfo)
            Threading.Thread.CurrentPrincipal = dGenPrincipal

            Transaction.Begin()
            msg = oUsuario.SaveChanges()

            If msg.EventType = dGen.Library.Entity.MSG.MsgType.Errors Then
                Transaction.RollBack()
                CustomMessage("Este usuario Ya ha sido registrado en el Sistema. Favor intentar Recuperar su clave en las opciones de inicio de Sesión", "Error de registro", cbpRegistro)
                Exit Sub
            End If

            'Cambiamos el USERINFO al propio usuario creado
            'userinfo = New UserInfo(oUsuario.Entity.idUsuario, oUsuario.Entity.idUsuario, False)
            'dGenPrincipal = New dGenPrincipal(userinfo)
            'Threading.Thread.CurrentPrincipal = dGenPrincipal

            Dim oRolUsuario As New RolUsuarioBusinessObject()
            oRolUsuario.Entity.idRol = 3
            oRolUsuario.Entity.idUsuario = oUsuario.Entity.idUsuario
            oRolUsuario.SaveChanges()

            If msg.EventType = dGen.Library.Entity.MSG.MsgType.Errors Then
                Transaction.RollBack()
                CustomMessage("Ya se ha intentado agregar este rol.", "Error de registro", cbpRegistro)
                Exit Sub
            End If


            msg = UsuariosBusinessObject.EnviarActivacionCorreo(oUsuario.Entity.idUsuario)
            If msg.EventType = dGen.Library.Entity.MSG.MsgType.Success Then
                Transaction.Commit()
                CustomMessage("Se ha enviado una validación a su correo electrónico", "REGISTRO CON ÉXITO", cbpRegistro)
                ASPxFormLayout1.Visible = False
                ltlMensaje.Visible = True
                ltlMensaje.Text = "Se ha enviado una validación a su correo electrónico. Recuerda revisar tu correo Spam o Correo No deseado.<br />Agregar como remitente seguro a: <b>" & ConfigurationManager.AppSettings("smtpUser") & "</b>."
            Else
                Transaction.RollBack()
                CustomMessage(msg, "Error de registro", cbpRegistro)
                ltlMensaje.Visible = True
                ltlMensaje.Text = "Hubo un error en su validación."
                Exit Sub
            End If


        Catch ex As Exception
            Transaction.RollBack()
            CustomMessage(msg, "Error de registro", cbpRegistro)
            ltlMensaje.Visible = True
            ltlMensaje.Text = "Hubo un error en su validación."
        End Try

    End Sub

End Class