i just tried to get all the tasks assigned to LoggedIn User but there was a problem with UserName like user name sometimes contains Name only like ABC and some time it contains domain like MyDomain/UserName also known as Login Name so i tried these queries to retrieve all the tasks assigned to current user
var query = “<WHERE><Eq><FieldRef Name=’AssignedTo’/><Value Type=’User’ LookupId=’True’>” + web.CurrentUser.ID + “</Value>” “</Eq></Where>”
OR
“<Where><Eq><FieldRef Name=” AssignedTo” /><Value Type=”Integer”><UserID Type=”Integer” /></Value></Eq> </Where>”
but i am unable to do this so finally i tried to get value from list, convert it to SPUser object after getting string value from Particular Field and then comparing this user to logged in user as
private List<MyTask> GetUserTasks()
{
List<MyTask> listItems = new List<MyTask>();
MyTask objTask = null;
//Getting Data from Parent Site
using (SPWeb CurrentWeb = SPContext.Current.Site.OpenWeb())
{
SPList TasksList = CurrentWeb.Lists[“Tasks”];
if (TasksList != null)
{
SPQuery query = new SPQuery();
query.Query = “<Where><Neq><FieldRef Name=’Status’/><Value Type=’Text’>Completed</Value></Neq></Where>”;
SPListItemCollection listItemsColl = TasksList.GetItems(query);
if (listItemsColl.Count > 0)
{
foreach (SPListItem item in listItemsColl)
{
if (item[“AssignedTo”] != null)
{
CurrentWeb.AllowUnsafeUpdates = true;
SPUser user = CurrentWeb.EnsureUser(GetUserNames(item, Convert.ToString(item[“AssignedTo”])));
CurrentWeb.AllowUnsafeUpdates = false;
if (user.LoginName == SPContext.Current.Web.CurrentUser.LoginName)
{
objTask = new MyTask();
objTask.Title = Convert.ToString(item[“Title”]);
objTask.AssignedTo = GetUserNames(item, Convert.ToString(item[“AssignedTo”]));
objTask.DueDate = Convert.ToDateTime(item[“DueDate”]) == DateTime.MinValue ? string.Empty : Convert.ToDateTime(item[“DueDate”]).ToShortDateString();
objTask.Status = Convert.ToString(item[“Status”]);
objTask.URL = CurrentWeb.Url + “/Lists/Tasks/DispForm.aspx?&ID=” + Convert.ToString(item[“ID”]);
objTask.WebTitle = SPContext.Current.Site.RootWeb.Title;
listItems.Add(objTask);
}
}
}
}
}
}
//Getting Data from all Subsites
SPWebCollection SubSites = SPContext.Current.Web.GetSubwebsForCurrentUser();
for (int i = 0; i < SubSites.Count; i++)
{
using (SPSite CurrentSite = new SPSite(SubSites[i].Url))
{
using (SPWeb CurrentWeb = CurrentSite.OpenWeb())
{
SPList TasksList = CurrentWeb.Lists[“Tasks”];
if (TasksList != null)
{
SPQuery SubSitesQuery = new SPQuery();
SubSitesQuery.Query = “<Where><Neq><FieldRef Name=’Status’/><Value Type=’Text’>Completed</Value></Neq></Where>”;
SPListItemCollection listItemsColl = TasksList.GetItems(SubSitesQuery);
if (listItemsColl.Count > 0)
{
foreach (SPListItem item in listItemsColl)
{
if (item[“AssignedTo”] != null)
{
CurrentWeb.AllowUnsafeUpdates = true;
SPUser user = CurrentWeb.EnsureUser(GetUserNames(item, Convert.ToString(item[“AssignedTo”])));
CurrentWeb.AllowUnsafeUpdates = false;
if (user.LoginName == SPContext.Current.Web.CurrentUser.LoginName)
{
objTask = new MyTask();
objTask.Title = Convert.ToString(item[“Title”]);
objTask.AssignedTo = GetUserNames(item, Convert.ToString(item[“AssignedTo”]));
objTask.DueDate = Convert.ToDateTime(item[“DueDate”]) == DateTime.MinValue ? string.Empty : Convert.ToDateTime(item[“DueDate”]).ToShortDateString();
objTask.Status = Convert.ToString(item[“Status”]);
objTask.URL = CurrentWeb.Url + “/Lists/Tasks/DispForm.aspx?&ID=” + Convert.ToString(item[“ID”]);
objTask.WebTitle = SubSites[i].Title;
listItems.Add(objTask);
}
}
}
}
}
}
}
}
return listItems;
}
private string GetUserNames(SPListItem item, string Participants)
{
string AllUsers = string.Empty;
SPFieldUserValueCollection UserColl = new SPFieldUserValueCollection(item.Web, Participants);
foreach (SPFieldUserValue Value in UserColl)
{
AllUsers = AllUsers + Value.User.Name + “,”;
}
if (AllUsers.Length > 0)
{
AllUsers = AllUsers.Substring(0, AllUsers.Length – 1);
}
return AllUsers;
}