示例#1
0
 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;
     }
 }
示例#2
0
 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);
     }
 }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
                        }
                    }
                }
            }
        }