private static void setEmail(string principalCID, SPListItem item, ADuser aduser) { if (aduser.CID.Equals(principalCID)) { string principalEMail = ConfigurationFile.GetGonfigurationFile(Chalmers.Core.Constants.CoreConstants.ConfigurationFilePath).GetSettingValue("PrincipalEMail"); LoggingService.WriteTrace( EventSeverity.Information, "Principal CID found: '" + aduser.CID + "'. Setting e-mail to: '" + principalEMail + "', based on: '" + Chalmers.Core.Constants.CoreConstants.ConfigurationFilePath + "'.", LogCategory.ChalmersPublicWeb); item["FieldStaffEmail"] = principalEMail; } else { item["FieldStaffEmail"] = aduser.Mail; } }
private static void trySaveChanges(SPListItem item, ADuser aduser) { if (item.File.Level != SPFileLevel.Checkout) { LoggingService.WriteTrace( EventSeverity.Information, string.Format("User {0} found and page is not checked out, proceeding to update page item", aduser.CID), LogCategory.ChalmersPublicWeb); item.SystemUpdate(false); } else { string info = string.Format("Page item for user {0} is checked out and cannot be updated", aduser.CID); LoggingService.WriteTrace( EventSeverity.Information, info, LogCategory.ChalmersPublicWeb); Console.WriteLine(Environment.NewLine + info); } }
private static bool taxFieldChanged( Dictionary <string, Guid> indexedTaxonomy, TermSet termSet, SPListItem item, ADuser aduser, ref List <Term> terms, ref TaxonomyField managedField) { managedField = item.Fields.GetFieldByInternalName("TaxChalmersDepartment") as TaxonomyField; if (aduser.AllUnits != null && aduser.AllUnits.Count > 0) { terms = aduser.AllUnits.Where(indexedTaxonomy.ContainsKey).Select(s => termSet.GetTerm(indexedTaxonomy[s])).ToList(); if (terms.Count > 0) { LoggingService.WriteTrace(EventSeverity.Information, string.Format("Found {0} matching terms", terms.Count), LogCategory.ChalmersPublicWeb); if (managedField != null) { string fieldTaxItems = item["TaxChalmersDepartment"].ToString(); for (int i = 0; i < terms.Count(); i++) { if (fieldTaxItems.Count(f => f == '|') != terms.Count() || !fieldTaxItems.Contains(terms[i].Name)) { return(true); } } } } } else { string fieldTaxItems = item["TaxChalmersDepartment"].ToString(); if (fieldTaxItems.Count(f => f == '|') > 0) { return(true); } } return(false); }
private static bool hasUpdatedValues(SPListItem item, ADuser aduser, System.Text.StringBuilder phoneNumbers) { string FieldStaffGivenname = item["FieldStaffGivenname"] == null ? string.Empty : item["FieldStaffGivenname"].ToString(); if (!FieldStaffGivenname.Equals(aduser.GivenName)) { return(true); } string FieldStaffLastName = item["FieldStaffLastName"] == null ? string.Empty : item["FieldStaffLastName"].ToString(); if (!FieldStaffLastName.Equals(aduser.SN)) { return(true); } string FieldStaffFullName = item["FieldStaffFullName"] == null ? string.Empty : item["FieldStaffFullName"].ToString(); if (!FieldStaffFullName.Equals(aduser.GivenName + " " + aduser.SN)) { return(true); } string Title = item["Title"] == null ? string.Empty : item["Title"].ToString(); if (!Title.Equals(aduser.GivenName + " " + aduser.SN)) { return(true); } string FieldStaffOrganisation = item["FieldStaffOrganisation"] == null ? string.Empty : item["FieldStaffOrganisation"].ToString(); if (!FieldStaffOrganisation.Equals(aduser.Organisation)) { return(true); } string FieldStaffTelephone = item["FieldStaffTelephone"] == null ? string.Empty : item["FieldStaffTelephone"].ToString(); if (!FieldStaffTelephone.Equals(phoneNumbers.ToString())) { return(true); } string eduPersonOrcID = item["EduPersonOrcid"] == null ? string.Empty : item["EduPersonOrcid"].ToString(); string aduserEduPersonOrcid = aduser.EduPersonOrcid == null ? string.Empty : aduser.EduPersonOrcid; if (!eduPersonOrcID.Equals(aduserEduPersonOrcid)) { return(true); } string RoomNumber = item["OfficeRoomNumber"] == null ? string.Empty : item["OfficeRoomNumber"].ToString(); if (!RoomNumber.Equals(aduser.OfficeRoomNumber.ToString())) { return(true); } string Street = item["OfficeStreet"] == null ? string.Empty : item["OfficeStreet"].ToString(); if (!Street.Equals(aduser.OfficeStreet.ToString())) { return(true); } // Since we currently guess floor number we don't want to overwrite manual changes so we only set this value if there is no value. if (item["OfficeFloorNumber"] == null) { return(true); } //string OfficeFloorNumber = item["OfficeFloorNumber"] == null ? string.Empty : item["OfficeFloorNumber"].ToString(); //if (!OfficeFloorNumber.Equals(aduser.OfficeFloorNumber.ToString())) return true; return(false); }
private static void updateFromAD(Dictionary <string, Guid> indexedTaxonomy, TermSet termSet, string ldapServerUrl, string principalCID, SPListItem item, SPFieldUser staffUserId) { var chalmerUserId = staffUserId.GetFieldValue(item[Constants.ChalmersID].ToString()) as SPFieldUserValue; if (chalmerUserId != null) { string username = chalmerUserId.User.LoginName; LoggingService.WriteTrace(EventSeverity.Information, "Got username: "******"UserLoginName has claims: " + userLoginName, LogCategory.ChalmersPublicWeb); } if (!string.IsNullOrEmpty(userLoginName)) { ADuser aduser = new ADuser(userLoginName) { LdapServerUrl = ldapServerUrl, GivenName = string.Empty, SN = string.Empty, Mail = string.Empty, Organisation = string.Empty, TelephoneNumber = string.Empty, OtherTelephone = string.Empty }; #if DEBUG string value = ConfigurationFile.GetGonfigurationFile(Chalmers.PublicWeb.Core.Constants.ConfigurationFilePath).GetSettingValue("StaffSyncCID"); if (value.ToLower().Contains(aduser.CID.ToLower().Replace("net\\", string.Empty))) { string x = "asdf"; System.Diagnostics.Debug.Print(x.ToString()); } #endif LoggingService.WriteTrace(EventSeverity.Information, "aduser CID = " + aduser.CID, LogCategory.ChalmersPublicWeb); string domain = WebConfigurationManager.AppSettings["CurrentDomain"]; if (string.IsNullOrEmpty(domain)) { aduser.ADDomainName = @"net\"; } else { aduser.ADDomainName = domain + @"\"; } if (aduser.CID.IndexOf(@"\", StringComparison.OrdinalIgnoreCase) > 0) { aduser.CIDWithoutDomain = aduser.CID.Remove(0, aduser.CID.IndexOf(@"\", StringComparison.OrdinalIgnoreCase) + 1); #if DEBUG if (aduser.CIDWithoutDomain.ToString().ToLower().Equals("kain") || aduser.CIDWithoutDomain.ToString().ToLower().Equals("anderska")) { string x = aduser.CIDWithoutDomain.ToString(); System.Diagnostics.Debug.Print(x); } #endif } List <Term> terms = null; TaxonomyField managedField = null; aduser = ADUserProfile.GetUserProfileFromAD(aduser); if (aduser != null) { bool adUnitsHaveChanged = taxFieldChanged(indexedTaxonomy, termSet, item, aduser, ref terms, ref managedField); System.Text.StringBuilder phoneNumbers = new System.Text.StringBuilder(); if (!string.IsNullOrEmpty(aduser.TelephoneNumber)) { phoneNumbers.Append(aduser.TelephoneNumber); } if (phoneNumbers.Length > 0 && !string.IsNullOrEmpty(aduser.OtherTelephone)) { phoneNumbers.Append(", "); } if (!string.IsNullOrEmpty(aduser.OtherTelephone)) { phoneNumbers.Append(aduser.OtherTelephone); } if ( hasUpdatedValues(item, aduser, phoneNumbers) || DateTime.Now.DayOfWeek == DayOfWeek.Saturday || adUnitsHaveChanged || (aduser.CID.Equals(principalCID)) ) { item["EduPersonOrcid"] = aduser.EduPersonOrcid; item["FieldStaffGivenname"] = aduser.GivenName; item["FieldStaffLastName"] = aduser.SN; item["FieldStaffFullName"] = aduser.GivenName + " " + aduser.SN; item["Title"] = aduser.GivenName + " " + aduser.SN; item["FieldStaffOrganisation"] = aduser.Organisation; item["FieldStaffTelephone"] = phoneNumbers.ToString(); item["OfficeRoomNumber"] = aduser.OfficeRoomNumber; item["OfficeStreet"] = aduser.OfficeStreet; item["OfficeFloorNumber"] = aduser.OfficeFloorNumber; setEmail(principalCID, item, aduser); if (adUnitsHaveChanged) { if (terms == null) { terms = new List <Term>(); } managedField.SetFieldValue(item, terms); } trySaveChanges(item, aduser); } } } } }