public Mensaje deleteConferencista([FromBody] UtilsJson.APersona conferencista)
        {
            Mensaje mensaje = null;

            try
            {
                if (conferencista != null)
                {
                    if (!string.IsNullOrWhiteSpace(conferencista.token))
                    {
                        if (AutenticacionToken.validateToken(conferencista.token) == 1)
                        {
                            long          id_institucion_c = (!string.IsNullOrWhiteSpace(conferencista.Ainstitucion)) ? long.Parse(conferencista.Ainstitucion) : 0;
                            Institucion   institucion      = _repositorio.Get <Institucion>(id_institucion_c);
                            Conferencista conferencistaDB  = _repositorio.Get <Conferencista>(conferencista.id);
                            if (institucion != null && conferencistaDB != null)
                            {
                                if (AutenticacionToken.validateUserToken(conferencista.token, institucion.logueo.correo_electronico))
                                {
                                    _repositorio.Delete <Conferencista>(conferencistaDB.id);
                                    mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Conferencista 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 conferencista 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 editConferencista([FromBody] UtilsJson.APersona conferencista)
        {
            Mensaje mensaje = null;

            try
            {
                if (conferencista != null)
                {
                    if (!string.IsNullOrWhiteSpace(conferencista.token))
                    {
                        if (AutenticacionToken.validateToken(conferencista.token) == 1)
                        {
                            long          id_institucion_c = (!string.IsNullOrWhiteSpace(conferencista.Ainstitucion)) ? long.Parse(conferencista.Ainstitucion) : 0;
                            Institucion   institucion      = _repositorio.Get <Institucion>(id_institucion_c);
                            Conferencista conferencistaDB  = _repositorio.Get <Conferencista>(conferencista.id);
                            if (institucion != null && conferencistaDB != null)
                            {
                                if (AutenticacionToken.validateUserToken(conferencista.token, institucion.logueo.correo_electronico))
                                {
                                    //datos personales
                                    string tipo_identificacion = validarTipoIdentificacion(conferencista.tipo_identificacion);
                                    string identificacion      = conferencista.identificacion;
                                    string nombre_persona      = conferencista.nombre;
                                    string apellido_persona    = conferencista.apellido;
                                    string correo_persona      = conferencista.correo_electronico;
                                    string urlCvlac            = conferencista.urlCvlac;
                                    string perfil = conferencista.perfil_profesional;
                                    string foto   = conferencista.foto;

                                    if (tipo_identificacion != null)
                                    {
                                        Imagen newImagen = null;
                                        if (!string.IsNullOrWhiteSpace(foto))
                                        {
                                            if (conferencistaDB.persona.foto != null)
                                            {
                                                conferencistaDB.persona.foto.imagenBase64 = foto;
                                            }
                                            else
                                            {
                                                newImagen = new Imagen {
                                                    imagenBase64 = foto
                                                };
                                                conferencistaDB.persona.foto = newImagen;
                                            }
                                        }
                                        conferencistaDB.persona.tipo_identificacion = tipo_identificacion;
                                        conferencistaDB.persona.identificacion      = identificacion;
                                        conferencistaDB.persona.nombre             = nombre_persona;
                                        conferencistaDB.persona.apellido           = apellido_persona;
                                        conferencistaDB.persona.correo_electronico = correo_persona;
                                        conferencistaDB.persona.urlCvlac           = urlCvlac;
                                        conferencistaDB.persona.perfil_profesional = perfil;
                                        conferencistaDB.fecha_ult_modificacion     = DateTime.Now;
                                        //Almaceno o actualizo la salaMesa
                                        _repositorio.SaveOrUpdate <Conferencista>(conferencistaDB);

                                        mensaje = new Mensaje(EnumTipoMensaje.Notificacion, "Notificación", "Conferencista editado exitosamente.");
                                    }
                                    else
                                    {
                                        mensaje = new Mensaje(EnumTipoMensaje.Error, "Error", "El tipo de identificacion no existe. verifique que el valor sea valido");
                                    }
                                }
                                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 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 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);
        }