public override void guardar(Institucion obj)
 {
     OleDbConnection conexion = crearConexion();
     OleDbCommand cmdInsert = new OleDbCommand("insert into Institucion (nombre, direccion, telefono, email) values (@nom, @dir, @tel, @em)", conexion);
     cmdInsert.Parameters.AddWithValue("@nom",obj.Nombre);
     cmdInsert.Parameters.AddWithValue("@dir", obj.Direccion);
     cmdInsert.Parameters.AddWithValue("@tel", obj.Telefono);
     cmdInsert.Parameters.AddWithValue("@em", obj.Email);
     cmdInsert.ExecuteNonQuery();
 }
 public override List<Institucion> mostar()
 {
     List<Institucion> lista = new List<Institucion>();
     OleDbConnection conexion = crearConexion();
     OleDbCommand cmdMostar = new OleDbCommand("select id, nombre, email From Institucion", conexion);
     OleDbDataReader datos = cmdMostar.ExecuteReader();
     while (datos.Read())
     {
         Institucion i = new Institucion();
         i.Id = Convert.ToInt32(datos["id"]);
         i.Nombre = datos["nombre"].ToString();
         i.Email = datos["email"].ToString();
         lista.Add(i);
     }
     conexion.Close();
     return lista;
 }
Ejemplo n.º 3
0
                                                       //Update insti
                                                       public async Task UpdateEstado(Institucion institucion)
                                                       {
                                                           try
                                                           {
                                                               var _institucion = await _Context.Instituciones.FirstOrDefaultAsync(i => i.InstitucionID == institucion.InstitucionID);

                                                               if (_institucion != null)
                                                               {
                                                                   _institucion.Estado = institucion.Estado;

                                                                   await _Context.SaveChangesAsync();
                                                               }
                                                           }
                                                           catch (Exception e)
                                                           {
                                                               throw new Exception(e.Message, e);
                                                           }
                                                       }
Ejemplo n.º 4
0
 public IActionResult GetInstituciones()
 {
     Institucion[] instituciones = Institucion.Report(_context);
     return(Ok(instituciones));
 }
Ejemplo n.º 5
0
        public void eliminaInstitucion(Institucion _institucion)
        {
            InstitucionDao institucionDao = new InstitucionDao();

            institucionDao.eliminaInstitucion(_institucion);
        }
Ejemplo n.º 6
0
        public void modificaInstitucion(Institucion _institucion)
        {
            InstitucionDao institucionDao = new InstitucionDao();

            institucionDao.modificaInstitucion(_institucion);
        }
 public FrmAgregarEditarInstituciones(Institucion InstitucionParaEditar)
 {
     InitializeComponent();
     editar             = true;
     institucionAEditar = InstitucionParaEditar;
 }
Ejemplo n.º 8
0
        //
        // GET: /Registro/Asistente

        public ActionResult Asistente(string omi, TipoOlimpiada tipo = TipoOlimpiada.NULL, string estado = null, string clave = null)
        {
            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo == TipoOlimpiada.NULL ? TipoOlimpiada.OMI : tipo);

            if (o == null)
            {
                return(RedirectTo(Pagina.HOME));
            }
            failSafeViewBag();
            ViewBag.omi = o;
            if (!tienePermisos(o.registroActivo || o.registroSedes, estado))
            {
                ViewBag.errorInfo = "permisos";
                return(View(new Persona()));
            }

            Persona p = getUsuario();

            if (!p.esSuperUsuario())
            {
                if (estado == null ||
                    (String.IsNullOrEmpty(clave) &&
                     tipo != TipoOlimpiada.NULL &&
                     !puedeRegistrarOtroMas(o, tipo, estado)))
                {
                    ViewBag.errorInfo = "limite";
                    return(View(new Persona()));
                }

                ViewBag.estado = Estado.obtenerEstadoConClave(estado);
            }

            MiembroDelegacion md = null;

            if (clave == null)
            {
                if (!p.esSuperUsuario() && tipo != TipoOlimpiada.NULL)
                {
                    ViewBag.claveDisponible = MiembroDelegacion.obtenerPrimerClaveDisponible(omi, tipo, estado);
                }
                ViewBag.tipoAsistente = MiembroDelegacion.TipoAsistente.NULL;
            }
            else
            {
                var temp = MiembroDelegacion.obtenerMiembrosConClave(omi, tipo, clave);
                if (temp.Count == 0)
                {
                    ViewBag.errorInfo = "invalido";
                    return(View(new Persona()));
                }
                if (temp.Count > 1)
                {
                    ViewBag.errorInfo = "duplicado";
                    return(View(new Persona()));
                }
                md = temp[0];
                if (!p.esSuperUsuario() && md.estado != estado)
                {
                    ViewBag.errorInfo = "permisos";
                    return(View(new Persona()));
                }
                ViewBag.claveDisponible = md.clave;
                ViewBag.tipoAsistente   = md.tipo;
                ViewBag.estado          = Estado.obtenerEstadoConClave(md.estado);
                ViewBag.nombreEscuela   = md.nombreEscuela;
                ViewBag.claveEscuela    = md.claveEscuela;
                ViewBag.añoEscuela      = md.añoEscuela;
                ViewBag.nivelEscuela    = md.nivelEscuela.ToString();
            }

            ViewBag.md      = md;
            ViewBag.tipo    = tipo;
            ViewBag.estados = Estado.obtenerEstados();
            limpiarErroresViewBag();
            ViewBag.resubmit      = false;
            ViewBag.guardado      = false;
            ViewBag.hayResultados = Resultados.hayResultadosParaOMI(o.numero);
            if (o.esOnline && !p.esSuperUsuario())
            {
                ViewBag.sedes = SedeOnline.obtenerSedes(o.numero, estado, tipo);
            }
            if (md != null && md.sede > 0)
            {
                ViewBag.nombreSede = SedeOnline.obtenerSedeConClave(md.sede).nombre;
            }

            p = md == null ? new Persona() : Persona.obtenerPersonaConClave(md.claveUsuario, completo: true, incluirDatosPrivados: true);
            p.breakNombre();

            List <Ajax.BuscarEscuelas> escuelas = null;

            if (md != null && md.tipo == MiembroDelegacion.TipoAsistente.COMPETIDOR)
            {
                escuelas = Institucion.obtenerEscuelasDeEstado(md.tipoOlimpiada, md.estado);
            }
            else if (estado != null)
            {
                if (tipo != TipoOlimpiada.NULL)
                {
                    escuelas = Institucion.obtenerEscuelasDeEstado(tipo, estado);
                }
            }
            ViewBag.escuelas = escuelas;

            return(View(p));
        }
