Пример #1
0
        /// <summary>
        /// 検索実行
        /// </summary>
        private async Task DoSearch(Dispatcher d)
        {
            try
            {
                // サイトコレクション取得
                var   task = PnPUtility.GetSiteCollectionsAsync(_vm.Tenant, null);
                await task;

                if (task.Exception == null)
                {
                    // 成功したらViewModelへ追加
                    ObservableCollection <Site> sites = new ObservableCollection <Site>();
                    var result = task.Result;

                    // 絞り込み
                    if (!string.IsNullOrEmpty(_vm.SiteName))
                    {
                        result = (from s in result where s.Title.ToLower().Contains(_vm.SiteName.ToLower()) select s).ToList();
                    }

                    if (!string.IsNullOrEmpty(_vm.SiteURL))
                    {
                        result = (from s in result where s.Url.ToLower().Contains(_vm.SiteURL.ToLower()) select s).ToList();
                    }

                    // 追加
                    foreach (var siteCollection in result)
                    {
                        var site = new Site(_vm)
                        {
                            Title = siteCollection.Title, URL = siteCollection.Url
                        };
                        await site.InitializeDataAsync().ConfigureAwait(false);

                        sites.Add(site);
                    }

                    // 検索終了
                    await d.Execute(() => {
                        _vm.Sites       = sites;
                        _vm.IsSearching = false;
                    }, true).ConfigureAwait(false);
                }
                else
                {
                    // 検索終了
                    await d.Execute(() => { _vm.IsSearching = false; }, true).ConfigureAwait(false);

                    MessageBox.Show($"検索に失敗しました。\r\n{ task.Exception.InnerException?.Message?.ToString() }");
                }
            }
            catch (Exception ex)
            {
                // 検索終了
                await d.Execute(() => { _vm.IsSearching = false; }, true).ConfigureAwait(false);

                var message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                MessageBox.Show($"検索に失敗しました。\r\n{ message }");
            }
        }
        /// <summary>
        /// ログイン実行
        /// </summary>
        /// <returns></returns>
        private void DoLogin()
        {
            try
            {
                // テナント接続情報
                var tenantInfo = new TenantConnectionInfo(
                    $"https://{_vm.Domain}-admin.sharepoint.com",
                    _vm.Account,
                    _vm.Password);

                // サイトコレクション取得
                var task = PnPUtility.ConnectSpoAdminCenterAsync(tenantInfo);
                task.Wait();

                if (task.Exception == null)
                {
                    // アカウント保存
                    AppSettingUtil.Account = new AccountSetting()
                    {
                        Domain   = _vm.Domain,
                        Account  = _vm.Account,
                        Password = _vm.Password
                    };

                    // ログインボタン起動可能
                    _vm.IsLoginTrying = false;

                    // メイン画面起動
                    var view = new SPOTemplateInstaller.MainView(tenantInfo);
                    view.ShowDialog();
                }
                else
                {
                    // ログインボタン起動可能
                    _vm.IsLoginTrying = false;

                    MessageBox.Show($"ログインに失敗しました。\r\n{ task.Exception.InnerException?.Message?.ToString() }");
                }
            }
            catch (Exception ex)
            {
                // ログインボタン起動可能
                _vm.IsLoginTrying = false;

                var message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                MessageBox.Show($"ログインに失敗しました。\r\n{ message }");
            }
        }
Пример #3
0
        /// <summary>
        /// エンドポイント
        /// </summary>
        /// <param name="args">引数</param>
        static void Main(string[] args)
        {
            // ログ出力用メソッド名
            string methodName = MethodBase.GetCurrentMethod().Name;

            // 開始ログ
            Log.Write(methodName, "PnPバッチ開始");

            try
            {
                // 引数解析
                AppArgs appArgs = new AppArgs(args);
                Log.Write(methodName, appArgs.LogMsg.ToArray());

                // 処理
                if (appArgs.Retrived)
                {
                    // サイト情報
                    var site = new SiteConnectionInfo(appArgs.SiteUrl, appArgs.Account, appArgs.Password);

                    // 保存先
                    var template = new FileSystemConnectionInfo(appArgs.FolderPath, appArgs.FileName);

                    // 進捗報告
                    var progress = new Progress <string>((log) => { Log.Write(methodName, log); });

                    // 実行
                    var task = (appArgs.Mode == AppArgs.MODE.GET)? PnPUtility.SaveSiteAsProvisioningTemplateAsync(site, template, progress) : PnPUtility.ApplyProvisioningTemplateAsync(site, template, progress);
                    task.ConfigureAwait(false);
                    task.Wait();
                }
            }
            catch (Exception ex)
            {
                var message = (ex.InnerException != null) ? ex.InnerException : ex;
                Log.Write(methodName, message);
            }

            // 終了ログ
            Log.Write(methodName, "PnPバッチ終了");
        }
