예제 #1
0
        private void Enviar_validacion()
        {
            Persona p = Session["UsuarioLogueado"] as Persona;

            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                Persona p_cxt = cxt.Personas.FirstOrDefault(pp => pp.persona_id == p.persona_id);

                Envio_mail registro_envio_mail = new Envio_mail()
                {
                    persona_id            = p_cxt.persona_id,
                    envio_fecha_hora      = DateTime.Now,
                    envio_email_destino   = p_cxt.persona_email, //de haber mas de un destinatario separar por coma Ej: mail + "," + mail2 + "," + mail3
                    envio_respuesta_clave = Guid.NewGuid().ToString(),
                    envio_tipo            = MiEmail.tipo_mail.validacion.ToString()
                };

                cxt.Envio_mails.Add(registro_envio_mail);
                cxt.SaveChanges();

                MiEmail mail = new MiEmail(registro_envio_mail);

                if (mail.Enviar_mail())
                {
                    MessageBox.Show(this, "El correo se envió satisfactoriamente", MessageBox.Tipo_MessageBox.Success);

                    lbl_validado.Text      = "Sin validar";
                    lbl_validado.ForeColor = Color.DarkRed;
                }
                else
                {
                    MessageBox.Show(this, "Ocurrio un error en el envio del correo", MessageBox.Tipo_MessageBox.Warning, "Oops!!");
                }
            }
        }
예제 #2
0
        public void Enviar_notificaciones(List <Tesina> tesinas)
        {
            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                foreach (Tesina tesina in tesinas)
                {
                    Tesina tesina_cxt = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina.tesina_id);

                    Envio_mail registro_envio_mail_notificacion = new Envio_mail()
                    {
                        persona_id            = tesina_cxt.Tesista.Persona.persona_id,
                        envio_fecha_hora      = DateTime.Now,
                        envio_email_destino   = tesina_cxt.Tesista.Persona.persona_email,
                        envio_respuesta_clave = "no se usa",
                        envio_tipo            = MiEmail.tipo_mail.notificacion_recordatorio_automatico.ToString()
                    };

                    cxt.Envio_mails.Add(registro_envio_mail_notificacion);

                    MiEmail mail = new MiEmail(registro_envio_mail_notificacion, tesina);

                    if (mail.Enviar_mail())
                    {
                        cxt.SaveChanges();
                    }
                }
            }
        }
예제 #3
0
        protected void btn_guardar_ServerClick(object sender, EventArgs e)
        {
            this.Validate("tesista");
            if (this.IsValid)
            {
                Persona usuario    = Session["UsuarioLogueado"] as Persona;
                int     id_tesista = Convert.ToInt32(hidden_id_tesista_editar.Value);

                int dni = 0;
                int.TryParse(tb_dni_tesista.Value, out dni);

                Persona p_tesista = null;
                Tesista tesista   = null;

                using (HabProfDBContainer cxt = new HabProfDBContainer())
                {
                    if (id_tesista != 0)
                    {
                        //abrio por editar tesista
                        tesista   = cxt.Tesistas.FirstOrDefault(pp => pp.tesista_id == id_tesista);
                        p_tesista = tesista.Persona;
                    }
                    else
                    {
                        p_tesista = cxt.Personas.FirstOrDefault(pp => pp.persona_dni == dni);
                        if (p_tesista != null)
                        {
                            tesista = p_tesista.Tesista;
                        }
                    }

                    //Agrego o actualizo la persona
                    if (p_tesista == null)
                    {
                        p_tesista = new Persona()
                        {
                            licenciatura_id        = usuario.licenciatura_id,
                            persona_nomyap         = tb_nombre_tesista.Value,
                            persona_dni            = dni,
                            persona_email          = tb_email.Value,
                            persona_email_validado = false,
                            persona_domicilio      = tb_domicilio.Value,
                            persona_telefono       = tb_telefono.Value,
                            persona_usuario        = tb_usuario.Value,
                            persona_clave          = Cripto.Encriptar(tb_dni_tesista.Value),
                            persona_estilo         = "Slate"
                        };
                        cxt.Personas.Add(p_tesista);
                    }
                    else
                    {
                        p_tesista.licenciatura_id        = usuario.licenciatura_id;
                        p_tesista.persona_nomyap         = tb_nombre_tesista.Value;
                        p_tesista.persona_dni            = dni;
                        p_tesista.licenciatura_id        = usuario.licenciatura_id;
                        p_tesista.persona_email          = tb_email.Value;
                        p_tesista.persona_email_validado = false;
                        p_tesista.persona_domicilio      = tb_domicilio.Value;
                        p_tesista.persona_telefono       = tb_telefono.Value;
                        p_tesista.persona_usuario        = tb_usuario.Value;
                        if (chk_cambiar_clave.Checked)
                        {
                            p_tesista.persona_clave = Cripto.Encriptar(tb_contraseña.Value);
                        }
                    }

                    bool tesista_nuevo = false;

                    //agrego o actualizo el tesista
                    if (tesista == null)
                    {
                        //no existe hago un insert
                        tesista = new Tesista()
                        {
                            Persona        = p_tesista,
                            tesista_legajo = tb_legajo.Value,
                            tesista_sede   = tb_sede.Value
                        };

                        tesista_nuevo = true;
                        cxt.Tesistas.Add(tesista);
                    }
                    else
                    {
                        //existe el tesista por lo tanto tambien la persona y ya fue editada
                        tesista.tesista_legajo = tb_legajo.Value;
                        tesista.tesista_sede   = tb_sede.Value;
                    }


                    try
                    {
                        cxt.SaveChanges();

                        if (file_tesis.HasFile)
                        {
                            string directorio = Server.MapPath("~/Archivos/Tesistas/" + tesista.tesista_id + "/");

                            if (!Directory.Exists(directorio))
                            {
                                Directory.CreateDirectory(directorio);
                            }

                            string extencion_origen = Path.GetExtension(file_tesis.FileName);

                            string path_save_file = directorio + "plan" + extencion_origen;

                            file_tesis.SaveAs(path_save_file);
                        }

                        tb_dni_tesista.Value           = string.Empty;
                        tb_domicilio.Value             = string.Empty;
                        tb_email.Value                 = string.Empty;
                        tb_legajo.Value                = string.Empty;
                        tb_nombre_tesista.Value        = string.Empty;
                        tb_sede.Value                  = string.Empty;
                        tb_telefono.Value              = string.Empty;
                        hidden_id_tesista_editar.Value = "0";

                        if (tesista_nuevo)
                        {
                            Envio_mail registro_envio_mail = new Envio_mail()
                            {
                                persona_id            = p_tesista.persona_id,
                                envio_fecha_hora      = DateTime.Now,
                                envio_email_destino   = p_tesista.persona_email, //de haber mas de un destinatario separar por coma Ej: mail + "," + mail2 + "," + mail3
                                envio_respuesta_clave = Guid.NewGuid().ToString(),
                                envio_tipo            = MiEmail.tipo_mail.alta_tesista.ToString()
                            };

                            cxt.Envio_mails.Add(registro_envio_mail);
                            cxt.SaveChanges();

                            MiEmail mail = new MiEmail(registro_envio_mail);

                            mail.Enviar_mail();
                        }

                        MessageBox.Show(this, "Se guardó correctamente el tesista!", MessageBox.Tipo_MessageBox.Success, "Exito!");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(this, ex.Message, MessageBox.Tipo_MessageBox.Danger);
                    }
                }

                ObtenerTesistas();
            }
            else
            {
                string script = "<script language=\"javascript\"  type=\"text/javascript\">$(document).ready(function() { $('#agregar_tesista').modal('show')});</script>";
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "ShowPopUp", script, false);
            }
        }