Ejemplo n.º 9
0
        public void Eliminar(int id)
        {
            Institucion entidad = Get(id);

            _repositoryInstitucion.Delete(entidad);
        }
Ejemplo n.º 10
0
        public Mensaje deleteCronograma([FromBody] UtilsJson.ACronograma cronograma)
        {
            Mensaje mensaje = null;

            try
            {
                if (cronograma != null)
                {
                    if (!string.IsNullOrWhiteSpace(cronograma.token_string))
                    {
                        if (AutenticacionToken.validateToken(cronograma.token_string) == 1)
                        {
                            Institucion institucion  = _repositorio.Get <Institucion>(cronograma.institucionId);
                            Cronograma  cronogramaDB = _repositorio.Get <Cronograma>(cronograma.id);
                            if (institucion != null && cronogramaDB != null)
                            {
                                if (AutenticacionToken.validateUserToken(cronograma.token_string, institucion.logueo.correo_electronico))
                                {
                                    _repositorio.Delete <Conferencista>(cronogramaDB.id);
                                    mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Cronograma fue eliminada exitosamente.");
                                }
                                else
                                {
                                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                                }
                            }
                            else
                            {
                                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se encontro el evento solicitada o esta asociada a otra institucion.");
                            }
                        }
                        else
                        {
                            mensaje = new Mensaje(EnumTipoMensaje.Expiracion, "Error", "La sesion actual ha expirado. Inicie sesion");
                        }
                    }
                    else
                    {
                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                    }
                }
                else
                {
                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se puede eliminar un objeto nulo");
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                var sb = new System.Text.StringBuilder();
                foreach (var failure in ex.EntityValidationErrors)
                {
                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                    foreach (var error in failure.ValidationErrors)
                    {
                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                        sb.AppendLine();
                    }
                }
                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString());
                SystemLog log = new SystemLog();
                log.ErrorLog(sb.ToString());
                throw new Exception(sb.ToString());
            }
            return(mensaje);
        }
Ejemplo n.º 11
0
        public Mensaje editCronograma([FromBody] UtilsJson.ACronograma cronograma)
        {
            Mensaje mensaje = null;

            try
            {
                if (cronograma != null)
                {
                    if (!string.IsNullOrWhiteSpace(cronograma.token_string))
                    {
                        if (AutenticacionToken.validateToken(cronograma.token_string) == 1)
                        {
                            Institucion institucion  = _repositorio.Get <Institucion>(cronograma.institucionId);
                            Cronograma  cronogramaDB = _repositorio.Get <Cronograma>(cronograma.id);
                            if (institucion != null && cronogramaDB != null)
                            {
                                if (AutenticacionToken.validateUserToken(cronograma.token_string, institucion.logueo.correo_electronico))
                                {
                                    string nombre      = cronograma.nombre;
                                    string tema        = cronograma.tema;
                                    string descripcion = cronograma.descripcion;
                                    string color       = cronograma.color;
                                    long   id_sala     = cronograma.salaMesaId;
                                    bool   estado      = cronograma.estado;
                                    long   id_evento   = cronograma.eventoId;
                                    if (!string.IsNullOrWhiteSpace(cronograma.hora_inicio) && !string.IsNullOrWhiteSpace(cronograma.hora_fin))
                                    {
                                        DateTime    hora_inicio = Convert.ToDateTime(cronograma.hora_inicio);
                                        DateTime    hora_fin    = Convert.ToDateTime(cronograma.hora_fin);
                                        Publicacion publicacion = _repositorio.Get <Publicacion>(id_evento);
                                        SalaMesa    salaMesa    = _repositorio.Get <SalaMesa>(id_sala);
                                        if (DateTime.Compare(hora_inicio, hora_fin) < 0)
                                        {
                                            if (publicacion != null && salaMesa != null)
                                            {
                                                cronogramaDB.evento                 = publicacion;
                                                cronogramaDB.sala                   = salaMesa;
                                                cronogramaDB.nombre                 = nombre;
                                                cronogramaDB.tema                   = tema;
                                                cronogramaDB.descripcion            = descripcion;
                                                cronogramaDB.hora_inicio            = hora_inicio;
                                                cronogramaDB.hora_fin               = hora_fin;
                                                cronogramaDB.estado                 = estado;
                                                cronogramaDB.fecha_ult_modificacion = DateTime.Now;
                                                _repositorio.SaveOrUpdate <Cronograma>(cronogramaDB);
                                                mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Cronograma editado exitosamente.");
                                            }
                                            else
                                            {
                                                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "El evento o la sala solicitada no existe. verifique");
                                            }
                                        }
                                        else
                                        {
                                            mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "La hora de inicio es posterior a la hora de finalizacion. verifique");
                                        }
                                    }
                                    else
                                    {
                                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "La hora de inicio es posterior a la hora de finalizacion. verifique");
                                    }
                                }
                                else
                                {
                                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                                }
                            }
                            else
                            {
                                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se encontro la sala solicitada o esta asociada a otra institucion.");
                            }
                        }
                        else
                        {
                            mensaje = new Mensaje(EnumTipoMensaje.Expiracion, "Error", "La sesion actual ha expirado. Inicie sesion");
                        }
                    }
                    else
                    {
                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                    }
                }
                else
                {
                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se puede insertar un objeto nulo");
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                var sb = new System.Text.StringBuilder();
                foreach (var failure in ex.EntityValidationErrors)
                {
                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                    foreach (var error in failure.ValidationErrors)
                    {
                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                        sb.AppendLine();
                    }
                }
                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString());
                SystemLog log = new SystemLog();
                log.ErrorLog(sb.ToString());
                throw new Exception(sb.ToString());
            }
            return(mensaje);
        }
        public Mensaje editAEventoParticipante([FromBody] UtilsJson.AEventoParticipante eventoParticipante)
        {
            Mensaje mensaje = null;

            try
            {
                if (eventoParticipante != null)
                {
                    if (!string.IsNullOrWhiteSpace(eventoParticipante.token_string))
                    {
                        if (AutenticacionToken.validateToken(eventoParticipante.token_string) == 1)
                        {
                            long               id_institucion_c = eventoParticipante.id_institucion;
                            long               id_publicacion   = eventoParticipante.id_evento;
                            Institucion        institucion      = _repositorio.Get <Institucion>(id_institucion_c);
                            Publicacion        publicacion      = _repositorio.Get <Publicacion>(id_publicacion);
                            EventoParticipante registro         = _repositorio.Get <EventoParticipante>(eventoParticipante.id_evento_institucion);
                            if (institucion != null && publicacion != null && registro != null)
                            {
                                if (AutenticacionToken.validateUserToken(eventoParticipante.token_string, institucion.logueo.correo_electronico))
                                {
                                    registro.institucion            = institucion;
                                    registro.evento                 = publicacion;
                                    registro.fecha_ult_modificacion = DateTime.Now;
                                    registro.estado                 = eventoParticipante.estado;
                                    //Almaceno o actualizo el registro
                                    _repositorio.SaveOrUpdate <EventoParticipante>(registro);

                                    mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Participante a evento editado exitosamente.");
                                }
                                else
                                {
                                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                                }
                            }
                            else
                            {
                                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se encontro el registro solicitada o esta asociada a otra institucion.");
                            }
                        }
                        else
                        {
                            mensaje = new Mensaje(EnumTipoMensaje.Expiracion, "Error", "La sesion actual ha expirado. Inicie sesion");
                        }
                    }
                    else
                    {
                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                    }
                }
                else
                {
                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se puede insertar un objeto nulo");
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                var sb = new System.Text.StringBuilder();
                foreach (var failure in ex.EntityValidationErrors)
                {
                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                    foreach (var error in failure.ValidationErrors)
                    {
                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                        sb.AppendLine();
                    }
                }
                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString());
                SystemLog log = new SystemLog();
                log.ErrorLog(sb.ToString());
                throw new Exception(sb.ToString());
            }
            return(mensaje);
        }
        public Mensaje createEventoParticipante([FromBody] UtilsJson.AEventoParticipante eventoParticipante)
        {
            Mensaje mensaje = null;

            try
            {
                if (eventoParticipante != null)
                {
                    if (!string.IsNullOrWhiteSpace(eventoParticipante.token_string))
                    {
                        if (AutenticacionToken.validateToken(eventoParticipante.token_string) == 1)
                        {
                            long        id_inst     = eventoParticipante.id_institucion;
                            long        id_pub      = eventoParticipante.id_evento;
                            Institucion institucion = _repositorio.Get <Institucion>(id_inst);
                            Publicacion publicacion = _repositorio.Get <Publicacion>(id_pub);
                            Expression <Func <EventoParticipante, bool> > query = (u => u.institucion.id == id_inst && u.evento.id == id_pub && u.estado == true);
                            List <EventoParticipante> result = _repositorio.Filter <EventoParticipante>(query);
                            if (institucion != null && publicacion != null && result.Count == 0)
                            {
                                if (AutenticacionToken.validateUserToken(eventoParticipante.token_string, institucion.logueo.correo_electronico))
                                {
                                    //datos institucion y publicacion
                                    EventoParticipante newRegistro = new EventoParticipante
                                    {
                                        institucion            = institucion,
                                        evento                 = publicacion,
                                        fecha_ult_modificacion = DateTime.Now,
                                        estado                 = eventoParticipante.estado
                                    };
                                    //Almaceno o actualizo la salaMesa
                                    _repositorio.SaveOrUpdate <EventoParticipante>(newRegistro);
                                    mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Institucion registrada al evento exitosamente.");
                                }
                                else
                                {
                                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                                }
                            }
                            else
                            {
                                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes para modificar estos campos.");
                            }
                        }
                        else
                        {
                            mensaje = new Mensaje(EnumTipoMensaje.Expiracion, "Error", "La sesion actual ha expirado. Inicie sesion");
                        }
                    }
                    else
                    {
                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No cuenta con los privilegios suficientes");
                    }
                }
                else
                {
                    mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "No se puede insertar un objeto nulo");
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                var sb = new System.Text.StringBuilder();
                foreach (var failure in ex.EntityValidationErrors)
                {
                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                    foreach (var error in failure.ValidationErrors)
                    {
                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                        sb.AppendLine();
                    }
                }
                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString());
                SystemLog log = new SystemLog();
                log.ErrorLog(sb.ToString());
                throw new Exception(sb.ToString());
            }
            return(mensaje);
        }
