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();
 }
Beispiel #3
0
        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);
 }
Beispiel #11
0
        public void AddlogToTable(ActionRequest request, State state)
        {
            var le = new LogEntity(request, state);

            TableOperation insertOperation = TableOperation.InsertOrReplace(le);
            TableResult result = Table.Execute(insertOperation);
        }
Beispiel #12
0
 public void SendLog(ActionRequest request, State state)
 {
     var logs = new LogTable();
     logs.AddlogToTable(request, state);
 }
Beispiel #13
0
        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();
                }
            }
        }
Beispiel #14
0
        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();
            }
        }