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);
        }
        /// <summary>
        /// Elimina el registro de un participante a un evento especificado por id.
        /// </summary>
        /// <param name="eventoParticipante">The evento participante.</param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public Mensaje deleteEventoParticipante([FromBody] UtilsJson.AEventoParticipante eventoParticipante)
        {
            Mensaje mensaje = null;

            try
            {
                if (eventoParticipante != null)
                {
                    if (!string.IsNullOrWhiteSpace(eventoParticipante.token_string))
                    {
                        if (AutenticacionToken.validateToken(eventoParticipante.token_string) == 1)
                        {
                            Institucion        institucion          = _repositorio.Get <Institucion>(eventoParticipante.id_institucion);
                            EventoParticipante eventoParticipanteDB = _repositorio.Get <EventoParticipante>(eventoParticipante.id_evento_institucion);
                            if (institucion != null && eventoParticipanteDB != null)
                            {
                                if (AutenticacionToken.validateUserToken(eventoParticipante.token_string, institucion.logueo.correo_electronico))
                                {
                                    _repositorio.Delete <Conferencista>(eventoParticipanteDB.id);
                                    mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Registro a evento 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 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 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);
        }
        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);
        }