2009-10-08 63 views
1

我有這樣的:如何檢查另一個用戶在公司層次結構中是否處於相同或較低級別?

UserProfile prof = getUserProfile(properties.CurrentUserId); 
UserProfile toCheck = getUserProfile(anotherUsersId); 

「教授」的用戶必須在更高或相同的水平「toCheck」用戶。如果「toCheck」處於較低級別,他/她必須位於層次結構樹的同一分支上。如果他們處於同一級別,他們的經理必須是相同的。

有沒有簡單的方法來檢查這個?

+0

如何定義你的情況 「水平」? – 2009-10-08 08:37:17

+0

用戶的經理級別高1級。公司只有一個超級管理者。因此,層次樹就像一棵真正的樹,顛倒過來。 – Vili 2009-10-08 08:38:57

+1

我認爲這是使用Sharepoint UserProfile類(命名空間Microsoft.Office.Server.UserProfiles),我自己沒有經驗。如果情況並非如此,那麼Vili需要發佈他們的UserProfile類的代碼。 – Lazarus 2009-10-08 08:40:52

回答

2

有幾個方法,應該幫助你在這裏:

沒有 「簡單的方式」,我已經找到,但你可以編寫自己的幫助程序類,使用這些方法,遍歷用戶配置文件並查找所需的信息。

另外:「同事」與此無關。它們是一個人員列表,通過完整的「我的網站」實施,用戶可以自行管理。

+0

GetManager是解決方案。但這不是一個簡單的方法。 :)(非平凡(對我來說))遞歸是需要的。 – Vili 2009-10-08 12:54:52

0

一些僞代碼:

function compare(manager, toCheck, prof) 
{ 
    toManager=toCheck.manager; 
    if (toManager!=null) 
    { 
     if (manager==tomanager || prof==tomanager) 
     { 
      return true; 
     } 
     else 
     { 
      return compare("", tomanager, prof); 
     } 
    } 
    else // he/she is the boss 
    { 
     return false; 
    } 

} 

... 

if (prof.manager!=null) 
{ 
    compare(prof.manager, toCheck, prof); 
} 
else // he/she is the boss 
{ 
    return true; 
} 
相關問題