Ejemplo n.º 14
0
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (ltsDetalleEquipo.Count < 4)
            {
                MessageBox.Show("El equipo minimo requiere un Couch\n" +
                                "y 3 participantes");
                return;
            }

            if (ltsDetalleEquipo.Count > 10)
            {
                MessageBox.Show("El equipo es muy grande\nCapacidad maxima" +
                                "\n1 Couch\n5 Co-Couch\n3 Participantes\n1 Reserva");
                return;
            }

            int couch         = 0;
            int cocouch       = 0;
            int reserva       = 0;
            int participantes = 0;

            for (int i = 0; i < ltsDetalleEquipo.Count; i++)
            {
                if (ltsDetalleEquipo.ElementAt(i).Rol == "Couch")
                {
                    couch++;
                }
                if (ltsDetalleEquipo.ElementAt(i).Rol == "Co-Couch")
                {
                    cocouch++;
                }
                if (ltsDetalleEquipo.ElementAt(i).Rol == "Participante")
                {
                    participantes++;
                }
                if (ltsDetalleEquipo.ElementAt(i).Rol == "Reserva")
                {
                    reserva++;
                }
            }

            if (couch == 1)
            {
                if (participantes == 3)
                {
                    if (cocouch <= 5)
                    {
                        if (reserva <= 1)
                        {
                            if (cbConcursos.Text != "" && cbInstituciones.Text != "" && cbSedes.Text != "" &&
                                cbRegiones.Text != "")
                            {
                                if (txtNombreEquipo.Text != "")
                                {
                                    Equipo objEquipo = new Equipo();
                                    objEquipo.Ciclo  = dateTimePicker1.Value;
                                    objEquipo.Nombre = txtNombreEquipo.Text;
                                    Institucion institucion = (Institucion)cbInstituciones.SelectedItem;
                                    objEquipo.IdInstitucion = institucion.IdInstitucion;
                                    Concurso        concurso        = (Concurso)cbConcursos.SelectedItem;
                                    DetalleConcurso detalleConcurso = new DetalleConcurso();
                                    detalleConcurso.IdConcurso = concurso.IdConcurso;

                                    if (new Transacciones().INSERT_FULL_EQUIPO(objEquipo, ltsDetalleEquipo, detalleConcurso))
                                    {
                                        MessageBox.Show("Equipo registrado con exito");
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("Ingrese un nombre al equipo");
                                }
                            }
                            else
                            {
                                MessageBox.Show("Seleccione todos los apartados");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Solo un reverva");
                        }
                    }
                    else
                    {
                        MessageBox.Show("No mas de 5 Co-Couch");
                    }
                }
                else
                {
                    MessageBox.Show("Deben de ser 3 participantes");
                }
            }
            else
            {
                MessageBox.Show("Solo se puede tener un couch");
            }
        }
Ejemplo n.º 15
0
                                                       //Add Ins
                                                       public async Task <Institucion> CreateFromModal(Institucion institucion)
                                                       {
                                                           try
                                                           {
                                                               _Context.Instituciones.Add(institucion);
                                                               await _Context.SaveChangesAsync();

                                                               return(institucion);
                                                           }
                                                           catch (Exception e)
                                                           {
                                                               throw new Exception(e.Message, e);
                                                           }
                                                       }
Ejemplo n.º 16
0
 public Institucion Guardar(Institucion institucion)
 {
     return(_repositoryInstitucion.SaveOrUpdate(institucion));
 }
 public abstract void guardar(Institucion obj);
Ejemplo n.º 18
0
 public void RemoveInstitucion(Institucion entity)
 {
     _institucionDbAccess.Delete(entity);
     _context.Commit();
 }
Ejemplo n.º 19
0
        public int insertarInstitucion(Institucion _institucion)
        {
            InstitucionDao dao = new InstitucionDao();

            return(dao.InsertaInstitucion(_institucion));
        }
Ejemplo n.º 20
0
        public ActionResult Asistente(HttpPostedFileBase file, Persona p, string omi, string tipoOriginal,
                                      string estado, string claveSelect, int persona, string claveOriginal,
                                      int selectEscuela = 0, string nombreEscuela = null, int selectAnioEscolar = 0,
                                      Institucion.NivelInstitucion selectNivelEscolar = Institucion.NivelInstitucion.NULL,
                                      TipoOlimpiada tipo = TipoOlimpiada.NULL, bool selectPublica = true,
                                      MiembroDelegacion.TipoAsistente tipoAsistente = MiembroDelegacion.TipoAsistente.NULL, int sede = -1)
        {
            // Se valida que el usuario tenga permiso para realizar esta acción
            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(omi, tipo == TipoOlimpiada.NULL ? TipoOlimpiada.OMI : tipo);

            if (String.IsNullOrEmpty(estado) ||
                tipo == TipoOlimpiada.NULL ||
                tipoAsistente == MiembroDelegacion.TipoAsistente.NULL ||
                o == null)
            {
                return(RedirectTo(Pagina.HOME));
            }
            failSafeViewBag();
            ViewBag.omi = o;
            if (!tienePermisos(o.registroActivo || o.registroSedes, estado))
            {
                ViewBag.errorInfo = "permisos";
                return(View(new Persona()));
            }

            bool modifyMode = !String.IsNullOrEmpty(claveOriginal);

            // Se valida que haya espacio para registrar otro competidor
            if (!esAdmin() &&
                !modifyMode &&
                tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR &&
                !puedeRegistrarOtroMas(o, tipo, estado))
            {
                ViewBag.errorInfo = "limite";
                return(View(new Persona()));
            }

            // Se valida que el miembro delegacion que se está modificando (en caso de update), exista
            MiembroDelegacion md    = null;
            TipoOlimpiada     tipoO = TipoOlimpiada.NULL;
            Institucion       i     = null;

            if (modifyMode)
            {
                tipoO = DataRowParser.ToTipoOlimpiada(tipoOriginal);
                var temp = MiembroDelegacion.obtenerMiembrosConClave(omi, tipoO, claveOriginal);
                if (temp.Count == 0)
                {
                    ViewBag.errorInfo = "invalido";
                    return(View(new Persona()));
                }
                if (temp.Count > 1)
                {
                    ViewBag.errorInfo = "duplicado";
                    return(View(new Persona()));
                }
                md = temp[0];
                if (!p.esSuperUsuario() && md.estado != estado)
                {
                    ViewBag.errorInfo = "permisos";
                    return(View(new Persona()));
                }
            }

            // Se valida que la clave que se eligió sea valida para el estado
            Estado e = Estado.obtenerEstadoConClave(estado);

            if (claveSelect != null && tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR && !claveSelect.StartsWith(e.ISO))
            {
                claveSelect = "";
            }
            if (persona != 0)
            {
                p.clave = persona;
            }

            // Se regresan todos los valores al viewbag en caso de error
            ViewBag.claveDisponible = claveSelect;
            ViewBag.estado          = e;
            ViewBag.md            = md;
            ViewBag.omi           = o;
            ViewBag.tipo          = tipo;
            ViewBag.estados       = Estado.obtenerEstados();
            ViewBag.tipoAsistente = tipoAsistente;
            limpiarErroresViewBag();
            ViewBag.resubmit = true;
            bool hayResultados = Resultados.hayResultadosParaOMI(o.numero);

            ViewBag.hayResultados = hayResultados;
            if (o.esOnline && !p.esSuperUsuario())
            {
                ViewBag.sedes = SedeOnline.obtenerSedes(o.numero, estado, tipo);
            }
            if (tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR)
            {
                ViewBag.escuelas     = Institucion.obtenerEscuelasDeEstado(tipo, estado);
                ViewBag.claveEscuela = selectEscuela;
                ViewBag.añoEscuela   = selectAnioEscolar;
                ViewBag.nivelEscuela = selectNivelEscolar.ToString();

                if (selectEscuela > 0)
                {
                    i = Institucion.obtenerInstitucionConClave(selectEscuela);
                    if (i == null)
                    {
                        ViewBag.nombreEscuela = "";
                        ViewBag.claveEscuela  = 0;
                    }
                    else
                    {
                        ViewBag.nombreEscuela = i.nombre;
                    }
                }
                else
                {
                    ViewBag.nombreEscuela = nombreEscuela;
                    ViewBag.publica       = selectPublica;
                }
            }

            // Validaciones extra de la foto
            if (file != null)
            {
                var valida = Archivos.esImagenValida(file, Peticion.TamañoFotoMaximo);
                if (valida != Archivos.ResultadoImagen.VALIDA)
                {
                    ViewBag.errorImagen = valida.ToString().ToLower();
                    return(View(p));
                }
            }

            // Validaciones del modelo
            if (!ModelState.IsValid)
            {
                return(View(p));
            }

            bool isOMIPOS = TableManager.isOMIPOS(tipo);

            if ((tipo == TipoOlimpiada.OMIP || tipo == TipoOlimpiada.OMIS || isOMIPOS) &&
                tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR)
            {
                p.omips = true;
            }

            List <MiembroDelegacion> miembrosExistentes = MiembroDelegacion.obtenerMiembrosDelegacion(omi, estado, tipo);
            bool registroCerrado = false;

            if (miembrosExistentes.Count > 0)
            {
                registroCerrado = miembrosExistentes[0].cerrado;
            }

            // Validaciones terminadas, guardamos persona y miembro delegacion
            // Primero en caso de que sea un nuevo miembro de la delegación
            if (md == null)
            {
                // Si la persona es 0, intentamos hacer match basándonos en el nombre, y solamente en el nombre
                if (persona == 0)
                {
                    Persona pe = Persona.obtenerPersonaConNombre(p.nombreCompleto);
                    if (pe != null)
                    {
                        persona = pe.clave;
                    }
                }

                // Nuevo asistente
                if (persona == 0)
                {
                    // Si no hay clave de persona previa, se agrega una nueva persona
                    p.nuevoUsuario();
                }
                else
                {
                    // Si tengo clave, se intenta conseguir
                    Persona per = Persona.obtenerPersonaConClave(persona);
                    if (per == null)
                    {
                        ViewBag.errorInfo = "persona";
                        return(View(new Persona()));
                    }

                    p.clave  = per.clave;
                    p.oculta = per.oculta;
                    p.omips  = per.omips;
                }

                if (tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR)
                {
                    if (isOMIPOS)
                    {
                        if (persona == 0)
                        {
                            p.oculta = true;
                        }
                    }
                    else
                    {
                        p.oculta = false;
                    }
                }

                p.foto = guardaFoto(file, p.clave);
                p.guardarDatos(generarPeticiones: false, lugarGuardado: Persona.LugarGuardado.REGISTRO);

                // Se genera un nuevo miembro delegacion
                md               = new MiembroDelegacion();
                md.olimpiada     = o.numero;
                md.tipoOlimpiada = tipo;
                md.estado        = estado;
                md.clave         = claveSelect;
                md.tipo          = tipoAsistente;
                md.claveUsuario  = p.clave;
                md.sede          = sede;
                md.cerrado       = registroCerrado;
                md.nuevo();

                // Se registra la telemetria
                Log.add(Log.TipoLog.REGISTRO, "Usuario " + getUsuario().nombreCompleto + " registró a " +
                        p.nombreCompleto + " en el estado " + md.estado + " con clave " + md.clave +
                        " en la categoría " + md.tipoOlimpiada.ToString());
            }
            else
            {
                // Si ya hay resultados no podemos cambiar la clave, estado, o tipo de OMI
                if (hayResultados)
                {
                    tipo        = md.tipoOlimpiada;
                    claveSelect = md.clave;
                    estado      = md.estado;

                    // Adicionalmente si es competidor, no se piuede cambiar su tipo de asistencia
                    // ni volver a alguien mas competidor
                    if (md.tipo == MiembroDelegacion.TipoAsistente.COMPETIDOR ||
                        tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR)
                    {
                        tipoAsistente = md.tipo;
                    }
                }

                // Modificando asistente
                // Primero los datos de persona
                Persona per = Persona.obtenerPersonaConClave(md.claveUsuario);
                if (!modifyMode && tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR && !isOMIPOS)
                {
                    per.oculta = false;
                }
                p.clave  = per.clave;
                p.oculta = per.oculta;
                p.omips  = per.omips;
                p.foto   = guardaFoto(file, p.clave);
                p.guardarDatos(generarPeticiones: false, lugarGuardado: Persona.LugarGuardado.REGISTRO);

                // Luego el miembro delegacion
                md.tipoOlimpiada = tipo;
                md.estado        = estado;
                md.clave         = claveSelect;
                md.tipo          = tipoAsistente;
                md.sede          = sede;
                md.cerrado       = registroCerrado;
                md.guardarDatos(claveOriginal, tipoO);

                // Se registra la telemetria
                Log.add(Log.TipoLog.REGISTRO, "Usuario " + getUsuario().nombreCompleto + " actualizó a " +
                        p.nombreCompleto + " en el estado " + md.estado + " con clave " + md.clave +
                        " en la categoría " + md.tipoOlimpiada.ToString());
            }

            // Ahora se guarda la escuela
            if (tipoAsistente == MiembroDelegacion.TipoAsistente.COMPETIDOR)
            {
                // La escuela ya se consultó en la sección de viewbag, si es null, se llenó la sección de escuela nueva
                if (i == null)
                {
                    if (!String.IsNullOrEmpty(nombreEscuela))
                    {
                        // La escuela aun puede ya existir pero no la vieron y la volvieron a escribir,
                        // aqui tratamos de ver si ya existe
                        i = Institucion.buscarInstitucionConNombre(nombreEscuela);
                        if (i == null)
                        {
                            // Se genera una nueva escuela vacía y se asignan los datos que tenemos
                            i = new Institucion();
                            i.nuevaInstitucion();
                            i.nombre  = nombreEscuela;
                            i.publica = selectPublica;
                        }
                    }
                }

                // Si en este punto tenemos una escuela, actualizamos los datos de la escuela y
                // actualizamos el miembro delegacion
                if (i != null)
                {
                    switch (selectNivelEscolar)
                    {
                    case Institucion.NivelInstitucion.PRIMARIA:
                        i.primaria = true;
                        break;

                    case Institucion.NivelInstitucion.SECUNDARIA:
                        i.secundaria = true;
                        break;

                    case Institucion.NivelInstitucion.PREPARATORIA:
                        i.preparatoria = true;
                        break;
                    }
                    i.guardar(generarPeticiones: false);

                    md.claveEscuela = i.clave;
                    md.nivelEscuela = selectNivelEscolar;
                    md.añoEscuela   = selectAnioEscolar;
                    md.guardarDatosEscuela();
                }
            }

            ViewBag.guardado = true;
            return(View(p));
        }
Ejemplo n.º 21
0
        public Mensaje createInstitution([FromBody]UtilsJson.AInstitucion institution)
        {
            Mensaje mensaje = null;

            try
            {
                if (institution != null)
                {
                    //datos logueo
                    string correo_electronico_l = institution.logueo.correo_electronico;
                    string password1 = institution.logueo.contrasena1;
                    string password2 = institution.logueo.contrasena2;

                    //datos representante
                    string nombre_r = institution.representante.nombre;
                    string apellido_r = institution.representante.apellido;
                    string tipo_identificacion = institution.representante.tipo_identificacion;
                    string identificacion = institution.representante.identificacion;
                    string urlCvlac = institution.representante.urlCvlac;
                    string correo_electronico_r = institution.representante.correo_electronico;

                    //datos institucion
                    string codigo = institution.codigo_registro;
                    string nombre = institution.nombre;
                    string descripcion = institution.descripcion;
                    string correo_electronico = institution.correo_electronico;
                    string direccion_postal = institution.direccion_postal;
                    string facebook = institution.facebook;
                    string fax = institution.fax;
                    string impacto = institution.impacto;
                    string linkedin = institution.linkedin;
                    string naturaleza = institution.naturaleza;
                    string pagina_web = institution.pagina_web;
                    int tamano = institution.tamano;
                    string telefono = institution.telefono;
                    string tipo_institucion = institution.tipo_institucion;
                    string twitter = institution.twitter;
                    string constitucion = institution.constitucion;
                    string fecha_creacion = institution.fecha_creacion;
                    string latitud = institution.latitud;
                    string longitud = institution.longitud;
                    string imagen_base64 = institution.imagen_base64;
                    string tipo_empresa = (!String.IsNullOrWhiteSpace(institution.tipo_empresa)) ? institution.tipo_empresa : EnumTipoEmpresa.Compañia;
                    UtilsJson.AMunicipio municipio = institution.municipio;

                    UtilsJson.ASector[] sectores = institution.sectores;
                    UtilsJson.ATipoBiotecnologia[] Tipos_Biotecnologia = institution.Tipos_Biotecnologia;

                    if (codigo != null)
                    {
                        //verificacion de existencia y estado del codigo
                        Expression<Func<SolicitudRegistro, bool>> query = u => u.codigo == codigo && u.estado == true;
                        SolicitudRegistro solicitud = _repositorio.Get<SolicitudRegistro>(query);
                        //Si la solicitud existe y no se ha usado subo a session el codigo
                        if (solicitud != null)
                        {
                            Municipio municipioDb = null;

                            List<Sector> lstSectores = new List<Sector>();

                            List<TipoBiotecnologia> lstTipoBiotecnologia = new List<TipoBiotecnologia>();

                            if (municipio.id > 0)
                            {
                                municipioDb = _repositorio.Get<Municipio>(municipio.id);
                            }

                            if (sectores != null)
                            {
                                lstSectores = convertToSector(sectores);
                            }

                            if (Tipos_Biotecnologia != null)
                            {
                                lstTipoBiotecnologia = convertToTipoBiotecnologia(Tipos_Biotecnologia);
                            }

                            Institucion institucion_api = new Institucion();
                            if (password1.Equals(password2))
                            {
                                institucion_api.logueo = new LogueoInstitucion
                                {
                                    correo_electronico = correo_electronico_l,
                                    contrasena = CifradoDatos.cifrarPassword(password2),
                                    fecha_ult_modificacion = DateTime.Now,
                                    rol = EnumTipoRol.usuario
                                };

                                institucion_api.descripcion = descripcion;
                                institucion_api.impacto = impacto;
                                institucion_api.correo_electronico = correo_electronico;
                                institucion_api.latitud = latitud;
                                institucion_api.linkedin = linkedin;
                                institucion_api.longitud = longitud;
                                institucion_api.municipio = municipioDb;
                                institucion_api.naturaleza = naturaleza;
                                institucion_api.constitucion = constitucion;
                                institucion_api.nombre = nombre;
                                institucion_api.pagina_web = pagina_web;
                                institucion_api.tamano = tamano;
                                institucion_api.telefono = telefono;
                                institucion_api.fax = fax;
                                institucion_api.direccion_postal = direccion_postal;
                                institucion_api.facebook = facebook;
                                institucion_api.tipo_institucion = tipo_institucion;
                                institucion_api.twitter = twitter;
                                institucion_api.fecha_creacion = (!string.IsNullOrWhiteSpace(fecha_creacion)) ? Convert.ToDateTime(fecha_creacion) : (DateTime?)null;

                                if (institucion_api.banner == null)
                                {
                                    if (!string.IsNullOrWhiteSpace(imagen_base64))
                                    {
                                        institucion_api.banner = new Imagen { imagenBase64 = imagen_base64, fecha_ult_modificacion = DateTime.Now };

                                        //Redimension de la imagen y creacion de icono
                                        string extension = imagen_base64.Split(',')[0];
                                        imagen_base64 = imagen_base64.Split(',')[1];

                                        byte[] bytes = Convert.FromBase64String(imagen_base64);

                                        if (bytes.Length > 0)
                                        {
                                            byte[] filebytesIcon =UtilsHost.Redimensionar(Image.FromStream(new MemoryStream(bytes)), 100, 100, 32);

                                            string encodedDataIcon = extension + "," + Convert.ToBase64String(filebytesIcon, Base64FormattingOptions.None);
                                            institucion_api.icono = new Imagen { imagenBase64 = encodedDataIcon, fecha_ult_modificacion = DateTime.Now };
                                        }
                                    }
                                }
                                else
                                {
                                    if (!string.IsNullOrWhiteSpace(imagen_base64))
                                    {
                                        institucion_api.banner.imagenBase64 = imagen_base64;
                                        institucion_api.banner.fecha_ult_modificacion = DateTime.Now;

                                        //Redimension de la imagen y creacion de icono
                                        string extension = imagen_base64.Split(',')[0];
                                        imagen_base64 = imagen_base64.Split(',')[1];

                                        byte[] bytes = Convert.FromBase64String(imagen_base64);

                                        if (bytes.Length > 0)
                                        {
                                            byte[] filebytesIcon = UtilsHost.Redimensionar(Image.FromStream(new MemoryStream(bytes)), 100, 100, 32);

                                            string encodedDataIcon = extension + "," + Convert.ToBase64String(filebytesIcon, Base64FormattingOptions.None);
                                            institucion_api.icono.imagenBase64 = encodedDataIcon;
                                            institucion_api.icono.fecha_ult_modificacion = DateTime.Now;
                                        }
                                    }
                                }

                                //creo un nuevo representante para la institucion
                                Persona persona = new Persona
                                {
                                    nombre = nombre_r,
                                    apellido = apellido_r,
                                    tipo_identificacion = tipo_identificacion,
                                    identificacion = identificacion,
                                    urlCvlac = urlCvlac,
                                    correo_electronico = correo_electronico_r,
                                    tipoPersona = EnumTipoPersona.director,
                                    fecha_ult_modificacion = DateTime.Now,
                                    estado=true
                                };

                                //Genero el correo para confirmacion para habilitar el perfil
                                StringBuilder bodyMail = new StringBuilder();
                                //Creo un token de autenticacion para habilitar el perfil
                                string codigoEnabled = CifradoDatos.cifrarRSA(institucion_api.logueo.correo_electronico);
                                bodyMail.AppendLine("Para habilitar el perfil de la institucion " + institucion_api.nombre + " dirijase al siguiente enlace.");
                                string informacionHost = UtilsHost.serverInfoCurrent();
                                bodyMail.AppendLine("<a href=\"" + informacionHost + "/Institucion/HabilitarCuenta?tokenEnabled=" + codigoEnabled + "\">Activar perfil.</a>" + "</br>");
                                string subject = "Confirmación y habilitacion de perfil.";
                                Mail mail = new Mail(institucion_api.logueo.correo_electronico, subject, bodyMail);

                                //Verifico si la institucion existe en el sistema
                                List<Mensaje> lstVerificaExiste = existeInstitucion(persona);
                                List<Mensaje> lstVerificaExisteEmail = mail.existeEmail();
                                if (lstVerificaExiste.Count == 0 && lstVerificaExisteEmail.Count == 0)
                                {
                                    //Envio el correo de confirmacion
                                    if (mail.sendMail())
                                    {
                                        persona.institucion = institucion_api;
                                        _repositorio.SaveOrUpdate<Persona>(persona);

                                        //Elimino las relaciones de la entidad institucion con sectores y tipoBiotecnologia
                                        Expression<Func<InstitucionSector, bool>> query3 = u => u.institucion.id == institucion_api.id;
                                        _repositorio.DeleteFilter<InstitucionSector>(query3);
                                        Expression<Func<InstitucionTipoBiotec, bool>> query4 = u => u.institucion.id == institucion_api.id;
                                        _repositorio.DeleteFilter<InstitucionTipoBiotec>(query4);

                                        //almaceno las relaciones de la entidad institucion con sectores y tipoBiotecnologia
                                        foreach (Sector sector in lstSectores)
                                        {
                                            _repositorio.SaveOrUpdate(new InstitucionSector { institucion = institucion_api, sector = sector, fecha_ult_modificacion = DateTime.Now });
                                        }

                                        foreach (TipoBiotecnologia tipo in lstTipoBiotecnologia)
                                        {
                                            _repositorio.SaveOrUpdate(new InstitucionTipoBiotec { institucion = institucion_api, tipoBiotecnologia = tipo, fecha_ult_modificacion = DateTime.Now });
                                        }

                                        // Desabilito el codigoPreRegistro en el poll de codigo para que no se pueda volver a usar
                                        solicitud.estado = false;
                                        solicitud.fecha_ult_modificacion = DateTime.Now;
                                        _repositorio.SaveOrUpdate<SolicitudRegistro>(solicitud);

                                        mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Verifique el correo de logueo para activar el perfil.");
                                    }
                                    else
                                    {
                                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "Se produjo un error mientras se enviaba el correo. Correo invalido");
                                    }
                                }
                            }
                            else
                            {
                                mensaje = new Mensaje();
                                mensaje.titulo = "Error en validacion de password diferente";
                                mensaje.tipo = "Error";
                                mensaje.cuerpo = "Error en validacion de password diferente";
                            }
                        }
                        else
                        {
                            mensaje = new Mensaje();
                            mensaje.titulo = "Error en validacion de codigo";
                            mensaje.tipo = "Error";
                            mensaje.cuerpo = "Error el codigo no existe o ya fue utilizado";
                        }
                    }
                    else
                    {
                        mensaje = new Mensaje();
                        mensaje.titulo = "Error en validacion de codigo";
                        mensaje.tipo = "Error";
                        mensaje.cuerpo = "Error el codigo es requerido";
                    }
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                var sb = new System.Text.StringBuilder();
                foreach (var failure in ex.EntityValidationErrors)
                {
                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                    foreach (var error in failure.ValidationErrors)
                    {
                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                        sb.AppendLine();
                    }
                }
                mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", sb.ToString());
                SystemLog log = new SystemLog();
                log.ErrorLog(sb.ToString());
                throw new Exception(sb.ToString());
            }

            return mensaje;
        }