protected void btnNuevaCarpeta_Click(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(txtNuevaCarpetaNombre.Text))
                {
                    //ILogicaCarpetas lc = FabricaLogica.getLogicaCarpetas();
                    ServiceWebMail sm = new ServiceWebMail();

                    Carpeta c = new Carpeta();
                    SiteAlumno master = (SiteAlumno)Master;
                    c.NOMBRE_CARPETA = txtNuevaCarpetaNombre.Text;
                    c.USUARIO = master.USUARIO_LOGUEADO;
                    //lc.AgregarCarpeta(c);
                    sm.AgregarCarpeta(c);
                    RefreshFolders();
                    lblInfo.Text = "Carpeta creada";
                    txtNuevaCarpetaNombre.Text = "";
                }
                else
                {
                    lblInfo.Text = "Ingrese un nombre de carpeta";
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        protected void ddlFolders_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                //ILogicaEmails le = FabricaLogica.getLogicaEmails();
                ServiceWebMail sm = new ServiceWebMail();

                Carpeta current = (Carpeta)Session["Carpeta"];
                if (current != null)
                {
                    //le.MoverEmail(Convert.ToInt32(Session["EmailId"]), current.NUMERO_CARPETA, Convert.ToInt32(ddlFolders.SelectedValue));

                    refServiceWebMail.Email email = new refServiceWebMail.Email();
                    email.NUMERO_EMAIL = Convert.ToInt32(Session["EmailId"]);
                    Carpeta cdestino = new Carpeta {NUMERO_CARPETA = Convert.ToInt32(ddlFolders.SelectedValue)};
                    //le.MoverEmail(email, current, cdestino);
                    sm.MoverEmail(email, current, cdestino);
                    lblInfo.Text = "El email se movio a la carpeta " + ddlFolders.SelectedItem.Text;
                }

            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        /// <summary>
        /// ENVIA UN EMAIL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                //ILogicaEmails le = FabricaLogica.getLogicaEmails();
                ServiceWebMail sm = new ServiceWebMail();

                SiteAlumno m = Master;
                if (m != null && m.USUARIO_LOGUEADO != null)
                {
                    Alumno a = (Alumno)m.USUARIO_LOGUEADO;

                    refServiceWebMail.Email newEmail = new refServiceWebMail.Email
                                                   {
                                                       CUERPO = txtContenido.Text,
                                                       FECHA = DateTime.Now,
                                                       ASUNTO = txtAsunto.Text
                                                   };
                    Alumno destinatario = new Alumno {NOMBRE_USUARIO = txtPara.Text};

                    //le.AgregarEmail(txtAsunto.Text, txtContenido.Text, a, txtPara.Text);
                    //le.AgregarEmail(newEmail, a, destinatario);
                    sm.AgregarEmail(newEmail, a, destinatario);
                    Response.Redirect("~/AdminAlumno/home.aspx");
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        protected void EmailListRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            try
            {
                //ILogicaEmails le = FabricaLogica.getLogicaEmails();
                ServiceWebMail sm = new ServiceWebMail();
                if (e.CommandName.ToUpper() == "VER")
                {
                    //OBTENEMOS EL EMAIL
                    //------------------
                    if (Session["EmailId"] == null)
                    {
                        Session.Add("EmailId", e.CommandArgument);
                    }
                    else
                    {
                        Session["EmailId"] = e.CommandArgument;
                    }
                    //MARCAR EMAIL COMO LEIDO
                    //-----------------------
                    //le.MarcarEmailLeido(Convert.ToInt32(e.CommandArgument), CARPETA.NUMERO_CARPETA);
                    refServiceWebMail.Email email = new refServiceWebMail.Email { NUMERO_EMAIL = Convert.ToInt32(e.CommandArgument) };
                    //le.MarcarEmailLeido(email, CARPETA);
                    sm.MarcarEmailLeido(email,CARPETA);

                    Response.Redirect("~/AdminAlumno/Email.aspx", false);
                }
                else if (e.CommandName.ToUpper() == "ELIMINAR")
                {
                    //le.EliminarEmail(Convert.ToInt32(e.CommandArgument), CARPETA.NUMERO_CARPETA, ((Alumno)Session["Usuario"]).CI);
                    refServiceWebMail.Email email = new refServiceWebMail.Email { NUMERO_EMAIL = Convert.ToInt32(e.CommandArgument) };
                    CARPETA.USUARIO = ((Alumno)Session["Usuario"]);
                    //le.EliminarEmail(email, CARPETA);
                    sm.EliminarEmail(email,CARPETA);
                    lblInfo.Text = "Email eliminado";
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        protected void FolderListRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            try
            {
                //ILogicaCarpetas lc = FabricaLogica.getLogicaCarpetas();
                ServiceWebMail sm = new ServiceWebMail();

                if (e.CommandName.ToUpper() == "CONSULTAR")
                {
                    //TRAEMOS TODOS LOS EMAILS DE ESA CARPETA
                    //---------------------------------------
                    //Carpeta currentFolder = lc.GetCarpeta(Convert.ToInt32(e.CommandArgument),((Alumno) Session["Usuario"]).CI);
                    Carpeta c = new Carpeta
                                    {
                                        NUMERO_CARPETA = Convert.ToInt32(e.CommandArgument),
                                        USUARIO = ((Alumno) Session["Usuario"])
                                    };
                    //Carpeta currentFolder = lc.GetCarpeta(c);
                    Carpeta currentFolder = sm.GetCarpeta(c);

                    ConsultaCarpeta.CARPETA = currentFolder;
                }
                else if (e.CommandName.ToUpper() == "ELIMINAR")
                {

                    //ELIMINAMOS LA CARPETA SELECCIONADA
                    //----------------------------------
                    Carpeta c = new Carpeta();
                    c.NUMERO_CARPETA = Convert.ToInt32(e.CommandArgument);
                    //lc.EliminarCarpeta(Convert.ToInt32(e.CommandArgument));
                    //lc.EliminarCarpeta(c);
                    sm.EliminarCarpeta(c);

                    lblInfo.Text = "Carpeta Eliminada";
                    RefreshFolders();
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        public void RefreshFolders()
        {
            try
            {
                //ILogicaCarpetas lc = FabricaLogica.getLogicaCarpetas();
                ServiceWebMail sm = new ServiceWebMail();

                SiteAlumno master = (SiteAlumno)Master;
                if (master != null)
                {
                    //FolderListRepeater.DataSource = lc.ListarCarpetas((Alumno)master.USUARIO_LOGUEADO);
                    FolderListRepeater.DataSource = sm.ListarCarpetas((Alumno)master.USUARIO_LOGUEADO);

                    FolderListRepeater.DataBind();
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        //protected void btnLogin_Click(object sender, EventArgs e)
        //{
        //try
        //{
        //    //ILogicaUsuario LogicaUsuario = FabricaLogica.getLogicaUsuario();
        //    ServiceWebMail sm = new ServiceWebMail();
        //    //Usuario NuevoUsuario = LogicaUsuario.getLoginUsuario(txtUsuario.Text, txtPass.Text);
        //    Usuario NuevoUsuario = sm.getLoginUsuario(txtUsuario.Text, txtPass.Text);
        //    USUARIO_LOGUEADO = NuevoUsuario;
        //    if (NuevoUsuario != null)
        //    {
        //        if (NuevoUsuario is Alumno)
        //            Response.Redirect("~/AdminAlumno/home.aspx");
        //        else if (NuevoUsuario is Docente) Response.Redirect("~/AdminDocente/HomeDocente.aspx");
        //    }
        //    else
        //    {
        //        lblError.Text = "El usuario o contraseña ingresados no son validos. Media pila! ...";
        //    }
        //}
        ////catch (ErrorAlumnoBloqueado ex)
        ////{
        ////    lblError.Text =  ex.Message;
        ////}
        ////catch (ErrorUsuarioContraseñaIncorrecto ex)
        ////{
        ////    lblError.Text = ex.ToString();
        ////}
        //catch (Exception ex)
        //{
        //    lblError.Text = ex.Message;
        //}
        //}
        protected void LoginUser_LoggingIn(object sender, LoginCancelEventArgs e)
        {
            try
            {
                //ILogicaUsuario LogicaUsuario = FabricaLogica.getLogicaUsuario();
                ServiceWebMail sm = new ServiceWebMail();
                //Usuario NuevoUsuario = LogicaUsuario.getLoginUsuario(txtUsuario.Text, txtPass.Text);
                Usuario NuevoUsuario = sm.getLoginUsuario(LoginUser.UserName, LoginUser.Password);

                USUARIO_LOGUEADO = NuevoUsuario;
                if (NuevoUsuario != null)
                {
                    if (NuevoUsuario is Alumno)
                        Response.Redirect("~/AdminAlumno/home.aspx");
                    //else if (NuevoUsuario is Docente) Response.Redirect("~/AdminDocente/HomeDocente.aspx");
                }
                else
                {
                    lblError.Text = "El usuario o contraseña ingresados no son validos. Media pila! ...";
                }
            }
            //catch (ErrorAlumnoBloqueado ex)
            //{
            //    lblError.Text = ex.Message;
            //}
            //catch (ErrorUsuarioContraseñaIncorrecto ex)
            //{
            //    lblError.Text = ex.ToString();
            //}
            catch (SoapException exsoap)
            {
                lblError.Text = !string.IsNullOrEmpty(exsoap.Actor) ? exsoap.Actor : exsoap.Message;
            }
            catch (Exception ex)
            {

                lblError.Text = ex.Message;
            }
        }
        protected void Page_PreRender(object sender, EventArgs e)
        {
            try
            {
                //CARGA EL TITULO DE LA CARPETA
                lblFolderName.Text = CARPETA.NOMBRE_CARPETA;

                //CARGA LOS EMAILS EN FUNCION DE LA PROPIEDAD CODIGO_CARPETA
                //----------------------------------------------------------
                //ILogicaEmails le = FabricaLogica.getLogicaEmails();
                ServiceWebMail sm = new ServiceWebMail();
                CARPETA.USUARIO = ((Alumno)Session["Usuario"]);
                //EmailListRepeater.DataSource = le.ListarEmail(CARPETA);
                EmailListRepeater.DataSource = sm.ListarEmail(CARPETA);

                EmailListRepeater.DataBind();
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {

                lblInfo.Text = "";
                Session["EmailId"] = null;

                if (!IsPostBack)
                {
                    //CARGAMOS NOMBRE DE USUARIO LOGUEADO
                    //-----------------------------------

                    //CARGAMOS CARPETAS DE USUARIO LOGUEADO
                    //-------------------------------------
                    RefreshFolders();

                    //CARGAMOS CARPETA INBOX DEL USUARIO LOGUEADO POR DEFECTO
                    //-------------------------------------------------------
                    //ILogicaCarpetas lc = FabricaLogica.getLogicaCarpetas();
                    ServiceWebMail sm = new ServiceWebMail();
                    SiteAlumno master = (SiteAlumno)Master;
                    if (master != null && master.USUARIO_LOGUEADO != null)
                    {
                        //Carpeta inbox = lc.getInboxFolder(master.USUARIO_LOGUEADO.CI);
                        //Carpeta inbox = lc.getInboxFolder(master.USUARIO_LOGUEADO);
                        Carpeta inbox = sm.getInboxFolder((Alumno)master.USUARIO_LOGUEADO);
                        if (inbox != null)
                            ConsultaCarpeta.CARPETA = inbox;
                    }
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        protected void FolderListRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            try
            {
                if (e.Item != null && e.Item.DataItem != null)
                {
                    //-- Creo el objeto que tiene los datos de la ROW del Listview
                    //----------------------------------------------------------------
                    RepeaterItem dataItem = e.Item;
                    Carpeta folder = (Carpeta)dataItem.DataItem;
                    //ILogicaCarpetas lc = FabricaLogica.getLogicaCarpetas();
                    ServiceWebMail sm = new ServiceWebMail();

                    //if (lc.IsCarpetaSistema(folder))
                    if (sm.IsCarpetaSistema(folder))
                    {
                        dataItem.FindControl("lnkEliminar").Visible = false;
                    }
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        /// <summary>
        /// INSERTA O ACTUALIZA UN NUEVO USUARIO DEL SISTEMA
        /// </summary>
        /// <param name="update"></param>
        private void Registrar(bool update)
        {
            try
            {
                string result = Validaciones();
                if (String.IsNullOrEmpty(result))
                {
                    //ILogicaUsuario lu = FabricaLogica.getLogicaUsuario();
                    ServiceWebMail sm = new ServiceWebMail();

                    Alumno a;
                    if (update)
                        a = (Alumno)Session["EditarUsuario"];
                    else
                        a = new Alumno();

                    a.APELLIDO = txtApellido.Text;
                    a.CI = Convert.ToInt32(txtDocumento.Text);
                    a.NOMBRE_USUARIO = txtUserName.Text;
                    a.NOMBRE = txtNombre.Text;
                    a.FOTO = Convert.ToString(a.CI) + "." + UCPicture.GetFileNameExtension;
                    a.PASS = txtContraseña.Text;
                    a.ACTIVO = true;

                    //GUARDO LA FOTO EN UNA CARPETA
                    //-----------------------------
                    UCPicture.GuardarFotos(Convert.ToString(a.CI));

                    if (update)
                    {
                        //lu.ModificarAlumno(a);
                        sm.ModificarAlumno(a);
                        lblInfo.Text = "Informacion actualizada";
                        Response.Redirect("~/AdminDocente/ListarAlumnos.aspx", false);
                    }
                    else
                    {
                        //lu.NuevoAlumno(a);
                        sm.NuevoAlumno(a);

                        lblInfo.Text =
                            "Sabelo!!, fuiste registrado. Valida tu usuario y password para ingresar al sistema";
                        ClearForm();
                    }
                    //}
                    //else
                    //{
                    //    lblInfo.Text = "Tipo de usuario a registrar/actualizar no valido";
                    //}
                }
                else
                {
                    lblInfo.Text = result;
                }
            }
            //catch (ErrorUsuarioYaExiste ex)
            //{
            //    lblInfo.Text = "Error: El usuario con documento " + txtDocumento.Text + " o nombre de usuario " + txtUserName.Text + " ya se encuentra registrado.";
            //}
            catch (Exception ex)
            {
                lblInfo.Text = ex.Message;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    int emailId;
                    if (Int32.TryParse(Convert.ToString(Session["EmailId"]), out emailId))
                    {
                        txtFrom.Visible = true;
                        lblFrom.Visible = true;

                        //CARGAMOS LA INFORMACION DEL EMAIL PARA SER VISUALIZADA.
                        //-------------------------------------------------------
                        btnAceptar.Visible = false;
                        //ILogicaEmails le = FabricaLogica.getLogicaEmails();

                        //Entidades.Email email = le.GetEmail(emailId);
                        ServiceWebMail sm = new ServiceWebMail();
                        refServiceWebMail.Email email = new refServiceWebMail.Email {NUMERO_EMAIL = emailId};
                        //email = le.GetEmail(email);
                        email = sm.GetEmail(email);

                        if (email != null)
                        {
                            Header.HEADER_TEXT = "Email enviado " + email.FECHA.ToShortDateString() + " a las " +
                                                 email.FECHA.ToShortTimeString();

                            txtFrom.Text = email.CARPETA_REMITENTE.USUARIO.NOMBRE + " " +
                                           email.CARPETA_REMITENTE.USUARIO.APELLIDO;
                            txtPara.Text = email.CARPETA_DESTINATARIO.USUARIO.NOMBRE + " " +
                                           email.CARPETA_DESTINATARIO.USUARIO.APELLIDO;
                            txtAsunto.Text = email.ASUNTO;
                            txtContenido.Text = email.CUERPO;

                            //bindeamos las posibles carpetas de destino
                            // a mover
                            //ILogicaCarpetas lc = FabricaLogica.getLogicaCarpetas();
                            //ddlFolders.DataSource = lc.ListarCarpetas((Alumno)Session["Usuario"]);

                            ddlFolders.DataSource = sm.ListarCarpetas((Alumno) Session["Usuario"]);
                            ddlFolders.DataBind();
                            lblMover.Visible = true;
                            ddlFolders.Visible = true;
                        }
                        else
                        {
                            lblInfo.Text = "No se encontro la informacion del email";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                lblInfo.Text = ex.ToString();
            }
        }