private void GetAllActionsOwed(string userID) { List<ActionOwed> actionsOwed = new List<ActionOwed>(); SPSecurity.RunWithElevatedPrivileges(delegate() { string[] actionsOwedSites = sites.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); foreach (string site in actionsOwedSites) { using (SPSite emisSite = new SPSite(site)) { using (SPWeb emisRootWeb = emisSite.OpenWeb()) { SPSiteDataQuery query = new SPSiteDataQuery(); query.Lists = "<Lists ServerTemplate=\"107\" />"; query.ViewFields = "<FieldRef Name=\"Title\" />" + "<FieldRef Name=\"ID\" />" + "<FieldRef Name=\"AssignedTo\" Nullable=\"TRUE\" Type=\"User\" />" + "<FieldRef Name=\"Status\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"DueDate\" Nullable=\"TRUE\" Type=\"DateTime\" />" + "<FieldRef Name=\"IsDelegated\" Nullable=\"TRUE\" Type=\"Boolean\" />" + "<FieldRef Name=\"OriginalAssignee\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"ActionOwed\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"TaskSource\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"FileRef\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"Related Content\" Nullable=\"TRUE\" Type=\"Text\" />"; query.Query = "<Where>" + "<And>" + "<Eq>" + "<FieldRef Name='AssignedTo' />" + " <Value Type='User'>" + userID + "</Value>" + "</Eq>" + "<Neq>" + "<FieldRef Name='Status' />" + "<Value Type='Choice'>Completed</Value>" + "</Neq>" + "</And>" + "</Where>" + "<OrderBy>" + "<FieldRef Name=\"DueDate\" />" + "</OrderBy>"; query.Webs = "<Webs Scope=\"SiteCollection\" />"; Microsoft.Office.Server.Diagnostics.PortalLog.LogString("ActionsOwed WebPart: About to get data from all subsites for {0}", site); Microsoft.Office.Server.Diagnostics.PortalLog.LogString("ActionsOwed WebPart: SPSiteDataQuery = {0}", query.Query); DataTable dt = emisRootWeb.GetSiteData(query); Microsoft.Office.Server.Diagnostics.PortalLog.LogString("ActionsOwed WebPart: Got data from all subsites for {0}", site); foreach (DataRow row in dt.Rows) { ActionOwed action = new ActionOwed() { TaskID = row["ID"].ToString(), Title = row["Title"].ToString(), DueDate = DateTime.Parse(row["DueDate"].ToString()), Status = row["Status"].ToString(), OriginalAssignee = row["OriginalAssignee"].ToString(), Action = row["ActionOwed"].ToString(), Source = row["TaskSource"].ToString(), FileRef = row["FileRef"].ToString(), TaskSite = site }; if (string.IsNullOrEmpty(row["IsDelegated"].ToString())) { action.IsDelegated = false; } else if (row["IsDelegated"].ToString() == "1") { action.IsDelegated = true; } else if (bool.Parse(row["IsDelegated"].ToString())) { action.IsDelegated = true; } string taskRelativeLink = row["FileRef"].ToString().Substring(row["FileRef"].ToString().IndexOf("#") + 1, (row["FileRef"].ToString().Length - row["FileRef"].ToString().IndexOf("#") - 1)); action.TaskLink = taskRelativeLink; action.AssignedTo = row["AssignedTo"].ToString().Substring(row["AssignedTo"].ToString().IndexOf("#") + 1, (row["AssignedTo"].ToString().Length - row["AssignedTo"].ToString().IndexOf("#") - 1)); actionsOwed.Add(action); } } } } }); grdActionsOwed.DataSource = actionsOwed; grdActionsOwed.DataBind(); }
private void GetAllMARTATasksFromWeb(SPWeb web) { SPContentType martaTaskContentType = web.AvailableContentTypes["MARTA Task"]; SPContentType martaWFTaskContentType = web.AvailableContentTypes["MARTA Workflow Task"]; IList<SPContentTypeUsage> martaTaskUsages = null; IList<SPContentTypeUsage> martaWFTaskUsages = null; try { martaTaskUsages = SPContentTypeUsage.GetUsages(martaTaskContentType); martaWFTaskUsages = SPContentTypeUsage.GetUsages(martaWFTaskContentType); //Combine the usages of the WF Marta Task with the regular MARTA Task. foreach (SPContentTypeUsage usage in martaWFTaskUsages) { if (martaTaskUsages.Where(u => u.Url == usage.Url).SingleOrDefault() == null) martaTaskUsages.Add(usage); } } catch (Exception ex) { lblStatusMessage.Text = string.Format("Error getting Content Types for MARTA Task and/or MARTA Workflow Task. \r\n ErrorMessage: {0} \r\n StackTrace: {1}", ex.Message, ex.StackTrace); } foreach (SPContentTypeUsage taskUsage in martaTaskUsages) { if (taskUsage.IsUrlToList) { if (taskUsage.Url.StartsWith("/Lists")) { try { SPList taskList = web.GetList(taskUsage.Url); //Get the MARTA Tasks and put them in a collection SPQuery queryForActionsOwed = new SPQuery() { Query = @"<Where> <And> <Eq> <FieldRef Name='AssignedTo' /> <Value Type='User'><UserID/></Value> </Eq> <Neq> <FieldRef Name='Status' /> <Value Type='Choice'>Completed</Value> </Neq> </And> </Where> <OrderBy> <FieldRef Name='DueDate'/> </OrderBy>" }; foreach (SPListItem activeTask in taskList.GetItems(queryForActionsOwed)) { ActionOwed action = new ActionOwed() { TaskID = activeTask["ID"].ToString(), Title = activeTask["Title"].ToString(), DueDate = DateTime.Parse(activeTask["DueDate"].ToString()), Status = activeTask["Status"].ToString(), OriginalAssignee = (activeTask["OriginalAssignee"] != null) ? activeTask["OriginalAssignee"].ToString() : String.Empty, Action = (activeTask["ActionOwed"] != null) ? activeTask["ActionOwed"].ToString() : String.Empty, Source = (activeTask["TaskSource"] != null) ? activeTask["TaskSource"].ToString() : String.Empty, FileRef = activeTask["FileRef"].ToString(), TaskSite = web.Site.Url }; if (activeTask["IsDelegated"] == null) { action.IsDelegated = false; } else if (string.IsNullOrEmpty(activeTask["IsDelegated"].ToString())) { action.IsDelegated = false; } else if (activeTask["IsDelegated"].ToString() == "1") { action.IsDelegated = true; } else if (bool.Parse(activeTask["IsDelegated"].ToString())) { action.IsDelegated = true; } //string taskRelativeLink = activeTask["FileRef"].ToString().Substring(activeTask["FileRef"].ToString().IndexOf("#") + 1, (activeTask["FileRef"].ToString().Length - activeTask["FileRef"].ToString().IndexOf("#") - 1)); action.TaskLink = string.Format(@"{0}\{1}", taskList.ParentWebUrl, taskList.RootFolder.Url); action.AssignedTo = activeTask["AssignedTo"].ToString().Substring(activeTask["AssignedTo"].ToString().IndexOf("#") + 1, (activeTask["AssignedTo"].ToString().Length - activeTask["AssignedTo"].ToString().IndexOf("#") - 1)); actionsOwed.Add(action); } } catch (Exception ex) { StringBuilder sb = new StringBuilder(); sb.Append(lblStatusMessage.Text); sb.Append(Environment.NewLine); sb.Append(string.Format("The list at {0} could not be opened. Its tasks are not included in this dashboard.", taskUsage.Url)); lblStatusMessage.Text = sb.ToString(); } } // } //} } } }
void chkRecentTasksOnly_CheckedChanged(object sender, EventArgs e) { chkMyDelegatedTasks.Checked = false; InitializeWebAppProperties(); if (chkRecentTasksOnly.Checked) { string[] actionsOwedSites = sites.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); List<ActionOwed> actionsOwed = new List<ActionOwed>(); DateTime yesterday = DateTime.Today.AddDays(-1); foreach (string site in actionsOwedSites) { using (SPSite emisSite = new SPSite(site)) { using (SPWeb emisRootWeb = emisSite.OpenWeb()) { //Get all agendas SPList baList = emisRootWeb.Lists["Board Agenda"]; SPQuery queryFutureAgendas = new SPQuery() { Query = string.Format(@"<Query> <Where> <Geq><FieldRef Name='MeetingDate' /> <Value IncludeTimeValue='FALSE' Type='DateTime'>{0}</Value> </Geq> </Where> </Query>", SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today)) }; foreach (SPListItem futureAgenda in baList.GetItems(queryFutureAgendas)) { if (futureAgenda["MeetingDate"] != null) { if (DateTime.Parse(futureAgenda["MeetingDate"].ToString()) > DateTime.Today) { SPFieldUrlValue workspaceURLField = new SPFieldUrlValue(futureAgenda["DocumentWorkspace"].ToString()); string workspaceURL = workspaceURLField.Url; if (workspaceURL.IndexOf("Shared Documents") > 0) { workspaceURL = workspaceURL.Substring(0, workspaceURL.IndexOf("Shared Documents") - 1); } string relativeWSURL = workspaceURL.Remove(0, site.Length); relativeWSURL = relativeWSURL.Replace("/", ""); //Now open up the workspace using (SPWeb subSite = emisSite.OpenWeb(relativeWSURL)) { try { SPList agendaTaskList = subSite.Lists["Agenda Tasks"]; if (agendaTaskList != null) { SPQuery queryForActionsOwed = new SPQuery() { Query = string.Format(@"<Where> <And> <Geq> <FieldRef Name='Created' /> <Value IncludeTimeValue='FALSE' Type='DateTime'>{0}</Value> </Geq> <And> <Eq> <FieldRef Name='AssignedTo' /> <Value Type='User'><UserID/></Value> </Eq> <Neq> <FieldRef Name='Status' /> <Value Type='Choice'>Completed</Value> </Neq> </And> </And> </Where> <OrderBy> <FieldRef Name='DueDate'/> </OrderBy>", SPUtility.CreateISO8601DateTimeFromSystemDateTime(yesterday)) }; foreach (SPListItem activeTask in agendaTaskList.GetItems(queryForActionsOwed)) { ActionOwed action = new ActionOwed() { TaskID = activeTask["ID"].ToString(), Title = activeTask["Title"].ToString(), DueDate = DateTime.Parse(activeTask["DueDate"].ToString()), Status = activeTask["Status"].ToString(), OriginalAssignee = (activeTask["OriginalAssignee"] != null) ? activeTask["OriginalAssignee"].ToString() : String.Empty, Action = (activeTask["ActionOwed"] != null) ? activeTask["ActionOwed"].ToString() : String.Empty, Source = (activeTask["TaskSource"] != null) ? activeTask["TaskSource"].ToString() : String.Empty, FileRef = activeTask["FileRef"].ToString(), TaskSite = site }; if (activeTask["IsDelegated"] == null) { action.IsDelegated = false; } else if (string.IsNullOrEmpty(activeTask["IsDelegated"].ToString())) { action.IsDelegated = false; } else if (activeTask["IsDelegated"].ToString() == "1") { action.IsDelegated = true; } else if (bool.Parse(activeTask["IsDelegated"].ToString())) { action.IsDelegated = true; } string taskRelativeLink = activeTask["FileRef"].ToString().Substring(activeTask["FileRef"].ToString().IndexOf("#") + 1, (activeTask["FileRef"].ToString().Length - activeTask["FileRef"].ToString().IndexOf("#") - 1)); action.TaskLink = taskRelativeLink; action.AssignedTo = activeTask["AssignedTo"].ToString().Substring(activeTask["AssignedTo"].ToString().IndexOf("#") + 1, (activeTask["AssignedTo"].ToString().Length - activeTask["AssignedTo"].ToString().IndexOf("#") - 1)); actionsOwed.Add(action); } } } catch (Exception exc) { Microsoft.Office.Server.Diagnostics.PortalLog.LogString("ActionsOwed WebPart: There was an error while getting data out from {0}. The error was {1}. The stack trace is {2}.", subSite.Url, exc.Message, exc.StackTrace); } } } } } } } } var sortedActionsOwed = actionsOwed.OrderBy(a => a.DueDate); grdActionsOwed.DataSource = sortedActionsOwed; grdActionsOwed.DataBind(); /* foreach (string site in actionsOwedSites) { using (SPSite emisSite = new SPSite(site)) { using (SPWeb emisRootWeb = emisSite.OpenWeb()) { SPSiteDataQuery query = new SPSiteDataQuery(); query.Lists = "<Lists ServerTemplate=\"107\" />"; query.ViewFields = "<FieldRef Name=\"Title\" />" + "<FieldRef Name=\"ID\" />" + "<FieldRef Name=\"AssignedTo\" Nullable=\"TRUE\" Type=\"User\" />" + "<FieldRef Name=\"Status\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"DueDate\" Nullable=\"TRUE\" Type=\"DateTime\" />" + "<FieldRef Name=\"IsDelegated\" Nullable=\"TRUE\" Type=\"Boolean\" />" + "<FieldRef Name=\"OriginalAssignee\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"ActionOwed\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"TaskSource\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"FileRef\" Nullable=\"TRUE\" Type=\"Text\" />" + "<FieldRef Name=\"Related Content\" Nullable=\"TRUE\" Type=\"Text\" />"; query.Query = "<Where>" + "<And>" + "<Geq>" + "<FieldRef Name='Created' />" + "<Value IncludeTimeValue='FALSE' Type='DateTime'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(yesterday) + "</Value>" + "</Geq>" + "<And>" + "<Eq>" + "<FieldRef Name='AssignedTo' />" + " <Value Type='User'><UserID/></Value>" + "</Eq>" + "<Neq>" + "<FieldRef Name='Status' />" + "<Value Type='Choice'>Completed</Value>" + "</Neq>" + "</And>" + "</And>" + "</Where>" + "<OrderBy>" + "<FieldRef Name=\"DueDate\" />" + "</OrderBy>"; query.Webs = "<Webs Scope=\"SiteCollection\" />"; DataTable dt = emisRootWeb.GetSiteData(query); foreach (DataRow row in dt.Rows) { ActionOwed action = new ActionOwed() { TaskID = row["ID"].ToString(), Title = row["Title"].ToString(), DueDate = DateTime.Parse(row["DueDate"].ToString()), Status = row["Status"].ToString(), OriginalAssignee = row["OriginalAssignee"].ToString(), Action = row["ActionOwed"].ToString(), Source = row["TaskSource"].ToString(), FileRef = row["FileRef"].ToString(), TaskSite = site }; if (string.IsNullOrEmpty(row["IsDelegated"].ToString())) { action.IsDelegated = false; } else if (row["IsDelegated"].ToString() == "1") { action.IsDelegated = true; } else if (bool.Parse(row["IsDelegated"].ToString())) { action.IsDelegated = true; } string taskRelativeLink = row["FileRef"].ToString().Substring(row["FileRef"].ToString().IndexOf("#") + 1, (row["FileRef"].ToString().Length - row["FileRef"].ToString().IndexOf("#") - 1)); action.TaskLink = taskRelativeLink; action.AssignedTo = row["AssignedTo"].ToString().Substring(row["AssignedTo"].ToString().IndexOf("#") + 1, (row["AssignedTo"].ToString().Length - row["AssignedTo"].ToString().IndexOf("#") - 1)); actionsOwed.Add(action); } } } } grdActionsOwed.DataSource = actionsOwed; grdActionsOwed.DataBind(); * */ } else { GetAllActionsOwed(SPContext.Current.Web.CurrentUser.Name); } }