internal MailboxSearchObject(SearchObject searchObject, SearchStatus searchStatus)
 {
     if (searchObject == null)
     {
         throw new ArgumentNullException("searchObject");
     }
     if (searchStatus == null)
     {
         throw new ArgumentException("searchStatus");
     }
     this.searchObject = searchObject;
     this.searchStatus = searchStatus;
 }
 public void AddSearchStatus(SearchStatus status)
 {
     if (status == null)
     {
         throw new ArgumentNullException("status");
     }
     this.AddProperty(SearchStatusSchema.Status.Name, status.Status);
     this.AddProperty(SearchStatusSchema.LastStartTime.Name, status.LastStartTime);
     this.AddProperty(SearchStatusSchema.LastEndTime.Name, status.LastEndTime);
     this.AddProperty(SearchStatusSchema.NumberMailboxesToSearch.Name, status.NumberMailboxesToSearch);
     this.AddProperty(SearchStatusSchema.PercentComplete.Name, status.PercentComplete);
     this.AddProperty(SearchStatusSchema.ResultNumber.Name, status.ResultNumber);
     this.AddProperty(SearchStatusSchema.ResultSize.Name, status.ResultSize);
     this.AddProperty(SearchStatusSchema.ResultSizeEstimate.Name, status.ResultSizeEstimate);
     this.AddProperty(SearchStatusSchema.ResultSizeCopied.Name, status.ResultSizeCopied);
     this.AddProperty(SearchStatusSchema.Errors.Name, status.Errors);
     this.AddProperty(SearchStatusSchema.KeywordHits.Name, status.KeywordHits);
     this.AddProperty(SearchStatusSchema.CompletedMailboxes.Name, status.CompletedMailboxes);
 }
        private void LogSaveEvent(SearchObjectBase obj)
        {
            SearchEventLogger.PropertyLogData propertyLogData = new SearchEventLogger.PropertyLogData();
            if (base.ADUser.OrganizationId != null && base.ADUser.OrganizationId.ConfigurationUnit != null)
            {
                propertyLogData.AddOrganization(base.ADUser.OrganizationId.ConfigurationUnit.ToString());
            }
            switch (obj.ObjectType)
            {
            case ObjectType.SearchObject:
                break;

            case ObjectType.SearchStatus:
            {
                SearchStatus searchStatus = (SearchStatus)obj;
                propertyLogData.AddSearchStatus(searchStatus);
                SearchEventLogger.Instance.LogSearchStatusSavedEvent(propertyLogData);
                if (searchStatus.Errors == null)
                {
                    return;
                }
                using (MultiValuedProperty <string> .Enumerator enumerator = searchStatus.Errors.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        string errorMsg = enumerator.Current;
                        SearchEventLogger.Instance.LogSearchErrorEvent(obj.Id.ToString(), errorMsg);
                    }
                    return;
                }
                break;
            }

            default:
                return;
            }
            propertyLogData.AddSearchObject((SearchObject)obj);
            SearchEventLogger.Instance.LogSearchObjectSavedEvent(propertyLogData);
        }