public override bool Perform() { SPSecurity.RunWithElevatedPrivileges(() => { try { using (var workEngineAPI = new WorkEngineAPI()) { var featureEventsManager = new FeatureEventsManager(_spWeb); var log = System.Web.HttpUtility.HtmlEncode(featureEventsManager.Manage(@"<AddRemoveFeatureEvents><Data><Feature Name=""PFEResourceManagement"" Operation=""ADD""/></Data></AddRemoveFeatureEvents>")); LogMessage(log, 2); LogMessage("Resource Pool Events processed", MessageKind.SUCCESS, 4); } } catch (Exception exception) { string message = exception.InnerException != null ? exception.InnerException.Message : exception.Message; LogMessage(message, MessageKind.FAILURE, 4); } }); return(true); }
private void ReadComment() { SPSite currentSite = SPContext.Current.Site; SPWeb currentWeb = SPContext.Current.Web; string xmlData = "<Data>" + "<Param key=\"ListId\">" + _listId.ToString("D") + "</Param>" + "<Param key=\"ItemId\">" + _itemId + "</Param>" + "<Param key=\"CommentItemId\">" + _commentItemId + "</Param>" + "<Param key=\"StatusUpdate\"><![CDATA[" + _statusUpdate + "]]></Param>" + "<Param key=\"StatusUpdateId\"><![CDATA[" + _statusUpdateId + "]]></Param>" + "</Data>"; string svcCallResult = string.Empty; //using (WorkEngineService.WorkEngine workEngineSvc = new WorkEngineService.WorkEngine()) //{ // // workEngineSvc.Credentials = CredentialCache.DefaultCredentials; // workEngineSvc.Url = currentSite.MakeFullUrl(currentWeb.ServerRelativeUrl) + "/_vti_bin/WorkEngine.asmx"; // svcCallResult = workEngineSvc.Execute("ReadComment", xmlData); //} svcCallResult = WorkEngineAPI.ReadComment(xmlData, currentWeb); //Response.Output.WriteLine(JSONUtil.ConvertXmlToJson(svcCallResult, "")); Response.Output.WriteLine(svcCallResult); }
private void IssueQuery() { XmlDocument docTeam = new XmlDocument(); //docTeam.LoadXml(WorkEngineAPI.GetTeam("<GetTeam><Columns>Title,Username</Columns></GetTeam>")); //docTeam.LoadXml(WorkEngineAPI.GetTeam("<Filter Column='Title' Value='" + searchVal + "'/>")); docTeam.LoadXml(WorkEngineAPI.GetTeam("<GetTeam><Columns>Title,Email</Columns></GetTeam>", SPContext.Current.Web)); xml = docTeam.OuterXml; }
public override Microsoft.SharePoint.WebControls.PickerEntity ValidateEntity(Microsoft.SharePoint.WebControls.PickerEntity entity) { try { if (isWEEditor) { if (SPContext.Current.List == null || SPContext.Current.List.Title != "Resources") { this.ValidateResolvedEntity = false; entity = base.ValidateEntity(entity); XmlDocument docTeam = new XmlDocument(); docTeam.LoadXml(WorkEngineAPI.GetTeam("<Filter Column='SharePointAccount' Value='" + entity.DisplayText + "'/>", SPContext.Current.Web)); if (docTeam.FirstChild.SelectSingleNode("//Team/Member") == null) { entity.IsResolved = false; } else { if (entity.EntityData["PrincipalType"].ToString().ToLower() == "sharepointgroup") { if (docTeam.FirstChild.SelectSingleNode("//Team/Member").Attributes["SharePointAccount"].Value.ToLower() != entity.EntityData["AccountName"].ToString().ToLower()) { entity.IsResolved = false; } else { entity.IsResolved = true; } } else { if (docTeam.FirstChild.SelectSingleNode("//Team/Member").Attributes["Username"].Value.ToLower() != entity.EntityData["AccountName"].ToString().ToLower()) { entity.IsResolved = false; } } } } else { entity = base.ValidateEntity(entity); } } else { entity = base.ValidateEntity(entity); } } catch { } return(entity); }
// Private Methods (1) private void RunRefreshAll() { LogMessage("Running Refresh All"); try { var workEngineApi = new WorkEngineAPI(); workEngineApi.Execute("Reporting_RefreshAll", string.Empty); } catch (Exception e) { LogMessage("\t", e.Message, 3); } }
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Expires = -1; Response.ContentType = "text"; Response.ContentEncoding = System.Text.Encoding.UTF8; XmlDocument doc = new XmlDocument(); doc.LoadXml(Request["team"]); XmlDocument docOut = new XmlDocument(); docOut.LoadXml("<Team HasResAccess=\"" + Request["HasResAccess"] + "\" ListId=\"" + Request["ListId"] + "\" ItemId=\"" + Request["ItemId"] + "\"/>"); foreach (XmlNode nd in doc.SelectNodes("//I")) { XmlNode ndNew = docOut.CreateNode(XmlNodeType.Element, "Member", docOut.NamespaceURI); XmlAttribute nattr = docOut.CreateAttribute("ID"); nattr.Value = nd.Attributes["id"].Value; ndNew.Attributes.Append(nattr); nattr = docOut.CreateAttribute("Permissions"); nattr.Value = nd.Attributes["Permissions"].Value; ndNew.Attributes.Append(nattr); nattr = docOut.CreateAttribute(ProjectRateColumn); nattr.Value = nd.Attributes[ProjectRateColumn] != null ? nd.Attributes[ProjectRateColumn].Value : string.Empty; ndNew.Attributes.Append(nattr); docOut.FirstChild.AppendChild(ndNew); } XmlDocument doc1 = new XmlDocument(); doc1.LoadXml(WorkEngineAPI.SaveTeam(docOut.OuterXml, SPContext.Current.Web)); if (doc1.FirstChild.Attributes["Status"].Value == "0") { data = "Success"; } else { data = doc1.FirstChild.SelectSingleNode("//Error").InnerText; } }
// Public Methods (1) public string Manage(string data) { try { var dataElement = new XElement("Data"); Dictionary <string, string> features = GetFeatures(data); foreach (var feature in features) { if (feature.Key.Equals("myworkreporting")) { AddRemoveMyWorkReportingEvents(feature.Value, ref dataElement); } else if (feature.Key.Equals("pfedatasync")) { AddRemovePFEDataSyncEvents(feature.Value, ref dataElement); } else if (feature.Key.Equals("pferesourcemanagement")) { AddRemovePFEResourceManagementEvents(feature.Value, ref dataElement); } } string response = WorkEngineAPI.EventReceiverManager(new XElement("EventReceiverManager", dataElement).ToString(), Web); XDocument responseDocument = XDocument.Parse(response); // ReSharper disable PossibleNullReferenceException responseDocument.Root.Name = "AddRemoveFeatureEvents"; // ReSharper restore PossibleNullReferenceException return(responseDocument.ToString()); } catch (APIException) { throw; } catch (Exception exception) { throw new APIException((int)EventReceiverManager.Errors.Manage, exception.GetBaseException().Message); } }
private void GetReports() { XmlDocument doc = new XmlDocument(); using (var workEngineAPI = new WorkEngineAPI()) { doc.LoadXml(workEngineAPI.Execute("Reporting_GetAllReports", string.Empty)); } if (doc.FirstChild.Attributes["Status"].Value == "0") { try { XmlNode ndReports = doc.FirstChild.SelectSingleNode("//Data").FirstChild.SelectSingleNode("Folder[@Name='epmlivetl']").SelectSingleNode("Folder[@Name='Resources']"); StringBuilder sb = new StringBuilder(); foreach (XmlNode nd in ndReports.SelectNodes("Folder/Report")) { sb.Append("<Button"); sb.Append(" Id=\'Ribbon.BuildTeam.ToolsGroup.Reports.ShowReport"); //sb.Append(nd.Attributes["Name"].Value.Replace(" ","")); sb.Append("\' Command='Ribbon.BuildTeam.ShowReport\'"); sb.Append(" CommandValueId='"); sb.Append(System.Web.HttpUtility.UrlEncode(nd.Attributes["Url"].Value)); sb.Append("'"); sb.Append(" LabelText=\'"); sb.Append(nd.Attributes["Name"].Value); sb.Append("\'/>"); } output = sb.ToString(); } catch { } } else { output = "Error"; } }
public override bool Perform() { LogMessage("Activating Site Core Feature"); SPSite.Features.Add(new Guid("e97da3cd-4c42-44cd-ba51-2bfbb2c397cb"), true); if (bIsPfe) { using (var workEngineAPI = new WorkEngineAPI()) { LogMessage("Installing PfE Data Synch Events"); //workEngineAPI.Execute("AddRemoveFeatureEvents", @"<AddRemoveFeatureEvents><Data><Feature Name=""PFEDataSync"" Operation=""ADD""/></Data></AddRemoveFeatureEvents>"); WorkEngineAPI.AddRemoveFeatureEvents(@"<AddRemoveFeatureEvents><Data><Feature Name=""PFEDataSync"" Operation=""ADD""/></Data></AddRemoveFeatureEvents>", SPWeb); //LogMessage("Installing PfE Resource Events"); //workEngineAPI.Execute("AddRemoveFeatureEvents", @"<AddRemoveFeatureEvents><Data><Feature Name=""PFEResourceManagement"" Operation=""ADD""/></Data></AddRemoveFeatureEvents>"); } } return(true); }
/// <summary> /// Gets the layout. /// </summary> /// <param name="data">The data.</param> /// <returns></returns> public string GetLayout(string data) { try { XDocument layoutXml = XDocument.Parse(Resources.AssignmentPlannerGridLayout); if (layoutXml.Root == null) { throw new APIException((int)Errors.NoGridElementFound, "Cannot find the Grid element."); } XElement headerElement = layoutXml.Root.Element("Header"); if (headerElement == null) { throw new APIException((int)Errors.NoHeaderElementFound, "Cannot find the Header element."); } XElement colsElement = layoutXml.Root.Element("Cols"); if (colsElement == null) { throw new APIException((int)Errors.NoColsElementFound, "Cannot find the Cols element."); } string fieldsResponse; using (var workEngineAPI = new WorkEngineAPI()) { fieldsResponse = workEngineAPI.Execute("Reporting_GetMyWorkFields", string.Empty); } XElement errorElement = XDocument.Parse(fieldsResponse).Root.Descendants("Error").FirstOrDefault(); if (errorElement != null) { if (errorElement.Value.Contains("ExecuteReader requires an open and available Connection.")) { throw new APIException((int)Errors.ReportingConnection, ReportingConnectionError); } } XDocument dataXml = XDocument.Parse(Utilities.DecodeGridData(data)); RegisterGridIdAndCss(layoutXml.Root, dataXml); XDocument fieldsXml = XDocument.Parse(fieldsResponse); List <string> fields = fieldsXml.Root.Element("GetMyWorkFields").Element("Data").Elements("Field").Select( e => e.Attribute("Name").Value).ToList(); using (var spSite = new SPSite(_spWeb.Site.ID)) { using (SPWeb spWeb = spSite.OpenWeb()) { SPList spList = spWeb.Lists["My Work"]; SPRegionalSettings regionalSettings = spWeb.RegionalSettings; SPRegionalSettings spRegionalSettings = _spWeb.CurrentUser.RegionalSettings ?? regionalSettings; var cultureInfo = new CultureInfo((int)spRegionalSettings.LocaleId); string currencyFormat = string.Format("{0}#.00", cultureInfo.NumberFormat.CurrencySymbol); string datePattern = cultureInfo.DateTimeFormat.ShortDatePattern; var defaultColumns = new List <string>(); var workDayStartHour = (short)(regionalSettings.WorkDayStartHour / 60); var workDayEndHour = (short)(regionalSettings.WorkDayEndHour / 60); ConfigureDefaultColumns(spList, datePattern, currencyFormat, spWeb, workDayStartHour, workDayEndHour, GetGanttExclude(regionalSettings, spWeb, workDayStartHour, workDayEndHour), ref layoutXml, ref defaultColumns); ConfigureColumns(spWeb, currencyFormat, ref headerElement, ref colsElement, datePattern, defaultColumns, fields, spList); } } return(layoutXml.ToString()); } catch (APIException) { throw; } catch (Exception e) { throw new APIException((int)Errors.GetLayout, e.Message); } }
/// <summary> /// Gets the data. /// </summary> /// <param name="data">The data.</param> /// <returns></returns> public string GetData(string data) { try { string response; NumberFormatInfo providerEn = new System.Globalization.NumberFormatInfo(); providerEn.NumberDecimalSeparator = "."; providerEn.NumberGroupSeparator = ","; providerEn.NumberGroupSizes = new int[] { 3 }; XElement dataRootElement = XDocument.Parse(data).Root; if (dataRootElement == null) { throw new APIException((int)Errors.GetDataRootElementNotFound, "Cannot find the Root AssignmentPlanner element."); } using (var workEngineAPI = new WorkEngineAPI()) { response = workEngineAPI.Execute("Reporting_GetMyWorkData", new XElement("GetMyWorkReportingData", dataRootElement.Element("Params")).ToString()); } XDocument myWorkDataXml = XDocument.Parse(response); ValidateMyWorkDataResponse(myWorkDataXml); var gridSafeFields = new Dictionary <string, string>(); var bElement = new XElement("B"); var resourcesElement = new XElement("Resources"); var footElement = new XElement("Foot"); var resources = new Dictionary <int, string>(); SPRegionalSettings spRegionalSettings = _spWeb.CurrentUser.RegionalSettings ?? _spWeb.Site.RootWeb.RegionalSettings; var workDayStartHour = (short)(spRegionalSettings.WorkDayStartHour / 60); var workDayEndHour = (short)(spRegionalSettings.WorkDayEndHour / 60); string siteUrl = _spWeb.Site.Url; string safeServerRelativeUrl = _spWeb.SafeServerRelativeUrl(); foreach ( XElement resourceElement in myWorkDataXml.Element("Result").Element("GetMyWorkData").Element("Data").Elements("Resource")) { XElement resultElement = resourceElement.Element("Result"); if (!resultElement.Attribute("Status").Value.Equals("0")) { continue; } int resourceId = 0; string resourceName = string.Empty; foreach (XElement itemElement in resourceElement.Element("Data").Elements("Item")) { var iElement = new XElement("I"); int itemId = 0; Guid listId = Guid.Empty; Guid webId = Guid.Empty; Guid siteId = Guid.Empty; string value = string.Empty; float floatFieldValue; foreach (XElement fieldElement in itemElement.Elements("Field")) { string field = fieldElement.Attribute("Name").Value; if (!gridSafeFields.ContainsKey(field)) { gridSafeFields.Add(field, Utils.ToGridSafeFieldName(field)); } if (float.TryParse(fieldElement.Value.ToString(), out floatFieldValue)) { value = floatFieldValue.ToString(providerEn); } else { value = fieldElement.Value; } string fieldName = field.ToLower(); if (fieldName.Equals("id")) { itemId = Convert.ToInt32(value); } else if (fieldName.Equals("listid")) { listId = new Guid(value); } else if (fieldName.Equals("webid")) { webId = new Guid(value); } else if (fieldName.Equals("siteid")) { siteId = new Guid(value); } else if (fieldName.Equals("assignedtoid")) { resourceId = Convert.ToInt32(value); } else if (fieldName.Equals("assignedtotext")) { resourceName = value; } else if (fieldElement.Attribute("Type").Value.Equals("System.DateTime") && !string.IsNullOrEmpty(value)) { DateTime localTime = SPUtility.CreateDateTimeFromISO8601DateTimeString(value); if (fieldName.Equals("startdate") && (localTime.Hour < workDayStartHour || localTime.Hour > workDayEndHour)) { localTime = new DateTime(localTime.Year, localTime.Month, localTime.Day, workDayStartHour, 0, 0); } else if (fieldName.Equals("duedate") && (localTime.Hour < workDayStartHour || localTime.Hour > workDayEndHour)) { localTime = new DateTime(localTime.Year, localTime.Month, localTime.Day, workDayEndHour, 0, 0); } value = SPUtility.CreateISO8601DateTimeFromSystemDateTime(localTime); } iElement.Add(new XAttribute(gridSafeFields[field], value)); } string flagQuery = string.Format( @"<MyPersonalization> <Keys>AssignmentPlannerFlag</Keys> <Item ID=""{0}""/> <List ID=""{1}""/> <Web ID=""{2}""/> <Site ID=""{3}"" URL=""{4}""/> </MyPersonalization>", itemId, listId, webId, siteId, siteUrl); XDocument flagResponse = XDocument.Parse(MyPersonalization.GetMyPersonalization(flagQuery)); string flag = null; XElement personalizationRootElement = flagResponse.Element("MyPersonalization"); if (personalizationRootElement != null) { flag = (from e in personalizationRootElement.Descendants("Personalization") let keyAttribute = e.Attribute("Key") where keyAttribute != null && keyAttribute.Value.Equals("AssignmentPlannerFlag") let valueAttribute = e.Attribute("Value") where valueAttribute != null select valueAttribute.Value).FirstOrDefault(); } var flagValue = flag ?? "0"; var flagUrl = safeServerRelativeUrl + "/_layouts/epmlive/images/mywork/flagged.png"; if (flagValue.Equals("0")) { flagUrl = safeServerRelativeUrl + "/_layouts/epmlive/images/mywork/unflagged.png"; } iElement.Add(new XAttribute("Duration", string.Empty), new XAttribute("Flag", string.Format(@"<img src=""{0}"" class=""AP_Flag""/>", flagUrl)), new XAttribute("FlagValue", flagValue), new XAttribute("Height", 23)); if (resourceId == 0 || string.IsNullOrEmpty(resourceName)) { continue; } bElement.Add(iElement); if (!resources.ContainsKey(resourceId)) { resources.Add(resourceId, resourceName); } } } foreach (var keyValuePair in resources) { resourcesElement.Add(new XElement("R", new XAttribute("Name", keyValuePair.Value), new XAttribute("Availability", 8), new XAttribute("Type", 1))); footElement.Add(new XElement("I", new XAttribute("id", string.Format("-{0}", keyValuePair.Key)), new XAttribute("Def", "Resource"), new XAttribute("Title", keyValuePair.Value))); } return(new XElement("Grid", new XElement("Body", bElement), resourcesElement, footElement).ToString()); } catch (APIException) { throw; } catch (Exception e) { throw new APIException((int)Errors.GetData, e.Message); } }
protected override int IssueQuery(string search, string groupName, int pageIndex, int pageSize) { dtUsers = new DataTable(); dtUsers.Columns.Add("ID"); dtUsers.Columns.Add("SPAccountInfo"); dtUsers.Columns.Add("Username"); dtUsers.Columns.Add("PrincipalType"); dtUsers.Columns.Add("SharePointAccount"); dtUsers.Columns.Add("Title"); if (!dtUsers.Columns.Contains(mColumnList.SelectedValue)) { dtUsers.Columns.Add(mColumnList.SelectedValue); } ArrayList columnNames = ((TableResultControl)this.mDialogControl.ResultControl).ColumnNames; ArrayList columnDisplayNames = ((TableResultControl)this.mDialogControl.ResultControl).ColumnDisplayNames; ArrayList columnWidths = ((TableResultControl)this.mDialogControl.ResultControl).ColumnWidths; columnDisplayNames.Clear(); columnNames.Clear(); columnWidths.Clear(); columnDisplayNames.Add("Resource Name"); columnNames.Add("Title"); columnWidths.Add("180px"); //columnDisplayNames.Add(mColumnList.SelectedItem.Text); //columnNames.Add(mColumnList.SelectedValue); //columnWidths.Add("180px"); XmlDocument docTeam = new XmlDocument(); docTeam.LoadXml(WorkEngineAPI.GetTeam("<Filter Column='" + groupName + "' Value='" + search.Replace("'", "''") + "' WebId='" + CurrentWeb.ToString() + "'/>", SPContext.Current.Web)); foreach (XmlNode ndTeam in docTeam.FirstChild.SelectNodes("//Team/Member")) { ArrayList item = new ArrayList(); foreach (DataColumn dc in dtUsers.Columns) { XmlAttribute attr = ndTeam.Attributes[dc.ColumnName]; if (attr != null) { item.Add(attr.Value); } else { item.Add(""); } } dtUsers.Rows.Add(item.ToArray()); } PickerDialog.Results = dtUsers; PickerDialog.ResultControl.PageSize = dtUsers.Rows.Count; return(dtUsers.Rows.Count); }
// Public Methods (1) public override bool Perform() { LogMessage("Loading Resource Pool List"); SPList oResourcePool = SPWeb.Lists.TryGetList("Resources"); SPList oRoles = SPWeb.Lists.TryGetList("Roles"); SPList oDepartments = SPWeb.Lists.TryGetList("Departments"); SPList oHolidaySchedule = SPWeb.Lists.TryGetList("Holiday Schedules"); SPList oWorkHours = SPWeb.Lists.TryGetList("Work Hours"); if (oResourcePool == null) { LogMessage("", "Resources list missing", 3); } else if (oRoles == null) { LogMessage("", "Roles list missing", 3); } else if (oDepartments == null) { LogMessage("", "Departments list missing", 3); } else if (oHolidaySchedule == null) { LogMessage("", "HolidaySchedules list missing", 3); } else if (oWorkHours == null) { LogMessage("", "WorkHours list missing", 3); } else { try { DataTable dtRoles = oRoles.Items.GetDataTable(); DataTable dtDepartments = oDepartments.Items.GetDataTable(); #region Add Temp fields try { if (!oResourcePool.Fields.ContainsFieldWithInternalName("TempRole")) { LogMessage("\tAdding TempRole field"); oResourcePool.Fields.Add("TempRole", SPFieldType.Text, false); SPField oField = oResourcePool.Fields.GetFieldByInternalName("TempRole"); oField.ShowInDisplayForm = false; oField.ShowInEditForm = false; oField.ShowInNewForm = false; oField.Update(); } } catch (Exception ex) { LogMessage("\t", "Adding TempRole field: " + ex.Message, 3); } try { if (!oResourcePool.Fields.ContainsFieldWithInternalName("TempDept")) { LogMessage("\tAdding TempDept field"); oResourcePool.Fields.Add("TempDept", SPFieldType.Text, false); SPField oField = oResourcePool.Fields.GetFieldByInternalName("TempDept"); oField.ShowInDisplayForm = false; oField.ShowInEditForm = false; oField.ShowInNewForm = false; oField.Update(); } } catch (Exception ex) { LogMessage("\t", "Adding TempDept field: " + ex.Message, 3); } oResourcePool.Update(); #endregion #region Process Role and Departments bool bProcessRole = false; bool bProcessDept = false; try { if (oResourcePool.Fields.GetFieldByInternalName("Role").Type == SPFieldType.Choice) { bProcessRole = true; } } catch { } try { if (oResourcePool.Fields.GetFieldByInternalName("Department").Type == SPFieldType.Choice) { bProcessDept = true; } } catch { } SPField oFieldRole; SPField oFieldDept; try { oFieldRole = oResourcePool.Fields.GetFieldByInternalName("Role"); } catch { SPField newField = oResourcePool.Fields.CreateNewField(SPFieldType.Choice.ToString(), "Role"); oResourcePool.Fields.Add(newField); oResourcePool.Update(); oFieldRole = oResourcePool.Fields.GetFieldByInternalName("Role"); } try { oFieldDept = oResourcePool.Fields.GetFieldByInternalName("Department"); } catch { SPField newField = oResourcePool.Fields.CreateNewField(SPFieldType.Choice.ToString(), "Department"); oResourcePool.Fields.Add(newField); oResourcePool.Update(); oFieldDept = oResourcePool.Fields.GetFieldByInternalName("Department"); } if (bProcessRole || bProcessDept) { LogMessage("\tCopying Temporary Data"); foreach (SPListItem li in oResourcePool.Items) { try { if (bProcessDept && li[oFieldDept.Id] != null && oFieldDept.Type == SPFieldType.Choice) { li["TempDept"] = li[oFieldDept.Id].ToString(); } if (bProcessDept && li[oFieldRole.Id] != null && oFieldRole.Type == SPFieldType.Choice) { li["TempRole"] = li[oFieldRole.Id].ToString(); } li.Update(); } catch (Exception ex) { LogMessage("\t", "Error (" + li.Title + "): " + ex.Message, 3); } } } Thread.Sleep(5000); #endregion ProcessFields(ref oResourcePool); oFieldRole = oResourcePool.Fields.GetFieldByInternalName("Role"); oFieldDept = oResourcePool.Fields.GetFieldByInternalName("Department"); LogMessage("\tUpdating Role, Department, Holiday Schedule and Work Hours"); EnumerableRowCollection <DataRow> resourceHSWS = null; EnumerableRowCollection <DataRow> holidaySchedules = null; EnumerableRowCollection <DataRow> workHours = null; try { var dtResourceHSWS = new DataTable(); string connectionString = GetConnectionString(); if (string.IsNullOrEmpty(connectionString)) { throw new Exception("PFE DB connection string is empty."); } using (var sqlConnection = new SqlConnection(connectionString)) { using (var sqlCommand = new SqlCommand(SQL, sqlConnection)) { sqlConnection.Open(); using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) { dtResourceHSWS.Load(sqlDataReader); } } } resourceHSWS = dtResourceHSWS.AsEnumerable(); if (resourceHSWS.Any()) { holidaySchedules = oHolidaySchedule.Items.GetDataTable().AsEnumerable(); workHours = oWorkHours.Items.GetDataTable().AsEnumerable(); } } catch (Exception ex) { LogMessage("\t", "(Get PFE DB ConnectionString): " + ex.Message, 3); } foreach (SPListItem li in oResourcePool.Items) { try { #region Copy Department and Roles if (li["TempDept"] != null && !li["TempDept"].ToString().Contains(";#") && oFieldDept.Type == SPFieldType.Lookup) { DataRow[] dr = dtDepartments.Select("DisplayName='" + li["TempDept"] + "'"); if (dr.Length > 0) { var lv = new SPFieldLookupValue(int.Parse(dr[0]["ID"].ToString()), li["TempDept"].ToString()); li[oFieldDept.Id] = lv; } } if (li["TempRole"] != null && !li["TempRole"].ToString().Contains(";#") && oFieldRole.Type == SPFieldType.Lookup) { DataRow[] dr = dtRoles.Select("Title='" + li["TempRole"] + "'"); if (dr.Length > 0) { var lv = new SPFieldLookupValue(int.Parse(dr[0]["ID"].ToString()), li["TempRole"].ToString()); li[oFieldRole.Id] = lv; } } #endregion string spAccount = string.Empty; var resAcct = li["SharePointAccount"] as string; if (!string.IsNullOrEmpty(resAcct)) { var uv = new SPFieldUserValue(SPWeb, resAcct); if (uv.User != null) { spAccount = uv.User.LoginName.ToLower(); } } string extId = (li["EXTID"] ?? string.Empty).ToString(); if (resourceHSWS != null && resourceHSWS.Any() && !string.IsNullOrEmpty(spAccount)) { try { if (string.IsNullOrEmpty(extId)) { foreach (DataRow row in resourceHSWS) { object acct = row["Account"]; if (acct != null && acct != DBNull.Value) { if (acct.ToString().ToLower().Equals(spAccount)) { li["EXTID"] = (row["ResourceId"] ?? string.Empty).ToString(); break; } } } } } catch (Exception ex) { LogMessage("\t", "(" + li.Title + "): Not setting EXTID. " + ex.Message, 3); } try { foreach (object schedule in from hs in resourceHSWS let account = hs["Account"] where account != null && account != DBNull.Value where account.ToString().ToLower().Equals(spAccount) select hs["HolidaySchedule"] into schedule where schedule != null && schedule != DBNull.Value select schedule) { foreach (DataRow s in holidaySchedules) { object sch = s["Title"]; if (sch == null || sch == DBNull.Value) { continue; } string hsch = sch.ToString(); if (!hsch.ToLower().Equals(schedule.ToString().ToLower())) { continue; } li["HolidaySchedule"] = new SPFieldLookupValue(Convert.ToInt32(s["ID"].ToString()), hsch); break; } } } catch (Exception ex) { LogMessage("\t", "(" + li.Title + "): Not setting Holiday Schedule. " + ex.Message, 3); } try { foreach (object hours in from wh in resourceHSWS let account = wh["Account"] where account != null && account != DBNull.Value where account.ToString().ToLower().Equals(spAccount) select wh["WorkHours"] into hours where hours != null && hours != DBNull.Value select hours) { foreach (DataRow h in workHours) { object hr = h["Title"]; if (hr == null || hr == DBNull.Value) { continue; } string whr = hr.ToString(); if (!whr.ToLower().Equals(hours.ToString().ToLower())) { continue; } li["WorkHours"] = new SPFieldLookupValue( Convert.ToInt32(h["ID"].ToString()), whr); break; } } } catch (Exception ex) { LogMessage("\t", "(" + li.Title + "): Not setting Work Hours. " + ex.Message, 3); } } else { LogMessage("\t", "(" + li.Title + "): Not setting Holiday Schedule and Work Hours. Cannot load from PFE.", 3); } li.Update(); LogMessage("\t\t" + li.Title); } catch (Exception ex) { LogMessage("\t", "(" + li.Title + "): " + ex.Message, 3); } } if (bIsPfe) { using (var workEngineAPI = new WorkEngineAPI()) { LogMessage("Installing PfE Resource Events"); WorkEngineAPI.AddRemoveFeatureEvents( @"<AddRemoveFeatureEvents><Data><Feature Name=""pferesourcemanagement"" Operation=""ADD""/></Data></AddRemoveFeatureEvents>", SPWeb); } } LogMessage("Enabling New Button"); using (var spSite = new SPSite(oResourcePool.ParentWeb.Site.ID)) { using (SPWeb spWeb = spSite.OpenWeb(oResourcePool.ParentWeb.ID)) { SPList resourcePool = spWeb.Lists.GetList(oResourcePool.ID, false); var gSettings = new GridGanttSettings(resourcePool) { HideNewButton = false }; gSettings.SaveSettings(resourcePool); } } LogMessage("Processing Editable Fields"); UpdateField("Generic", true, false, true, ref oResourcePool); UpdateField("FirstName", true, true, true, ref oResourcePool); UpdateField("LastName", true, true, true, ref oResourcePool); UpdateField("Email", true, false, true, ref oResourcePool); UpdateField("ResourceLevel", true, true, true, ref oResourcePool); UpdateField("Permissions", true, true, true, ref oResourcePool); UpdateField("StandardRate", true, true, true, ref oResourcePool); UpdateField("Department", true, true, true, ref oResourcePool); UpdateField("Role", true, true, true, ref oResourcePool); UpdateField("HolidaySchedule", true, true, true, ref oResourcePool); UpdateField("WorkHours", true, true, true, ref oResourcePool); UpdateField("AvailableFrom", true, true, true, ref oResourcePool); UpdateField("AvailableTo", true, true, true, ref oResourcePool); UpdateField("Disabled", false, true, true, ref oResourcePool); } catch (Exception ex) { LogMessage("", "General: " + ex.Message, 3); } } return(true); }