Пример #4
0
        /// <summary>
        /// サブサイト情報を初期化
        /// </summary>
        private async Task InitializeSubSitesAsync()
        {
            // 他の構成ではSharePointから取得
            try
            {
                var infoList = await PnPUtility.GetSubSitesAsync(new SiteConnectionInfo(URL, VM?.Tenant?.UserAccount, VM?.Tenant?.UserPassword), false, null);

                var subSites = new ObservableCollection <Site>();
                foreach (var info in infoList)
                {
                    subSites.Add(new Site(VM)
                    {
                        Title = info.Title,
                        URL   = info.Url
                    });
                }
                SubSites = subSites;
            }
            catch (Exception)
            {
            }
        }
Пример #5
0
        /// <summary>
        /// テンプレート取得実行
        /// </summary>
        private async Task DoGet(Dispatcher d)
        {
            try
            {
                // 保存先を選択
                var fileName = $"Template_{ DateTime.Now.ToString("yyyyMMddHHmmss") }.xml";
                var dialog   = new SaveFileDialog()
                {
                    Title           = "保存先の選択",
                    Filter          = $"XML(*.xml)|*.xml",
                    FileName        = fileName,
                    OverwritePrompt = true
                };

                // 取得を実行
                if (dialog.ShowDialog() == true)
                {
                    // ログタブに切り替え
                    await d.Execute(() => { _vm.LogTabSelected = true; }, true).ConfigureAwait(false);

                    // サイト情報
                    var site = new SiteConnectionInfo(_vm.SelectedSite.URL, _vm.Tenant.UserAccount, _vm.Tenant.UserPassword);

                    // 保存先
                    var template = new FileSystemConnectionInfo(Path.GetDirectoryName(dialog.FileName), Path.GetFileName(dialog.FileName));

                    // ログ
                    var progress = new Progress <string>(WriteLog);

                    // テンプレート取得
                    var   task = PnPUtility.SaveSiteAsProvisioningTemplateAsync(site, template, progress);
                    await task;

                    if (task.Exception == null)
                    {
                        // テンプレート取得終了
                        await d.Execute(() => {
                            _vm.IsGetting = false;
                        }, true).ConfigureAwait(false);
                    }
                    else
                    {
                        // テンプレート取得終了
                        await d.Execute(() => { _vm.IsGetting = false; }, true).ConfigureAwait(false);

                        MessageBox.Show($"テンプレート取得に失敗しました。\r\n{ task.Exception.InnerException?.Message?.ToString() }");
                    }
                }
                else
                {
                    // テンプレート取得終了
                    await d.Execute(() => { _vm.IsGetting = false; }, true).ConfigureAwait(false);
                }
            }
            catch (Exception ex)
            {
                // テンプレート取得終了
                await d.Execute(() => { _vm.IsGetting = false; }, true).ConfigureAwait(false);

                var message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                MessageBox.Show($"テンプレート取得に失敗しました。\r\n{ message }");
            }
        }
Пример #6
0
        /// <summary>
        /// 検索実行
        /// </summary>
        private async Task DoSearch(Dispatcher d)
        {
            try
            {
                // テンプレートを選択
                var dialog = new OpenFileDialog()
                {
                    Title       = "テンプレートファイルの選択",
                    Multiselect = false,
                    Filter      = $"XML(*.xml)|*.xml"
                };

                // 取得を実行
                if (dialog.ShowDialog() == true)
                {
                    // ログタブに切り替え
                    await d.Execute(() => { _vm.LogTabSelected = true; }, true).ConfigureAwait(false);

                    // サイト情報
                    var site = new SiteConnectionInfo(_vm.SelectedSite.URL, _vm.Tenant.UserAccount, _vm.Tenant.UserPassword);

                    // テンプレート
                    var template = new FileSystemConnectionInfo(Path.GetDirectoryName(dialog.FileName), Path.GetFileName(dialog.FileName));

                    // ログ
                    var progress = new Progress <string>(WriteLog);

                    // テンプレート適用
                    var   task = PnPUtility.ApplyProvisioningTemplateAsync(site, template, progress);
                    await task;

                    if (task.Exception == null)
                    {
                        // テンプレート取得終了
                        await d.Execute(() => {
                            _vm.IsApplying = false;
                        }, true).ConfigureAwait(false);
                    }
                    else
                    {
                        // テンプレート取得終了
                        await d.Execute(() => { _vm.IsApplying = false; }, true).ConfigureAwait(false);

                        MessageBox.Show($"テンプレート取得に失敗しました。\r\n{ task.Exception.InnerException?.Message?.ToString() }");
                    }
                }
                else
                {
                    // テンプレート取得終了
                    await d.Execute(() => { _vm.IsApplying = false; }, true).ConfigureAwait(false);
                }
            }
            catch (Exception ex)
            {
                // テンプレート取得終了
                await d.Execute(() => { _vm.IsApplying = false; }, true).ConfigureAwait(false);

                var message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                MessageBox.Show($"テンプレート取得に失敗しました。\r\n{ message }");
            }
        }