Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Microsoft.SharePoint.Client;
- using Microsoft.SharePoint.Client.EventReceivers;
- using System.Configuration;
- using Puig.O365.Governance.Business;
- using Raona.Framework.Logging;
- namespace Puig.O365.Governance.ApplicationWeb.Services
- {
- public class AppEventReceiver : IRemoteEventService
- {
- /// <summary>
- /// Handles app events that occur after the app is installed or upgraded, or when app is being uninstalled.
- /// </summary>
- /// <param name="properties">Holds information about the app event.</param>
- /// <returns>Holds information returned from the app event.</returns>
- public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
- {
- SPRemoteEventResult result = new SPRemoteEventResult();
- switch (properties.EventType)
- {
- case SPRemoteEventType.AppInstalled:
- try
- {
- using (ClientContext clientContext = TokenHelper.CreateAppEventClientContext(properties, useAppWeb: false))
- {
- if (properties.AppEventProperties.ProductId.ToString() == ConfigurationManager.AppSettings.Get("DepartamentalProductID"))
- {
- SendRootSiteCreationMessage(clientContext);
- result.Status = SPRemoteEventServiceStatus.Continue;
- }
- else if (properties.AppEventProperties.ProductId.ToString() == ConfigurationManager.AppSettings.Get("RootProductID"))
- {
- SendRootSiteCreationMessage(clientContext);
- result.Status = SPRemoteEventServiceStatus.Continue;
- }
- }
- }
- catch (Exception e)
- {
- Trace.TraceError(e.Message);
- result.ErrorMessage = e.Message;
- result.Status = SPRemoteEventServiceStatus.CancelWithError;
- }
- break;
- case SPRemoteEventType.AppUpgraded:
- Trace.TraceError("upgrade");
- result.Status = SPRemoteEventServiceStatus.CancelWithError;
- break;
- case SPRemoteEventType.AppUninstalling:
- Trace.TraceError("unistall");
- result.Status = SPRemoteEventServiceStatus.CancelWithError;
- break;
- }
- return result;
- }
- /// <summary>
- /// This method is a required placeholder, but is not used by app events.
- /// </summary>
- /// <param name="properties">Unused.</param>
- public void ProcessOneWayEvent(SPRemoteEventProperties properties)
- {
- Trace.TraceError("Not implemented");
- }
- public static void SendRootSiteCreationMessage(ClientContext clientContext)
- {
- var web = clientContext.Web;
- clientContext.Load(web, w => w.Title, w => w.Url);
- clientContext.ExecuteQuery();
- var siteName = web.Title;
- var siteUrl = web.Url;
- var clientIdRoot = ConfigurationManager.AppSettings.Get("ClientIdRoot");
- var clientSecretRoot = ConfigurationManager.AppSettings.Get("ClientSecretRoot");
- Dictionary<string, object> messageProperties = new Dictionary<string, object>();
- }
- public static void SendDepartamentalSiteCreationMessage(ClientContext clientContext)
- {
- var web = clientContext.Web;
- clientContext.Load(web, w => w.Title, w => w.Url);
- clientContext.ExecuteQuery();
- var siteName = web.Title;
- var siteUrl = web.Url;
- var clientIdDepartamental = ConfigurationManager.AppSettings.Get("ClientIdDepartamental");
- var clientSecretDepartamental = ConfigurationManager.AppSettings.Get("ClientSecretDepartamental");
- Dictionary<string, object> messageProperties = new Dictionary<string, object>();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement