public static MasterCategoryList Bind(ExchangeService service, string smtpAddress) { try { FolderId TargetFolder = new FolderId(WellKnownFolderName.Calendar, smtpAddress); var item = UserConfiguration.Bind(service, "CategoryList", TargetFolder, UserConfigurationProperties.XmlData); var reader = new StreamReader(new MemoryStream(item.XmlData), Encoding.UTF8, true); var serializer = new XmlSerializer(typeof(MasterCategoryList)); var result = (MasterCategoryList)serializer.Deserialize(reader); result._UserConfigurationItem = item; return(result); } catch (System.ArgumentNullException) { // There is a folder but it didn't have any categories // Create an empty list and return it FolderId TargetFolder = new FolderId(WellKnownFolderName.Calendar, smtpAddress); var item = UserConfiguration.Bind(service, "CategoryList", TargetFolder, UserConfigurationProperties.XmlData); var result = new MasterCategoryList(); result.Categories = new List <Category>(); result._UserConfigurationItem = item; return(result); } catch (InvalidOperationException ioe) { // The master category list is corrupted // Create an empty list and repopulate it log.WriteErrorLog(ioe.Message); FolderId TargetFolder = new FolderId(WellKnownFolderName.Calendar, smtpAddress); var item = UserConfiguration.Bind(service, "CategoryList", TargetFolder, UserConfigurationProperties.XmlData); var result = new MasterCategoryList(); result.Categories = new List <Category>(); result._UserConfigurationItem = item; return(result); } catch (Exception ex) { // Seems there is no MasterCategoryList, we will try to create a new one log.WriteErrorLog(ex.ToString()); log.WriteErrorLog(ex.Message); return(CreateNewMasterCartegories(service)); } }
public static MasterCategoryList CreateNewMasterCartegories(ExchangeService service) { try { log.WriteDebugLog("No Master category list found. Try to create a new one."); var result = new MasterCategoryList(); result.Categories = new List <Category>(); result._UserConfigurationItem = new UserConfiguration(service); result._UserConfigurationItem.Save("CategoryList", WellKnownFolderName.Calendar); log.WriteDebugLog("Master category list created successfully."); return(result); } catch (Exception ex) { log.WriteErrorLog("No Master category list found. Creation failed. It's not possible to Ex- or Import categories for this mailbox"); log.WriteErrorLog(ex.ToString()); log.WriteErrorLog(ex.Message); return(null); } }