Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.32 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.SharePoint.Client;
  6. using Microsoft.SharePoint.Client.EventReceivers;
  7. using System.Configuration;
  8. using Puig.O365.Governance.Business;
  9. using Raona.Framework.Logging;
  10.  
  11. namespace Puig.O365.Governance.ApplicationWeb.Services
  12. {
  13. public class AppEventReceiver : IRemoteEventService
  14. {
  15. /// <summary>
  16. /// Handles app events that occur after the app is installed or upgraded, or when app is being uninstalled.
  17. /// </summary>
  18. /// <param name="properties">Holds information about the app event.</param>
  19. /// <returns>Holds information returned from the app event.</returns>
  20. public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
  21. {
  22. SPRemoteEventResult result = new SPRemoteEventResult();
  23. switch (properties.EventType)
  24. {
  25. case SPRemoteEventType.AppInstalled:
  26.  
  27. try
  28. {
  29. using (ClientContext clientContext = TokenHelper.CreateAppEventClientContext(properties, useAppWeb: false))
  30. {
  31.  
  32.  
  33. if (properties.AppEventProperties.ProductId.ToString() == ConfigurationManager.AppSettings.Get("DepartamentalProductID"))
  34. {
  35. SendRootSiteCreationMessage(clientContext);
  36. result.Status = SPRemoteEventServiceStatus.Continue;
  37. }
  38. else if (properties.AppEventProperties.ProductId.ToString() == ConfigurationManager.AppSettings.Get("RootProductID"))
  39. {
  40. SendRootSiteCreationMessage(clientContext);
  41. result.Status = SPRemoteEventServiceStatus.Continue;
  42. }
  43. }
  44. }
  45. catch (Exception e)
  46. {
  47. Trace.TraceError(e.Message);
  48. result.ErrorMessage = e.Message;
  49. result.Status = SPRemoteEventServiceStatus.CancelWithError;
  50. }
  51.  
  52. break;
  53.  
  54. case SPRemoteEventType.AppUpgraded:
  55. Trace.TraceError("upgrade");
  56. result.Status = SPRemoteEventServiceStatus.CancelWithError;
  57. break;
  58. case SPRemoteEventType.AppUninstalling:
  59. Trace.TraceError("unistall");
  60. result.Status = SPRemoteEventServiceStatus.CancelWithError;
  61. break;
  62. }
  63.  
  64. return result;
  65. }
  66.  
  67.  
  68.  
  69. /// <summary>
  70. /// This method is a required placeholder, but is not used by app events.
  71. /// </summary>
  72. /// <param name="properties">Unused.</param>
  73. public void ProcessOneWayEvent(SPRemoteEventProperties properties)
  74. {
  75. Trace.TraceError("Not implemented");
  76. }
  77. public static void SendRootSiteCreationMessage(ClientContext clientContext)
  78. {
  79. var web = clientContext.Web;
  80. clientContext.Load(web, w => w.Title, w => w.Url);
  81. clientContext.ExecuteQuery();
  82. var siteName = web.Title;
  83. var siteUrl = web.Url;
  84. var clientIdRoot = ConfigurationManager.AppSettings.Get("ClientIdRoot");
  85. var clientSecretRoot = ConfigurationManager.AppSettings.Get("ClientSecretRoot");
  86. Dictionary<string, object> messageProperties = new Dictionary<string, object>();
  87. }
  88.  
  89. public static void SendDepartamentalSiteCreationMessage(ClientContext clientContext)
  90. {
  91. var web = clientContext.Web;
  92. clientContext.Load(web, w => w.Title, w => w.Url);
  93. clientContext.ExecuteQuery();
  94. var siteName = web.Title;
  95. var siteUrl = web.Url;
  96. var clientIdDepartamental = ConfigurationManager.AppSettings.Get("ClientIdDepartamental");
  97. var clientSecretDepartamental = ConfigurationManager.AppSettings.Get("ClientSecretDepartamental");
  98. Dictionary<string, object> messageProperties = new Dictionary<string, object>();
  99.  
  100. }
  101. }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement