Публикация

"Домашние" разделы для разных групп пользователей

Пользователи бывают разные. Есть менеджеры по продажам, есть бухгалтера, есть отдел кадров и т.д. и т.п. Поэтому совершенно очевидно, что может встать проблема раздела, который открывается по умолчанию при входе в BPM. Один и тот же на всех может не устраивать. Особенно (и чаще всего) "священных коров". Проблема невелика: пара кликов мышкой, но вот "Хачу и фсё!"

Тогда надо вводить понятие "домашнего раздела" и перенаправлять пользователя в MainPage на "домашний раздел".

Я сделал, для этого метод в MainPage.

Метод перенаправляет на URL раздела, указанный в справочнике DepartmentHomeModule, департамент берет из записи контакта. Ежели уже перенаправляли, то ничего не делает (пользователь уже вошел), ну и если URL не установлен в справочнике тоже ничего не делает.

Понятно, что можно по желанию прикрутить свой справочник с другими критериями (хоть дополнительное поле в Контакте ввести), но это уже детали. Ваша фантазия ничем не ограничена. :wink:

Метод у меня вставлен в самый конец PageLoadComplete MainPage'а. Работает на ура.

Метод такой вышел:

void RedirectToDepartmentHomeModule(Guid ContactId) {

Guid DepartmentId = Guid.Empty;
string HomeURL = "";

var session = HttpContext.Current.Session;

if (session["redirect"] == null) {
        session.Add("redirect", 1);

        Select selectDepartmentId = new Select(UserConnection).
                        Column("DepartmentId").
                                From("Contact").
                                        Where(Column.Const(ContactId.ToString())).IsEqual("Id")
                as Select;                     
               
        using (var dbExecutor = UserConnection.EnsureDBConnection()) {
                using (IDataReader dr = selectDepartmentId.ExecuteReader(dbExecutor)) {
                        if (dr.Read()) {
                                DepartmentId = UserConnection.DBTypeConverter.DBValueToGuid(dr[0]);
                        }                      
                }
        }
       
        Select selectHomeURL = new Select(UserConnection).
                        Column("HomeURL").
                                From("DepartmentHomeModule").
                                        Where(Column.Const(DepartmentId.ToString())).IsEqual("DepartmentId")
                as Select;                     
               
        using (var dbExecutor = UserConnection.EnsureDBConnection()) {
                using (IDataReader dr = selectHomeURL.ExecuteReader(dbExecutor)) {
                        if (dr.Read()) {
                                HomeURL = dr[0].ToString();
                        }                      
                }
        }
               
        if (!String.IsNullOrWhiteSpace(HomeURL)) {
                HttpContext.Current.Response.Redirect( HomeURL );
        }
}
}

Нравится

Поделиться

0 комментариев
Показать все комментарии