예제 #4
0
        /// <summary>
        /// Verifico y marco como vencidas las tesinas que no esten en estado vencida, lista para presentar, aprobadas o desaprobadas.
        /// Ver el tema de si vencer o no las que se presentaron para corregir y estan en poder del director o administrador
        /// </summary>
        public void Verificar_y_marcar_tesinas_vencidas()
        {
            using (HabProfDBContainer cxt = new Aplicativo.HabProfDBContainer())
            {
                Estado_tesina et_vencida     = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Vencida");
                Estado_tesina et_lista       = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Lista para presentar");
                Estado_tesina et_aprobada    = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Aprobada");
                Estado_tesina et_desaprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Desaprobada");

                List <Tesina> tesinas = cxt.Tesinas.Where(tt =>
                                                          tt.estado_tesis_id != et_vencida.estado_tesina_id &&
                                                          tt.estado_tesis_id != et_lista.estado_tesina_id &&
                                                          tt.estado_tesis_id != et_aprobada.estado_tesina_id &&
                                                          tt.estado_tesis_id != et_desaprobada.estado_tesina_id
                                                          ).ToList();

                foreach (Tesina tesina in tesinas)
                {
                    DateTime fecha_vencimiento = tesina.tesina_plan_fch_presentacion.AddMonths(tesina.tesina_plan_duracion_meses);
                    if (fecha_vencimiento < DateTime.Today)
                    {
                        tesina.Historial_estados.Add(new Historial_estado()
                        {
                            estado_tesina_id = et_vencida.estado_tesina_id, historial_tesina_fecha = fecha_vencimiento, historial_tesina_descripcion = "Se venció el plazo para presentar una tesina lista para evaluar"
                        });
                        tesina.estado_tesis_id = et_vencida.estado_tesina_id;

                        Envio_mail em_director = new Envio_mail()
                        {
                            persona_id            = tesina.Director.Persona.persona_id,
                            envio_email_destino   = tesina.Director.Persona.persona_email,
                            envio_fecha_hora      = DateTime.Now,
                            envio_respuesta_clave = "no se usa",
                            envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_vencida.ToString()
                        };
                        cxt.Envio_mails.Add(em_director);

                        Envio_mail em_tesista = new Envio_mail()
                        {
                            persona_id            = tesina.Tesista.Persona.persona_id,
                            envio_email_destino   = tesina.Tesista.Persona.persona_email,
                            envio_fecha_hora      = DateTime.Now,
                            envio_respuesta_clave = "no se usa",
                            envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_vencida.ToString()
                        };
                        cxt.Envio_mails.Add(em_tesista);

                        MiEmail me_director = new MiEmail(em_director, tesina);
                        MiEmail me_tesista  = new MiEmail(em_tesista, tesina);

                        me_director.Enviar_mail();
                        me_tesista.Enviar_mail();

                        if (tesina.Codirector != null)
                        {
                            Envio_mail em_codirector = new Envio_mail()
                            {
                                persona_id            = tesina.Codirector.Persona.persona_id,
                                envio_email_destino   = tesina.Codirector.Persona.persona_email,
                                envio_fecha_hora      = DateTime.Now,
                                envio_respuesta_clave = "no se usa",
                                envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_vencida.ToString()
                            };
                            cxt.Envio_mails.Add(em_codirector);
                            MiEmail me_codirector = new MiEmail(em_codirector, tesina);
                            me_codirector.Enviar_mail();
                        }

                        cxt.SaveChanges();
                    }
                }
            }
        }
예제 #5
0
        /// <summary>
        /// Envia correos a las tesinas con los avisos automaticos pendientes
        /// </summary>
        /// <remarks>
        /// Procedimiento:
        ///   - Marco las tesinas que deberian estar vencidas.
        ///   - Obtengo las tesinas que no estan vencidas, listas para presentar, aprobadas o desaprobadas.
        ///   - De estas tesinas verifico que la fecha actual (fa) sea mayor o igual a la fecha de inicio (fi) mas un múltiplo de los períodos de envio (xn)
        ///     y que en ese tramo de tiempo (fi+xa y fa) no se hayan enviado notificaciones de este tipo
        /// </remarks>
        public void Enviar_correos_notificacion_automatica()
        {
            Verificar_y_marcar_tesinas_vencidas();

            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                Estado_tesina et_vencida     = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Vencida");
                Estado_tesina et_lista       = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Lista para presentar");
                Estado_tesina et_aprobada    = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Aprobada");
                Estado_tesina et_desaprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Desaprobada");

                DateTime fecha_actual = DateTime.Today;

                List <Tesina> tesinas = cxt.Tesinas.Where(tt =>
                                                          tt.estado_tesis_id != et_vencida.estado_tesina_id &&
                                                          tt.estado_tesis_id != et_lista.estado_tesina_id &&
                                                          tt.estado_tesis_id != et_aprobada.estado_tesina_id &&
                                                          tt.estado_tesis_id != et_desaprobada.estado_tesina_id
                                                          ).ToList();

                foreach (Tesina tesina in tesinas)
                {
                    //multiplo de avisos automáticos
                    int multiplo = 0;

                    //al salir de aca el multiplo es uno mas que el necesario es decir, el multiplo por el periodo entre avisos nos da la fecha del proximo envio
                    while (tesina.tesina_plan_fch_presentacion.AddMonths(tesina.tesina_plan_aviso_meses * multiplo) <= fecha_actual)
                    {
                        multiplo++;
                    }

                    //descuento uno para obtener la fecha en la que se tuvo que haber enviado la ultima vez
                    multiplo--;

                    //si multiplo es mayor que cero quiere decir que deberia de enviar el aviso, si es que no se envió todavia
                    if (multiplo > 0)
                    {
                        //busco en el periodo (fecha_presentacion + (multiplo * periodo_aviso)) y fecha_actual si se realizaron envios, de no ser asi tengo que realizar el envio
                        DateTime desde = tesina.tesina_plan_fch_presentacion.AddMonths(multiplo * tesina.tesina_plan_aviso_meses);
                        DateTime hasta = fecha_actual;

                        List <Envio_mail> envios_automaticos = cxt.Envio_mails.Where(eemm => eemm.persona_id == tesina.Tesista.Persona.persona_id &&
                                                                                     eemm.envio_tipo == "notificacion_recordatorio_automatico").ToList();

                        bool enviar = (from ea in envios_automaticos
                                       where
                                       ea.envio_fecha_hora.Date >= desde &&
                                       ea.envio_fecha_hora.Date <= hasta
                                       select ea).Count() == 0;

                        if (enviar)
                        {
                            Envio_mail registro_envio_mail_notificacion = new Envio_mail()
                            {
                                persona_id            = tesina.Tesista.Persona.persona_id,
                                envio_fecha_hora      = DateTime.Now,
                                envio_email_destino   = tesina.Tesista.Persona.persona_email,
                                envio_respuesta_clave = "no se usa",
                                envio_tipo            = MiEmail.tipo_mail.notificacion_recordatorio_automatico.ToString()
                            };

                            cxt.Envio_mails.Add(registro_envio_mail_notificacion);

                            MiEmail mail = new MiEmail(registro_envio_mail_notificacion, tesina);

                            if (mail.Enviar_mail())
                            {
                                cxt.SaveChanges();
                            }
                        }
                    }
                }
            }
        }
예제 #6
0
        protected void btn_prorrogar_Click(object sender, EventArgs e)
        {
            int tesina_id = Convert.ToInt32(hidden_tesina_id.Value);

            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id);

                Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Prorrogar");

                Historial_estado he = new Historial_estado()
                {
                    estado_tesina_id             = et.estado_tesina_id,
                    tesina_id                    = tesina_id,
                    historial_tesina_fecha       = DateTime.Now,
                    historial_tesina_descripcion = "Se otorgo la prorroga solicitada"
                };

                t.estado_tesis_id = et.estado_tesina_id;
                t.tesina_plan_fch_presentacion = Convert.ToDateTime(tb_fecha_inicio.Value);
                t.tesina_plan_duracion_meses   = Convert.ToInt16(tb_duracion.Value);
                t.tesina_plan_aviso_meses      = Convert.ToInt16(tb_notificacion.Value);
                cxt.Historial_estados.Add(he);

                Envio_mail em_director = new Envio_mail()
                {
                    persona_id            = t.Director.Persona.persona_id,
                    envio_email_destino   = t.Director.Persona.persona_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_prorrogada.ToString()
                };
                cxt.Envio_mails.Add(em_director);

                Envio_mail em_tesista = new Envio_mail()
                {
                    persona_id            = t.Tesista.Persona.persona_id,
                    envio_email_destino   = t.Tesista.Persona.persona_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_prorrogada.ToString()
                };
                cxt.Envio_mails.Add(em_tesista);

                MiEmail me_director = new MiEmail(em_director, t);
                MiEmail me_tesista  = new MiEmail(em_tesista, t);

                me_director.Enviar_mail();
                me_tesista.Enviar_mail();

                if (t.Codirector != null)
                {
                    Envio_mail em_codirector = new Envio_mail()
                    {
                        persona_id            = t.Codirector.Persona.persona_id,
                        envio_email_destino   = t.Codirector.Persona.persona_email,
                        envio_fecha_hora      = DateTime.Now,
                        envio_respuesta_clave = "no se usa",
                        envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_prorrogada.ToString()
                    };
                    cxt.Envio_mails.Add(em_codirector);
                    MiEmail me_codirector = new MiEmail(em_codirector, t);
                    me_codirector.Enviar_mail();
                }

                cxt.SaveChanges();

                tb_fecha_inicio.Value = "";
                tb_duracion.Value     = "";
                tb_notificacion.Value = "";

                ObtenerTesinas();
            }
        }
예제 #7
0
        protected void btn_pasar_a_lista_para_presentar_Click(object sender, EventArgs e)
        {
            int tesina_id = Convert.ToInt32(hidden_tesina_id.Value);

            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id);

                Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Lista para presentar");

                string descripcion = "Esta lista para presentar";

                Historial_estado he = new Historial_estado()
                {
                    estado_tesina_id             = et.estado_tesina_id,
                    tesina_id                    = tesina_id,
                    historial_tesina_fecha       = DateTime.Now,
                    historial_tesina_descripcion = descripcion
                };

                t.estado_tesis_id = et.estado_tesina_id;
                cxt.Historial_estados.Add(he);

                #region envio de mails
                Envio_mail em_director = new Envio_mail()
                {
                    persona_id            = t.Director.Persona.persona_id,
                    envio_email_destino   = t.Director.Persona.persona_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar.ToString()
                };
                cxt.Envio_mails.Add(em_director);
                MiEmail me_director = new MiEmail(em_director, t);
                me_director.Enviar_mail();

                if (t.Codirector != null)
                {
                    Envio_mail em_codirector = new Envio_mail()
                    {
                        persona_id            = t.Codirector.Persona.persona_id,
                        envio_email_destino   = t.Codirector.Persona.persona_email,
                        envio_fecha_hora      = DateTime.Now,
                        envio_respuesta_clave = "no se usa",
                        envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar.ToString()
                    };
                    cxt.Envio_mails.Add(em_codirector);
                    MiEmail me_codirector = new MiEmail(em_codirector, t);
                    me_codirector.Enviar_mail();
                }

                Envio_mail em_tesista = new Envio_mail()
                {
                    persona_id            = t.Tesista.Persona.persona_id,
                    envio_email_destino   = t.Tesista.Persona.persona_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar_tesista.ToString()
                };
                cxt.Envio_mails.Add(em_tesista);
                MiEmail me_tesista = new MiEmail(em_tesista, t);
                me_tesista.Enviar_mail();

                List <Persona> administradores = t.Tesista.Persona.Licenciatura.Personas.Where(pp => pp.Administrador != null).ToList();
                //tomo el primer administrador para asociar el envio de correo pero el mail al cual mando es el mail asociado a la licenciatura
                Envio_mail em_admin = new Envio_mail()
                {
                    persona_id            = administradores[0].persona_id,
                    envio_email_destino   = t.Tesista.Persona.Licenciatura.licenciatura_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar.ToString()
                };

                cxt.Envio_mails.Add(em_admin);
                MiEmail me_admin = new MiEmail(em_admin, t);
                me_admin.Enviar_mail();


                #endregion

                cxt.SaveChanges();

                ObtenerTesinas();
            }
        }
