예제 #1
0
        public async Task <IActionResult> Create(string name)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageBackgroundTasks))
            {
                return(Forbid());
            }

            var model = new BackgroundTaskViewModel()
            {
                Name = name
            };

            var task = _backgroundTasks.GetTaskByName(name);

            if (task != null)
            {
                var settings = task.GetDefaultSettings();

                model.Enable          = settings.Enable;
                model.Schedule        = settings.Schedule;
                model.DefaultSchedule = settings.Schedule;
                model.Description     = settings.Description;
            }

            return(View(model));
        }
예제 #2
0
        public async Task <IActionResult> Edit(string name)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageBackgroundTasks))
            {
                return(Forbid());
            }

            var document = await _backgroundTaskManager.GetDocumentAsync();

            if (!document.Settings.ContainsKey(name))
            {
                return(RedirectToAction("Create", new { name }));
            }

            var task = _backgroundTasks.GetTaskByName(name);

            var settings = document.Settings[name];

            var model = new BackgroundTaskViewModel
            {
                Name            = name,
                Enable          = settings.Enable,
                Schedule        = settings.Schedule,
                DefaultSchedule = task?.GetDefaultSettings().Schedule,
                Description     = settings.Description
            };

            return(View(model));
        }
예제 #3
0
        public async Task <IActionResult> Edit(BackgroundTaskViewModel model)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageBackgroundTasks))
            {
                return(Forbid());
            }

            if (ModelState.IsValid)
            {
                if (String.IsNullOrWhiteSpace(model.Name))
                {
                    ModelState.AddModelError(nameof(BackgroundTaskViewModel.Name), S["The name is mandatory."]);
                }
            }

            if (ModelState.IsValid)
            {
                var settings = new BackgroundTaskSettings
                {
                    Name        = model.Name,
                    Enable      = model.Enable,
                    Schedule    = model.Schedule?.Trim(),
                    Description = model.Description
                };

                await _backgroundTaskManager.UpdateAsync(model.Name, settings);

                return(RedirectToAction(nameof(Index)));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
예제 #4
0
        public void Add()
        {
            var destDataBaseName = this.SelectDataBase();

            if (destDataBaseName == null)
            {
                return;
            }

            var task = new BackgroundTask((p, c) =>
            {
                p.Report(0, "현재 데이터 베이스 가져오는중");
                var dataSet1 = this.cremaHost.Dispatcher.Invoke(() =>
                {
                    var dataBase = this.cremaHost.DataBases[this.cremaAppHost.DataBaseName];
                    return(dataBase.GetDataSet(this.authenticator, -1));
                });
                p.Report(0.33, "대상 데이터 베이스 가져오는중");
                var dataSet2 = this.cremaHost.Dispatcher.Invoke(() =>
                {
                    var dataBase = this.cremaHost.DataBases[destDataBaseName];
                    if (dataBase.IsLoaded == false)
                    {
                        dataBase.Load(this.authenticator);
                    }
                    dataBase.Enter(this.authenticator);
                    try
                    {
                        return(dataBase.GetDataSet(this.authenticator, -1));
                    }
                    finally
                    {
                        dataBase.Leave(this.authenticator);
                    }
                });
                p.Report(0.66, "비교하는중");
                return(new DiffDataSet(dataSet2, dataSet1, DiffMergeTypes.ReadOnly2)
                {
                    Header1 = destDataBaseName,
                    Header2 = this.cremaAppHost.DataBaseName
                });
            });

            task.ProgressChanged += Task_ProgressChanged;
            var dialog = new BackgroundTaskViewModel(task)
            {
                DisplayName = "데이터 베이스 비교하기",
            };

            dialog.ShowDialog();
        }
        public async Task AddAsync()
        {
            var destDataBaseName = await this.SelectDataBaseAsync();

            if (destDataBaseName == null)
            {
                return;
            }

            var task = new BackgroundViewModel(this.authenticator, this.cremaHost, this.cremaAppHost.DataBaseName, destDataBaseName);

            task.ProgressChanged += Task_ProgressChanged;
            var dialog = new BackgroundTaskViewModel(this.statusBarService, task: task)
            {
                DisplayName = "데이터 베이스 비교하기",
            };
            await dialog.ShowDialogAsync();
        }