public void PutRequestInQueue(ActionRequest request) { var queue = GetCloudQueue(); var message = new CloudQueueMessage(JsonConvert.SerializeObject(request)); queue.AddMessage(message); }
public SiteCollectionManager(ActionRequest actionRequest, ClientContext ctx) { _actionRequest = actionRequest; _siteCollectionRequest = actionRequest.SiteCollectionRequest; _ctx = ctx; _siteTemplate = GetSiteTemplate(); }
public LogEntity(ActionRequest request, State state) : base(request.User, request.Name) { switch (state) { case State.Created: ProvisioningState = "Created"; break; case State.Provisioning: ProvisioningState = "Provisioning"; break; case State.Failed: ProvisioningState = "Failed"; break; case State.Queued: ProvisioningState = "Queued"; break; case State.Waiting: ProvisioningState ="Waiting"; break; default: throw new ArgumentOutOfRangeException(nameof(state), state, null); } RequestID = request.RequestID; CreatedSiteName = request.Name; ByUser = request.User; if(request.IsSiteCollection) CreatedSiteUrl = $"https://{request.TenantName}.sharepoint.com/{request.SiteCollectionRequest.ManagedPath}/{request.Name}"; else CreatedSiteUrl = request.Url + "/" + request.Name; UsedTemplate = request.SiteTemplateName; }
public ProgressState(ActionRequest ar) { this.RequestID = ar.RequestID; this.Description = ar.Description; this.SiteTemplateName = ar.SiteTemplateName; this.TenantName = ar.TenantName; this.Url = ar.Url; this.User = ar.User; this.Name = ar.Name; this.TimeStamp = DateTime.Now; this.StringTimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); this.StateString = ar.StateString; }
public ActionResult CreateSiteCollection(SiteCollectionTemplateCreationModel siteCollectionTemplateCreationModel) { User spUser = null; Site spSite = null; var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { if (clientContext != null) { spUser = clientContext.Web.CurrentUser; clientContext.Load(spUser, user => user.Email); clientContext.ExecuteQuery(); spSite = clientContext.Site; clientContext.Load(spSite, site => site.Url); clientContext.ExecuteQuery(); } } var siteCollectionRequest = new SiteCollectionRequest { Lcid = siteCollectionTemplateCreationModel.Lcid, ManagedPath = siteCollectionTemplateCreationModel.ManagedPath, ProvisioningType = siteCollectionTemplateCreationModel.ProvisioningType, StorageMaximumLevel = siteCollectionTemplateCreationModel.StorageMaximumLevel, TemplateId = siteCollectionTemplateCreationModel.TemplateId, TimeZoneId = siteCollectionTemplateCreationModel.TimeZoneId, }; var request = new ActionRequest { Name = siteCollectionTemplateCreationModel.Name, Description = siteCollectionTemplateCreationModel.Description, SiteTemplateName = siteCollectionTemplateCreationModel.SelectedSiteCreationTemplate, User = spUser.Email, Url = spSite.Url, SiteCollectionRequest = siteCollectionRequest, TenantName = new Uri(spSite.Url).Host.Split('.')[0] }; request.IsSiteCollection = true; _createRequestService.PutCreateRequestInQueue(request); _logService.SendLog(request, State.Queued); return RedirectToAction("Queue", "Log", new { SPHostUrl = Request.QueryString["SPHostUrl"] }); }
public ProgressState ToProgressObject(ActionRequest request, string update) { State state = StringToState(update); var prg = new ProgressState(request) { RequestID = request.RequestID, Description = request.Description, SiteTemplateName = request.SiteTemplateName, TenantName = request.TenantName, Url = request.Url, User = request.User, Name = request.Name, StringTimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), StateString = update, State = state }; return(prg); }
public ActionResult CreateSite(SiteTemplateCreationModel siteTemplateCreationModel) { User spUser = null; Site spSite = null; var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { if (clientContext != null) { spUser = clientContext.Web.CurrentUser; clientContext.Load(spUser, user => user.Email); clientContext.ExecuteQuery(); spSite = clientContext.Site; clientContext.Load(spSite, site => site.Url); clientContext.ExecuteQuery(); } } var request = new ActionRequest { RequestID = Guid.NewGuid(), Name = siteTemplateCreationModel.Name, Description = siteTemplateCreationModel.Description, SiteTemplateName = siteTemplateCreationModel.SelectedSiteCreationTemplate, User = spUser.Email, Url = spSite.Url, TenantName = new Uri(spSite.Url).Host.Split('.')[0] }; _createRequestService.PutCreateRequestInQueue(request); _logService.SendLog(request, State.Queued); return RedirectToAction("Queue", "Log", new { SPHostUrl = Request.QueryString["SPHostUrl"] }); }
public void PutCreateRequestInQueue(ActionRequest request) { _creationRequestQueue.PutRequestInQueue(request); }
public ProgressState ToProgressObject(ActionRequest request, string update) { State state = StringToState(update); var prg = new ProgressState(request) { RequestID = request.RequestID, Description = request.Description, SiteTemplateName = request.SiteTemplateName, TenantName = request.TenantName, Url = request.Url, User = request.User, Name = request.Name, StringTimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), StateString = update, State = state }; return prg; }
public ActionResult RequestProgress(ActionRequest request) { return View(request); }
public void AddlogToTable(ActionRequest request, State state) { var le = new LogEntity(request, state); TableOperation insertOperation = TableOperation.InsertOrReplace(le); TableResult result = Table.Execute(insertOperation); }
public void SendLog(ActionRequest request, State state) { var logs = new LogTable(); logs.AddlogToTable(request, state); }
private static void CreateSiteCollection(ActionRequest actionRequest) { string siteCollectionUrl; var tenantAdminUri = new Uri($"https://{actionRequest.TenantName}-admin.sharepoint.com"); var realm = TokenHelper.GetRealmFromTargetUrl(tenantAdminUri); var token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, tenantAdminUri.Authority, realm).AccessToken; using (var ctx = TokenHelper.GetClientContextWithAccessToken(tenantAdminUri.ToString(), token)) { var manager = new SiteCollectionManager(actionRequest, ctx); siteCollectionUrl = manager.CreateSiteCollection(); } var newWebUri = new Uri(siteCollectionUrl); token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, newWebUri.Authority, TokenHelper.GetRealmFromTargetUrl(newWebUri)).AccessToken; using (var ctx = TokenHelper.GetClientContextWithAccessToken(siteCollectionUrl, token)) { var pwd = ConfigurationManager.AppSettings["SharePointOnlineCredentials.Password"]; var username = ConfigurationManager.AppSettings["SharePointOnlineCredentials.Username"]; using (var secureString = new SecureString()) { foreach (var chr in pwd.ToCharArray()) { secureString.AppendChar(chr); } secureString.MakeReadOnly(); ctx.Credentials = new SharePointOnlineCredentials(username, secureString); ctx.RequestTimeout = Timeout.Infinite; var manager = new SiteCollectionManager(actionRequest, ctx); manager.ApplyCustomTemplateToSite(); } } }
private static void CreateSite(ActionRequest actionRequest) { var tenantAdminUri = new Uri(actionRequest.Url); var realm = TokenHelper.GetRealmFromTargetUrl(tenantAdminUri); var token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, tenantAdminUri.Authority, realm).AccessToken; using (var ctx = TokenHelper.GetClientContextWithAccessToken(tenantAdminUri.ToString(), token)) { var manager = new SiteManager(actionRequest, ctx); manager.CreateSite(); } tenantAdminUri = new Uri(actionRequest.Url + "/" + actionRequest.Name); realm = TokenHelper.GetRealmFromTargetUrl(tenantAdminUri); token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, tenantAdminUri.Authority, realm).AccessToken; using (var ctx = TokenHelper.GetClientContextWithAccessToken(tenantAdminUri.ToString(), token)) { var manager = new SiteManager(actionRequest, ctx); manager.ApplyCustomTemplateToSite(); } }