예제 #8
0
        protected void btn_enviar_a_corregir_Click(object sender, EventArgs e)
        {
            int tesina_id = Convert.ToInt32(hidden_tesina_id.Value);

            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id);

                Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Observada");

                string descripcion = string.Empty;
                descripcion = descripcion + (opcion_1.Checked ? opcion_1.Text : "");
                descripcion = descripcion + (opcion_2.Checked ? opcion_2.Text : "");
                descripcion = descripcion + (opcion_3.Checked ? opcion_3.Text : "");

                Historial_estado he = new Historial_estado()
                {
                    estado_tesina_id             = et.estado_tesina_id,
                    tesina_id                    = tesina_id,
                    historial_tesina_fecha       = DateTime.Now,
                    historial_tesina_descripcion = descripcion//tb_descripcion_rechazo.Value
                };

                t.estado_tesis_id = et.estado_tesina_id;
                cxt.Historial_estados.Add(he);

                Envio_mail em_director = new Envio_mail()
                {
                    persona_id            = t.Director.Persona.persona_id,
                    envio_email_destino   = t.Director.Persona.persona_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_correcciones_tesina.ToString()
                };
                cxt.Envio_mails.Add(em_director);

                Envio_mail em_tesista = new Envio_mail()
                {
                    persona_id            = t.Tesista.Persona.persona_id,
                    envio_email_destino   = t.Tesista.Persona.persona_email,
                    envio_fecha_hora      = DateTime.Now,
                    envio_respuesta_clave = "no se usa",
                    envio_tipo            = MiEmail.tipo_mail.notificacion_correcciones_tesina.ToString()
                };
                cxt.Envio_mails.Add(em_tesista);

                MiEmail me_director = new MiEmail(em_director, t);
                MiEmail me_tesista  = new MiEmail(em_tesista, t);

                me_director.Enviar_mail();
                me_tesista.Enviar_mail();

                if (t.Codirector != null)
                {
                    Envio_mail em_codirector = new Envio_mail()
                    {
                        persona_id            = t.Codirector.Persona.persona_id,
                        envio_email_destino   = t.Codirector.Persona.persona_email,
                        envio_fecha_hora      = DateTime.Now,
                        envio_respuesta_clave = "no se usa",
                        envio_tipo            = MiEmail.tipo_mail.notificacion_correcciones_tesina.ToString()
                    };
                    cxt.Envio_mails.Add(em_codirector);
                    MiEmail me_codirector = new MiEmail(em_codirector, t);
                    me_codirector.Enviar_mail();
                }

                cxt.SaveChanges();

                //tb_descripcion_rechazo.Value = "";

                ObtenerTesinas();
            }
        }
예제 #9
0
        protected void btn_subir_archivo_Click(object sender, EventArgs e)
        {
            if (file_tesis.HasFile)
            {
                try
                {
                    string directorio = Server.MapPath("~/Archivos/Tesinas/" + hidden_tesina_id.Value + "/");

                    if (!Directory.Exists(directorio))
                    {
                        Directory.CreateDirectory(directorio);
                    }

                    string extencion_origen = Path.GetExtension(file_tesis.FileName);

                    string path_save_file = directorio + "presentado" + extencion_origen;

                    file_tesis.SaveAs(path_save_file);

                    using (HabProfDBContainer cxt = new HabProfDBContainer())
                    {
                        int           tesina_id = Convert.ToInt32(hidden_tesina_id.Value);
                        Tesina        t         = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id);
                        Estado_tesina et        = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Entregada");

                        Historial_estado he = new Historial_estado()
                        {
                            estado_tesina_id             = et.estado_tesina_id,
                            tesina_id                    = tesina_id,
                            historial_tesina_fecha       = DateTime.Now,
                            historial_tesina_descripcion = "Se entregó satisfactoriamente la tesina para ser evaluada por el director."
                        };

                        t.estado_tesis_id = et.estado_tesina_id;
                        cxt.Historial_estados.Add(he);

                        Envio_mail em_director = new Envio_mail()
                        {
                            persona_id            = t.Director.Persona.persona_id,
                            envio_email_destino   = t.Director.Persona.persona_email,
                            envio_fecha_hora      = DateTime.Now,
                            envio_respuesta_clave = "Archivos/Tesinas/" + hidden_tesina_id.Value + "/presentado" + extencion_origen,
                            envio_tipo            = MiEmail.tipo_mail.notificacion_entrega_archivo_tesina.ToString()
                        };
                        cxt.Envio_mails.Add(em_director);

                        Envio_mail em_tesista = new Envio_mail()
                        {
                            persona_id            = t.Tesista.Persona.persona_id,
                            envio_email_destino   = t.Tesista.Persona.persona_email,
                            envio_fecha_hora      = DateTime.Now,
                            envio_respuesta_clave = "Archivos/Tesinas/" + hidden_tesina_id.Value + "/presentado" + extencion_origen,
                            envio_tipo            = MiEmail.tipo_mail.notificacion_entrega_archivo_tesina.ToString()
                        };
                        cxt.Envio_mails.Add(em_tesista);

                        MiEmail me_director = new MiEmail(em_director, t);
                        MiEmail me_tesista  = new MiEmail(em_tesista, t);

                        me_director.Enviar_mail();
                        me_tesista.Enviar_mail();

                        if (t.Codirector != null)
                        {
                            Envio_mail em_codirector = new Envio_mail()
                            {
                                persona_id            = t.Codirector.Persona.persona_id,
                                envio_email_destino   = t.Codirector.Persona.persona_email,
                                envio_fecha_hora      = DateTime.Now,
                                envio_respuesta_clave = "Archivos/Tesinas/" + hidden_tesina_id.Value + "/presentado" + extencion_origen,
                                envio_tipo            = MiEmail.tipo_mail.notificacion_entrega_archivo_tesina.ToString()
                            };
                            cxt.Envio_mails.Add(em_codirector);
                            MiEmail me_codirector = new MiEmail(em_codirector, t);
                            me_codirector.Enviar_mail();
                        }

                        cxt.SaveChanges();

                        ObtenerTesinas();
                    }
                }
                catch (Exception ex)
                {
                    //    status_label.Text = "Ocurrio un error y no se pudo subir el archivo. Error: " + ex.Message;
                    //    div_status_file.Attributes.Add("class", "alert alert-danger");
                }
            }
            else
            {
                //status_label.Text = "Debe seleccionar un archivo!";
                //div_status_file.Attributes.Add("class", "alert alert-danger");
            }
        }
예제 #10
0
        protected void btn_aceptar_eliminacion_Click(object sender, EventArgs e)
        {
            int id_tesina = Convert.ToInt32(id_item_por_eliminar.Value);

            using (HabProfDBContainer cxt = new HabProfDBContainer())
            {
                Tesina tesina = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == id_tesina);

                if (tesina.Estado.estado_tesina_estado == "Iniciada")
                {
                    //Enviar correos a tesista y director sobre eliminacion de la tesis
                    Envio_mail em_director = new Envio_mail()
                    {
                        envio_email_destino   = tesina.Director.Persona.persona_email,
                        envio_fecha_hora      = DateTime.Now,
                        envio_respuesta_clave = "",
                        envio_tipo            = MiEmail.tipo_mail.notificacion_eliminacion_tesina_director.ToString(),
                        persona_id            = tesina.Director.Persona.persona_id
                    };
                    cxt.Envio_mails.Add(em_director);

                    Envio_mail em_tesista = new Envio_mail()
                    {
                        envio_email_destino   = tesina.Tesista.Persona.persona_email,
                        envio_fecha_hora      = DateTime.Now,
                        envio_respuesta_clave = "",
                        envio_tipo            = MiEmail.tipo_mail.notificacion_eliminacion_tesina_tesista.ToString(),
                        persona_id            = tesina.Tesista.Persona.persona_id
                    };
                    cxt.Envio_mails.Add(em_tesista);

                    MiEmail mail_director = new MiEmail(em_director, tesina);
                    MiEmail mail_tesista  = new MiEmail(em_tesista, tesina);

                    mail_director.Enviar_mail();
                    mail_tesista.Enviar_mail();

                    if (tesina.Codirector != null)
                    {
                        Envio_mail em_codirector = new Envio_mail()
                        {
                            persona_id            = tesina.Codirector.Persona.persona_id,
                            envio_email_destino   = tesina.Codirector.Persona.persona_email,
                            envio_fecha_hora      = DateTime.Now,
                            envio_respuesta_clave = "no se usa",
                            envio_tipo            = MiEmail.tipo_mail.notificacion_eliminacion_tesina_director.ToString()
                        };
                        cxt.Envio_mails.Add(em_codirector);
                        MiEmail me_codirector = new MiEmail(em_codirector, tesina);
                        me_codirector.Enviar_mail();
                    }

                    cxt.Historial_estados.RemoveRange(tesina.Historial_estados);
                    cxt.Tesinas.Remove(tesina);
                    cxt.SaveChanges();

                    MessageBox.Show(this, "Se ha eliminado correctamente la tesina.", MessageBox.Tipo_MessageBox.Success);
                    ObtenerTesinas();
                }
                else
                {
                    MessageBox.Show(this, "No se puede eliminar una tesina cuyo estado sea posterior al de iniciada", MessageBox.Tipo_MessageBox.Danger);
                }
            }

            ObtenerTesinas();
        }
예제 #11
0
        protected void btn_guardar_ServerClick(object sender, EventArgs e)
        {
            if (this.IsValid)
            {
                bool    director_nuevo = false;
                Persona usuario        = Session["UsuarioLogueado"] as Persona;
                int     id_director    = Convert.ToInt32(hidden_id_director_editar.Value);

                Persona  p_director = null;
                Director director   = null;

                using (HabProfDBContainer cxt = new HabProfDBContainer())
                {
                    int dni = 0;
                    int.TryParse(tb_dni_director.Value, out dni);
                    if (id_director != 0)
                    {
                        //abrio por editar director y cambio el DNI, obtengo el director a editar
                        director   = cxt.Directores.Include("Persona").FirstOrDefault(pp => pp.director_id == id_director);
                        p_director = director.Persona;
                    }
                    else
                    {
                        p_director = cxt.Personas.FirstOrDefault(pp => pp.persona_dni == dni);
                        if (p_director != null)
                        {
                            director = p_director.Director;
                        }
                    }

                    //agrego o actualizo el director
                    if (p_director == null)
                    {
                        p_director = new Persona();
                        p_director.persona_nomyap    = tb_nombre_director.Value;
                        p_director.persona_dni       = dni;
                        p_director.licenciatura_id   = usuario.licenciatura_id;
                        p_director.persona_email     = tb_email.Value;
                        p_director.persona_domicilio = tb_domicilio.Value;
                        p_director.persona_telefono  = tb_telefono.Value;
                        p_director.persona_usuario   = tb_usuario.Value;
                        p_director.persona_clave     = Cripto.Encriptar(tb_dni_director.Value);
                        p_director.persona_estilo    = "Slate";

                        cxt.Personas.Add(p_director);
                    }
                    else
                    {
                        p_director.persona_nomyap    = tb_nombre_director.Value;
                        p_director.persona_dni       = dni;
                        p_director.persona_email     = tb_email.Value;
                        p_director.persona_domicilio = tb_domicilio.Value;
                        p_director.persona_telefono  = tb_telefono.Value;
                        p_director.persona_usuario   = tb_usuario.Value;
                        if (chk_cambiar_clave.Checked)
                        {
                            p_director.persona_clave = Cripto.Encriptar(tb_contraseña.Value);
                        }
                    }


                    if (director == null)
                    {
                        //no existe hago un insert
                        director = new Director()
                        {
                            Persona = p_director
                        };

                        cxt.Directores.Add(director);

                        director_nuevo = true;
                    }


                    try
                    {
                        cxt.SaveChanges();

                        tb_dni_director.Value           = string.Empty;
                        tb_domicilio.Value              = string.Empty;
                        tb_email.Value                  = string.Empty;
                        tb_nombre_director.Value        = string.Empty;
                        tb_telefono.Value               = string.Empty;
                        tb_usuario.Value                = string.Empty;
                        tb_contraseña.Value             = string.Empty;
                        hidden_id_director_editar.Value = "0";

                        if (director_nuevo)
                        {
                            Envio_mail registro_envio_mail = new Envio_mail()
                            {
                                persona_id            = p_director.persona_id,
                                envio_fecha_hora      = DateTime.Now,
                                envio_email_destino   = p_director.persona_email, //de haber mas de un destinatario separar por coma Ej: mail + "," + mail2 + "," + mail3
                                envio_respuesta_clave = Guid.NewGuid().ToString(),
                                envio_tipo            = MiEmail.tipo_mail.alta_director.ToString()
                            };

                            cxt.Envio_mails.Add(registro_envio_mail);
                            cxt.SaveChanges();

                            MiEmail mail = new MiEmail(registro_envio_mail);

                            mail.Enviar_mail();
                        }

                        MessageBox.Show(this, "Se guardó correctamente el director!", MessageBox.Tipo_MessageBox.Success, "Exito!");
                    }
                    catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
                    {
                        Exception raise = dbEx;
                        foreach (var validationErrors in dbEx.EntityValidationErrors)
                        {
                            foreach (var validationError in validationErrors.ValidationErrors)
                            {
                                string message = string.Format("{0}:{1}",
                                                               validationErrors.Entry.Entity.ToString(),
                                                               validationError.ErrorMessage);
                                // raise a new exception nesting
                                // the current instance as InnerException
                                raise = new InvalidOperationException(message, raise);
                            }
                        }


                        MessageBox.Show(this, raise.Message);
                    }
                }

                ObtenerDirectores();
            }
            else
            {
                string script = "<script language=\"javascript\"  type=\"text/javascript\">$(document).ready(function() { $('#agregar_director').modal('show')});</script>";
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "ShowPopUp", script, false);
            }
        }
예제 #12
0
        protected void btn_crear_mesa_Click(object sender, EventArgs e)
        {
            Validate();
            if (IsValid)
            {
                string str_mesa_id = Request.QueryString["m"];
                int    mesa_id     = 0;
                if (str_mesa_id == null || int.TryParse(str_mesa_id, out mesa_id))
                {
                    using (HabProfDBContainer cxt = new Aplicativo.HabProfDBContainer())
                    {
                        Mesa mesa = new Mesa();
                        if (str_mesa_id == null)
                        {
                            //mesa nueva
                            mesa = new Aplicativo.Mesa();
                            cxt.Mesas.Add(mesa);
                        }
                        else
                        {
                            mesa = cxt.Mesas.FirstOrDefault(mm => mm.mesa_id == mesa_id);
                            //elimino los jueces y tesinas que tenia asignada para cargar los nuevos
                            List <int> id_jueces = mesa.Jueces.Select(jj => jj.juez_id).ToList();
                            foreach (int id_juez in id_jueces)
                            {
                                Jurado j = cxt.Jueces.FirstOrDefault(jj => jj.juez_id == id_juez);
                                mesa.Jueces.Remove(j);
                            }

                            List <int> id_tesinas = mesa.Tesinas.Select(tt => tt.tesina_id).ToList();
                            foreach (int id_tesina in id_tesinas)
                            {
                                Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == id_tesina);
                                mesa.Tesinas.Remove(t);
                            }
                        }

                        string[] jurados_ids = hidden_ids_jueces.Value.Split(',');
                        string[] tesinas_ids = hidden_tesinas_seleccionadas.Value.Split(',');

                        //Agrego jueces
                        foreach (string str_jurado_id in jurados_ids)
                        {
                            int jurado_id;
                            if (int.TryParse(str_jurado_id, out jurado_id))
                            {
                                Jurado jurado = cxt.Jueces.FirstOrDefault(jj => jj.juez_id == jurado_id);
                                mesa.Jueces.Add(jurado);
                            }
                        }

                        //agrego tesinas
                        foreach (string str_tesina_id in tesinas_ids)
                        {
                            int tesina_id;
                            if (int.TryParse(str_tesina_id, out tesina_id))
                            {
                                Tesina tesina = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id);
                                mesa.Tesinas.Add(tesina);
                            }
                        }

                        mesa.mesa_fecha          = Convert.ToDateTime(tb_fecha_mesa.Value);
                        mesa.mesa_codigo_carrera = Convert.ToInt32(tb_cod_carrera.Text);
                        mesa.mesa_codigo_materia = Convert.ToInt32(tb_cod_materia.Text);
                        mesa.mesa_codigo_plan    = Convert.ToInt32(tb_cod_plan.Text);

                        mesa.mesa_estado = "Generada";

                        /*
                         * Envio_mail em_codirector = new Envio_mail()
                         * {
                         *  persona_id = tesina.Codirector.Persona.persona_id,
                         *  envio_email_destino = tesina.Codirector.Persona.persona_email,
                         *  envio_fecha_hora = DateTime.Now,
                         *  envio_respuesta_clave = "no se usa",
                         *  envio_tipo = MiEmail.tipo_mail.notificacion_eliminacion_tesina_director.ToString()
                         * };
                         * cxt.Envio_mails.Add(em_codirector);
                         * MiEmail me_codirector = new MiEmail(em_codirector, tesina);
                         * me_codirector.Enviar_mail();
                         */

                        foreach (Jurado jurado in mesa.Jueces)
                        {
                            Envio_mail em_jurado = new Envio_mail()
                            {
                                persona_id            = jurado.Persona.persona_id,
                                envio_email_destino   = jurado.Persona.persona_email,
                                envio_fecha_hora      = DateTime.Now,
                                envio_respuesta_clave = "no se usa",
                                envio_tipo            = MiEmail.tipo_mail.notificacion_alta_mesa_jurado.ToString()
                            };
                            cxt.Envio_mails.Add(em_jurado);
                            MiEmail me_jurado = new MiEmail(em_jurado, "Jurado", mesa.mesa_fecha);
                            me_jurado.Enviar_mail();
                        }

                        foreach (Tesina tesina in mesa.Tesinas)
                        {
                            Envio_mail em_tesista = new Envio_mail()
                            {
                                persona_id            = tesina.Tesista.Persona.persona_id,
                                envio_email_destino   = tesina.Tesista.Persona.persona_email,
                                envio_fecha_hora      = DateTime.Now,
                                envio_respuesta_clave = "no se usa",
                                envio_tipo            = MiEmail.tipo_mail.notificacion_alta_mesa_tesista.ToString()
                            };
                            cxt.Envio_mails.Add(em_tesista);
                            MiEmail me_tesista = new MiEmail(em_tesista, "Tesista", mesa.mesa_fecha);
                            me_tesista.Enviar_mail();

                            Envio_mail em_director = new Envio_mail()
                            {
                                persona_id            = tesina.Director.Persona.persona_id,
                                envio_email_destino   = tesina.Director.Persona.persona_email,
                                envio_fecha_hora      = DateTime.Now,
                                envio_respuesta_clave = "no se usa",
                                envio_tipo            = MiEmail.tipo_mail.notificacion_alta_mesa.ToString()
                            };
                            cxt.Envio_mails.Add(em_director);
                            MiEmail me_director = new MiEmail(em_director, "Director", mesa.mesa_fecha);
                            me_director.Enviar_mail();

                            if (tesina.Codirector != null)
                            {
                                Envio_mail em_codirector = new Envio_mail()
                                {
                                    persona_id            = tesina.Codirector.Persona.persona_id,
                                    envio_email_destino   = tesina.Codirector.Persona.persona_email,
                                    envio_fecha_hora      = DateTime.Now,
                                    envio_respuesta_clave = "no se usa",
                                    envio_tipo            = MiEmail.tipo_mail.notificacion_alta_mesa.ToString()
                                };
                                cxt.Envio_mails.Add(em_codirector);
                                MiEmail me_codirector = new MiEmail(em_codirector, tesina);
                                me_codirector.Enviar_mail();
                            }
                        }

                        cxt.SaveChanges();

                        MessageBox.Show(this, "La mesa se creo correctamente", MessageBox.Tipo_MessageBox.Success, "Exito", "../Aplicativo/admin_mesas.aspx");
                    }
                }
                else
                {
                    MessageBox.Show(this, "No se encontro la mesa buscada", MessageBox.Tipo_MessageBox.Danger, "Atención", "../Aplicativo/admin_mesas.aspx");
                }
            }
        }