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);
        }
        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);
        }