"Домашние" разделы для разных групп пользователей
Пользователи бывают разные. Есть менеджеры по продажам, есть бухгалтера, есть отдел кадров и т.д. и т.п. Поэтому совершенно очевидно, что может встать проблема раздела, который открывается по умолчанию при входе в BPM. Один и тот же на всех может не устраивать. Особенно (и чаще всего) "священных коров". Проблема невелика: пара кликов мышкой, но вот "Хачу и фсё!"
Тогда надо вводить понятие "домашнего раздела" и перенаправлять пользователя в MainPage на "домашний раздел".
Я сделал, для этого метод в MainPage.
Метод перенаправляет на URL раздела, указанный в справочнике DepartmentHomeModule, департамент берет из записи контакта. Ежели уже перенаправляли, то ничего не делает (пользователь уже вошел), ну и если URL не установлен в справочнике тоже ничего не делает.
Понятно, что можно по желанию прикрутить свой справочник с другими критериями (хоть дополнительное поле в Контакте ввести), но это уже детали. Ваша фантазия ничем не ограничена.
Метод у меня вставлен в самый конец PageLoadComplete MainPage'а. Работает на ура.
Метод такой вышел:
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 );
}
}
}