コード例 #1
0
        /// <summary>
        ///		Ejecuta el script
        /// </summary>
        private async Task ExecuteScriptSqlAsync(IDetailViewModel viewModel, ConnectionModel connection, ArgumentListModel arguments, CancellationToken cancellationToken)
        {
            bool isExecuting = false;

            // Ejecuta sobre el ViewModel activo
            switch (viewModel)
            {
            case Files.ScriptFileViewModel fileViewModel:
                await fileViewModel.ExecuteSqlScriptAsync(connection, arguments, cancellationToken);

                isExecuting = true;
                break;

            case ExecuteFilesViewModel fileViewModel:
                await fileViewModel.ExecuteScriptAsync(connection, arguments, cancellationToken);

                isExecuting = true;
                break;
            }
            // Si no se está ejecutando nada, muestra un mensaje al usuario
            if (!isExecuting)
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione la ventana de ejecución");
            }
        }
コード例 #2
0
        /// <summary>
        ///		Abre un archivo (si reconoce la extensión)
        /// </summary>
        public bool OpenFile(string fileName)
        {
            bool opened = false;

            if (!string.IsNullOrWhiteSpace(fileName))
            {
                IDetailViewModel fileViewModel = GetFileViewModel(fileName);

                // Abre la ventana
                if (fileViewModel != null)
                {
                    if (fileViewModel is Details.Files.ScriptFileViewModel scriptFileViewModel)
                    {
                        MainController.PluginController.HostPluginsController.OpenEditor(scriptFileViewModel);
                    }
                    else
                    {
                        MainController.OpenWindow(fileViewModel);
                    }
                    opened = true;
                }
            }
            // Devuelve el valor que indica si se ha abierto el archivo
            return(opened);
        }
コード例 #3
0
        public void ShowProgress()
        {
            IProgressViewModel progressViewModel = new ProgressViewModel();

            progressViewModel.ErrorAcknowledged += ProgressViewModelErrorAcknowledged;
            DetailViewModel = progressViewModel;
        }
コード例 #4
0
        /// <summary>
        ///		Obtiene el modo de ejecución
        /// </summary>
        private ExecutionMode GetExecutionMode(IDetailViewModel viewModel)
        {
            switch (viewModel)
            {
            case Files.ScriptFileViewModel fileViewModel:
                if (fileViewModel.FileName.EndsWith(".sqlx", StringComparison.CurrentCultureIgnoreCase))
                {
                    return(ExecutionMode.ScriptSqlExtended);
                }
                else if (fileViewModel.FileName.EndsWith(".sql", StringComparison.CurrentCultureIgnoreCase))
                {
                    return(ExecutionMode.ScriptSql);
                }
                else if (fileViewModel.FileName.EndsWith(".xml", StringComparison.CurrentCultureIgnoreCase))
                {
                    return(ExecutionMode.JobsXml);
                }
                else
                {
                    return(ExecutionMode.Unknown);
                }

            case ExecuteEtlConsoleViewModel _:
                return(ExecutionMode.BatchEtl);

            case ExecuteFilesViewModel _:
                return(ExecutionMode.BatchSql);

            default:
                return(ExecutionMode.Unknown);
            }
        }
コード例 #5
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch
                {
                    await _messageDialogService.ShowInfoDialogAsync("Невозможно загрузить данные," +
                                                                    "возможно сущность данные были удалены другим пользователем.");

                    await NavigationViewModel.LoadAsync();

                    return;
                }
                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;
        }
コード例 #6
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch
                {
                    await _messageDialogService.ShowInfoDialogAsync("Записът не може да бъде зареден." +
                                                                    " Може би вече е изтрит от друг потребител. Наигационното меню ще бъде презаредено.");

                    await NavigationViewModel.LoadAsync();

                    return;
                }
                DetailViewModels.Add(detailViewModel);
            }
            SelectedDetailViewModel = detailViewModel;
        }
コード例 #7
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch
                {
                    await _messageDialogService.ShowInfoDialogAsync("Could not load the entity, " +
                                                                    "maybe, in the meantime, it was deleted by another user. " +
                                                                    "The navigation will be refreshed for you.");

                    await NavigationViewModel.LoadAsync();

                    return;
                }
                DetailViewModels.Add(detailViewModel);
            }
            SelectedDetailViewModel = detailViewModel;
        }
コード例 #8
0
ファイル: MainViewModel.cs プロジェクト: Zohrehvand/Wpf
 private async void OnOpenDetailView(OpenDetailViewEventArgs args)
 {
     if (DetailViewModel != null && DetailViewModel.HasChanges)
     {
         var result = _messageDialogService.ShowOkCancelDialog("You've made changes. Navigate away?", "Question");
         if (result == MessageDialogResult.Cancel)
         {
             return;
         }
     }
     //switch (args.ViewModelName)
     //{
     //    case nameof(CustomerDetailViewModel):
     //        DetailViewModel = _customerDetailViewModelCreator();
     //        break;
     //    case nameof(CampaignDetailViewModel):
     //        DetailViewModel = _campaignDetailViewModelCreator();
     //        break;
     //    default:
     //        throw new Exception($"ViewModel {args.ViewModelName} not mapped");
     //}
     //DetailViewModel = _customerDetailViewModelCreator();
     DetailViewModel = _detailViewModelCreator[args.ViewModelName];
     await DetailViewModel.LoadAsync(args.Id);
 }
コード例 #9
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            var detailViewModel = DetailViewModels.SingleOrDefault(vm => vm.Id == args.Id &&
                                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                } catch
                {
                    _messageDialogService.ShowInfoDialog("Could not load entity, maybe it was deleted in the meantime by" +
                                                         "another uuser.");
                    await NavigationViewModel.LoadAsync();

                    return;
                }
                DetailViewModels.Add(detailViewModel);
            }

            if (SelectedDetailViewModel != null && SelectedDetailViewModel.HasChanges)
            {
                var result = _messageDialogService.ShowOkCancelDialog("You've made changes. Navigate away?", "Question");
                if (result == MessageDialogResult.CANCEL)
                {
                    return;
                }
            }
            SelectedDetailViewModel = detailViewModel;
        }
コード例 #10
0
ファイル: MainViewModel.cs プロジェクト: grezap/PluralSight
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            //if (SelectedDetailViewModel!= null && SelectedDetailViewModel.HasChanges)
            //{
            //    var res = _messageDialogService.ShowOkCancelDialog("There are Changes. Navigate Away?", "Question");
            //    if (res == MessageDialogResult.Cancel)
            //    {
            //        return;
            //    }
            //}

            var detailViewModel = DetailViewModels.SingleOrDefault(vm => vm.Id == args.Id && vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                await detailViewModel.LoadAsync(args.Id);

                DetailViewModels.Add(detailViewModel);
            }

            //switch (args.ViewModelName)
            //{
            //    case nameof(FriendDetailViewModel):
            //        DetailViewModel = _friendDetailViewModelCreator();
            //        break;
            //    case nameof(MeetingDetailViewModel):
            //        DetailViewModel = _meetingDetailViewModelCreator();
            //        break;
            //    default:
            //        throw new Exception($"ViewModel {args.ViewModelName} not mapped");
            //}
            SelectedDetailViewModel = detailViewModel;
        }
コード例 #11
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args) // when user clicked an item in the navigation this method is called
        {
            //it is not a good idea to use MessageBox directly in our viewmodel as this would block unit test on this method

            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch (Exception ex)
                {
                    await _messageDialogService.ShowInfoDialogAsync("Could not load the entity, maybe it was deleted in the meantime"
                                                                    + " by another user. The navigation is refreshed for you.");

                    await NavigationViewModel.LoadAsync();

                    return;
                }
                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;
        }
コード例 #12
0
        /// <summary>
        ///		Ejecuta un script
        /// </summary>
        internal async Task ExecuteScriptAsync()
        {
            if (IsExecuting)
            {
                SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Ya se está ejecutando una consulta");
            }
            else
            {
                IDetailViewModel selectedViewModel = SolutionViewModel.MainController.MainWindowController.GetActiveDetails();

                switch (GetExecutionMode(selectedViewModel))
                {
                case ExecutionMode.Unknown:
                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage("No se puede ejecutar este archivo");
                    break;

                case ExecutionMode.BatchSql:
                case ExecutionMode.ScriptSql:
                case ExecutionMode.ScriptSqlExtended:
                    await PrepareExecuteScriptSqlAsync(selectedViewModel);

                    break;

                case ExecutionMode.JobsXml:
                    await PrepareExecuteScriptXmlAsync(selectedViewModel);

                    break;

                case ExecutionMode.BatchEtl:
                    await PrepareExecuteBatchXmlAsync(selectedViewModel);

                    break;
                }
            }
        }
コード例 #13
0
        public MainViewModel(IIndex <string, IDetailViewModel> detailViewModelCreator)
        {
            _detailViewModelCreator = detailViewModelCreator;
            _detailViewModel        = new LogoViewModel();

            CreateDetailViewCommand = new DelegateCommand <Type>(OnCreateDetailView);
        }
コード例 #14
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            IDetailViewModel detailViewModel = DetailViewModels.
                                               SingleOrDefault(vm => vm.Id == args.Id &&
                                                               vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch
                {
                    await _messageDialogService.ShowInfoDialogAsync("Could not load entiry");

                    await NavigationViewModel.LoadAsync();

                    return;
                }

                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;
        }
コード例 #15
0
        private async void OpenDetailView(OpenDetailViewEventArgs args)
        {
            Int64 startTicks = Log.EVENT_HANDLER($"(DogMainViewModel) Enter Id:({args.Id}(", Common.LOG_APPNAME);

            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                switch (args.ViewModelName)
                {
                case nameof(DogDetailViewModel):
                    detailViewModel = (IDetailViewModel)_DogDetailViewModelCreator();
                    break;

                //case nameof(MeetingDetailViewModel):
                //    detailViewModel = _meetingDetailViewModelCreator();
                //    break;

                case nameof(BoneDetailViewModel):
                    detailViewModel = _BoneDetailViewModelCreator();
                    break;

                // Ignore event if we don't handle
                default:
                    return;
                }

                // Verify item still exists (may have been deleted)

                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch (Exception ex)
                {
                    //MessageDialogService.ShowInfoDialog($"Cannot load the entity ({ex})" +
                    //    "It may have been deleted by another user.  Updating Navigation");

                    var message = $"Cannot load the entity ({ex})" +
                                  "It may have been deleted by another user.  Updating Navigation";

                    DialogService.Show("NotificationDialog", new DialogParameters($"message={message}"), r =>
                    {
                    });

                    await NavigationViewModel.LoadAsync();

                    return;
                }

                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;

            Log.VIEWMODEL("(DogMainViewModel) Exit", Common.LOG_APPNAME, startTicks);
        }
コード例 #16
0
        private async void OpenDetailView(OpenDetailViewEventArgs args)
        {
            Int64 startTicks = Log.EVENT_HANDLER($"(CatMainViewModel) Enter Id:({args.Id}(", Common.LOG_CATEGORY);

            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                switch (args.ViewModelName)
                {
                // case nameof(CatDetailViewModel):
                // detailViewModel = (IDetailViewModel)_CatDetailViewModelCreator();
                // break;

                case nameof(CatDetailViewModel):
                    detailViewModel = (IDetailViewModel)_CatDetailViewModelCreator();
                    break;

                //case nameof(MeetingDetailViewModel):
                //    detailViewModel = _meetingDetailViewModelCreator();
                //    break;

                case nameof(ToyDetailViewModel):
                    detailViewModel = _ToyDetailViewModelCreator();
                    break;

                // This should not happen anymore withe TYPEEvent
                default:
                    return;
                }

                // Verify item still exists (may have been deleted)

                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch (Exception ex)
                {
                    var message = $"Cannot load the entity ({ex}) It may have been deleted by another user";

                    DialogService.Show("NotificationDialog", new DialogParameters($"message={message}"), r =>
                    {
                    });

                    await NavigationViewModel.LoadAsync();

                    return;
                }

                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;

            Log.VIEWMODEL("(CatMainViewModel) Exit", Common.LOG_CATEGORY, startTicks);
        }
コード例 #17
0
        public void ShowError(string errorMessage)
        {
            IErrorViewModel errorViewModel = new ErrorViewModel();

            errorViewModel.ErrorAcknowledged += ErrorViewModelErrorAcknowledged;
            errorViewModel.LoadData(errorMessage);
            DetailViewModel = errorViewModel;
        }
コード例 #18
0
        private void RemoveDetailViewModel(int id, string viewModelName)
        {
            IDetailViewModel detailViewModel = DetailViewModels.
                                               SingleOrDefault(vm => vm.Id == id &&
                                                               vm.GetType().Name == viewModelName);

            if (detailViewModel != null)
            {
                DetailViewModels.Remove(detailViewModel);
            }
        }
コード例 #19
0
        /// <summary>
        ///		Modifica la ventana de detalles seleccionada
        /// </summary>
        private void UpdateSelectedTab()
        {
            IDetailViewModel details = null;

            // Obtiene los detalles de la ficha seleccionada
            if (dckManager.ActiveDocument != null)
            {
                details = dckManager.ActiveDocument.Tag as IDetailViewModel;
            }
            // Cambia la ficha seleccionada en el ViewModel
            ViewModel.SelectedDetailsViewModel = details;
        }
コード例 #20
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            if (DetailViewModel != null && DetailViewModel.HasChanges)
            {
                var result = _messageDialogService.ShowOkCancelDialog("You've made changes. Navigate away?", "Question");
                if (result == MessageDialogResult.Cancel)
                {
                    return;
                }
            }

            DetailViewModel = _detailViewModelCreator[args.ViewModelName];
            await DetailViewModel.LoadAsync(args.Id);
        }
コード例 #21
0
        /*public IFriendDetailViewModel FriendDetailViewModel { get; }*/    // We don`t need set becouse we setup property directly into ctor, we bind it to friendView

        // WE DON`T NEED THIS IN MainViewModel
        //public ObservableCollection<Friend> Friends { get; set; }

        //public Friend SelectedFriend
        //{
        //    get { return _selectedFriend; }
        //    set
        //    {
        //        _selectedFriend = value;
        //        OnPropertyChanged();        // rise event handler; property name if automaticly passed from compiler via atribut in the method
        //    }
        //}

        // This method is called whenever user click item in navigation
        // If no one detailViewModel exist one is created by if statement
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            // args.Id contain Id of view that is clicked
            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id && vm.GetType().Name == args.ViewModelName);

            // If ViewModel did not exist in observable collection
            if (detailViewModel == null)
            {
                detailViewModel = _detailViewModelCreator[args.ViewModelName];
                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch
                {
                    await _messageDialogService.ShowInfoDialogAsync("Could not load the entity maybe it was deleted in the meantime by another user. The navigation is refreshed for you.");

                    await NavigationViewModel.LoadAsync();

                    return;
                }
                DetailViewModels.Add(detailViewModel);
            }

            // Logic if user change something and navigate from current detailView
            //if (SelectedDetailViewModel != null && SelectedDetailViewModel.HasChanges)
            //{
            //    var result = _messageDialogService.ShowOkCancelDialog("You've made changes. Navigate away?", "Question");
            //    if (result == MessageDialogResult.Cancel)
            //    {
            //        return;
            //    }
            //}
            //switch (args.ViewModelName)
            //{
            //    case nameof(FriendDetailViewModel):
            //        DetailViewModel = _friendDetailViewModelCreator();
            //        break;
            //    case nameof(MeetingDetailViewModel):
            //        DetailViewModel = _meetingDetailViewModelCreator();
            //        break;
            //    default:
            //        throw new Exception($"ViewModel {args.ViewModelName} not mapped");
            //}

            SelectedDetailViewModel = detailViewModel;
        }
コード例 #22
0
        /// <summary>
        ///		Abre una ventana
        /// </summary>
        public SystemControllerEnums.ResultType OpenWindow(IDetailViewModel detailsViewModel)
        {
            // Abre la ventana
            switch (detailsViewModel)
            {
            case ViewModels.Details.Connections.ExecuteFilesViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Connections.ExecuteFilesView(viewModel), viewModel);
                break;

            case ViewModels.Details.Files.ScriptFileViewModel viewModel:
                PluginController.HostPluginsController.OpenEditor(viewModel);
                break;

            case ViewModels.Details.Files.Structured.BaseFileViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Files.DataTableFileView(viewModel), viewModel);
                break;

            case ViewModels.Details.Queries.ExecuteQueryViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Queries.ExecuteQueryView(viewModel), viewModel);
                break;

            case ViewModels.Details.EtlProjects.ExecuteEtlConsoleViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new EtlProjects.ExecuteEtlConsoleView(viewModel), viewModel);
                break;

            case ViewModels.Details.Reporting.DataSources.DataSourceSqlViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Reporting.Details.DataSources.DataSourceSqlView(viewModel), viewModel);
                break;

            case ViewModels.Details.Reporting.DataSources.DataSourceTableViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Reporting.Details.DataSources.DataSourceTableView(viewModel), viewModel);
                break;

            case ViewModels.Details.Reporting.Dimension.DimensionViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Reporting.Details.Dimensions.DimensionView(viewModel), viewModel);
                break;

            case ViewModels.Details.Reporting.Queries.ReportViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Reporting.Queries.ReportView(viewModel), viewModel);
                break;

            case ViewModels.Details.Reporting.Reports.ReportViewModel viewModel:
                DbStudioViewManager.AppViewsController.OpenDocument(new Reporting.Details.Reports.ReportView(viewModel), viewModel);
                break;
            }
            // Devuelve el valor predeterminado
            return(SystemControllerEnums.ResultType.Yes);
        }
コード例 #23
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                detailViewModel = detailViewModelCreator[args.ViewModelName];
                await detailViewModel.LoadAsync(args.Id);

                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;
        }
コード例 #24
0
        /// <summary>
        ///		Prepara la ejecución de un script XML
        /// </summary>
        private async Task PrepareExecuteBatchXmlAsync(IDetailViewModel viewModel)
        {
            if (viewModel is ExecuteEtlConsoleViewModel etlViewModel)
            {
                if (string.IsNullOrWhiteSpace(etlViewModel.ProjectFileName))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione el archivo de proyecto");
                }
                else if (!etlViewModel.ProjectFileName.EndsWith(".xml"))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("No se reconoce el formato del archivo de proyecto");
                }
                else if (string.IsNullOrWhiteSpace(etlViewModel.ContextFileName))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione el archivo de contexto");
                }
                else if (!etlViewModel.ContextFileName.EndsWith(".xml"))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("No se reconoce el formato del archivo de contexto");
                }
                else
                {
                    // Arranca la ejecución
                    StartExecution();
                    // Ejecuta la tarea
                    try
                    {
                        // Ejecuta el script XML
                        await etlViewModel.ExecuteXmlScriptAsync(_cancellationToken);

                        // Muestra el mensaje al usuario
                        SolutionViewModel.MainController.MainWindowController
                        .ShowNotification(BauMvvm.ViewModels.Controllers.SystemControllerEnums.NotificationType.Information,
                                          "Ejecución de script XML",
                                          "Ha terminado correctamente la ejecución del script");
                    }
                    catch (Exception exception)
                    {
                        SolutionViewModel.MainController.Logger.Default.LogItems.Error($"Error al ejecutar la consulta. {exception.Message}");
                    }
                    // Indica que ha finalizado la tarea y detiene el temporizador
                    StopExecuting();
                }
            }
        }
コード例 #25
0
        /// <summary>
        ///		Prepara la ejecución de un script XML
        /// </summary>
        private async Task PrepareExecuteScriptXmlAsync(IDetailViewModel viewModel)
        {
            if (viewModel is Files.ScriptFileViewModel fileViewModel)
            {
                if (!fileViewModel.FileName.EndsWith(".xml"))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("No se pueden ejecutar scripts de este tipo de archivo");
                }
                else if (fileViewModel.IsUpdated)
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Grabe el contenido del archivo antes de ejecutar");
                }
                else if (string.IsNullOrWhiteSpace(fileViewModel.Content))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("El archivo está vacío");
                }
                else if (string.IsNullOrWhiteSpace(EtlParametersFileName) || !System.IO.File.Exists(EtlParametersFileName))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione un archivo de contexto");
                }
                else
                {
                    // Arranca la ejecución
                    StartExecution();
                    // Ejecuta la tarea
                    try
                    {
                        // Ejecuta el script XML
                        await fileViewModel.ExecuteXmlScriptAsync(EtlParametersFileName, _cancellationToken);

                        // Muestra el mensaje al usuario
                        SolutionViewModel.MainController.MainWindowController
                        .ShowNotification(BauMvvm.ViewModels.Controllers.SystemControllerEnums.NotificationType.Information,
                                          "Ejecución de script XML",
                                          "Ha terminado correctamente la ejecución del script");
                    }
                    catch (Exception exception)
                    {
                        SolutionViewModel.MainController.Logger.Default.LogItems.Error($"Error al ejecutar la consulta. {exception.Message}");
                    }
                    // Indica que ha finalizado la tarea y detiene el temporizador
                    StopExecuting();
                }
            }
        }
コード例 #26
0
        public static void DoPrintRecord(IDetailViewModel detail, DateTime refreshDateTime, int headerLength,
                                         string filePrefix, string title, int registerId)
        {
            IBusinessBase model = detail.Model as IBusinessBase;

            var instance = new PrintRecord
            {
                _detail          = detail,
                _model           = model,
                _refreshDateTime = refreshDateTime,
                _headerLength    = headerLength,
                _filePrefix      = filePrefix,
                _title           = title,
                _registerId      = registerId
            };

            instance.DoPrintRecord();
        }
コード例 #27
0
        /// <summary>
        ///		Abre una ventana de detalles
        /// </summary>
        public SystemControllerEnums.ResultType OpenWindow(IDetailViewModel detailViewModel)
        {
            SystemControllerEnums.ResultType result = SystemControllerEnums.ResultType.Yes;

            // Muestra la ventana adecuada
            switch (detailViewModel)
            {
            case Libraries.BauSparkScripts.ViewModels.Solutions.Details.Connections.ConnectionViewModel viewModel:
                result = HostHelperController.ShowDialog(MainWindow, new Views.Connections.ConnectionView(viewModel));
                break;

            default:
                OpenWindowRequired?.Invoke(this, detailViewModel);
                break;
            }
            // Devuelve el resultado
            return(result);
        }
コード例 #28
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            var detailViewModel = DetailViewModels
                                  .SingleOrDefault(vm => vm.Id == args.Id &&
                                                   vm.GetType().Name == args.ViewModelName);

            if (detailViewModel == null)
            {
                switch (args.ViewModelName)
                {
                case nameof(FriendDetailViewModel):
                    detailViewModel = _friendDetailViewModelCreator();
                    break;

                case nameof(MeetingDetailViewModel):
                    detailViewModel = _meetingDetailViewModelCreator();
                    break;

                case nameof(ProgrammingLanguageDetailViewModel):
                    detailViewModel = _programmingLanguageDetailViewModelCreator();
                    break;
                }

                // Verify item still exists (may have been deleted)

                try
                {
                    await detailViewModel.LoadAsync(args.Id);
                }
                catch
                {
                    _messageDialogService.ShowInfoDialog(
                        "Cannot load the entity, it may have been deleted" +
                        " by another user.  Updating Navigation");
                    await NavigationViewModel.LoadAsync();

                    return;
                }

                DetailViewModels.Add(detailViewModel);
            }

            SelectedDetailViewModel = detailViewModel;
        }
コード例 #29
0
        /// <summary>
        ///		Prepara la ejecución de un script SQL o un lote de scripts SQL
        /// </summary>
        private async Task PrepareExecuteScriptSqlAsync(IDetailViewModel viewModel)
        {
            ConnectionModel connection = GetSelectedConnection();

            if (connection == null)
            {
                SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Seleccione una conexión");
            }
            else
            {
                (ArgumentListModel arguments, string error) = GetParameters();

                // Si ha podido cargar el archivo de parámetros, ejecuta el script
                if (!string.IsNullOrWhiteSpace(error))
                {
                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage(error);
                }
                else
                {
                    // Arranca la ejecución
                    StartExecution();
                    // Ejecuta la tarea
                    try
                    {
                        // Ejecuta el script
                        await ExecuteScriptSqlAsync(viewModel, connection, arguments, _cancellationToken);

                        // Mensaje al usuario
                        SolutionViewModel.MainController.MainWindowController
                        .ShowNotification(BauMvvm.ViewModels.Controllers.SystemControllerEnums.NotificationType.Information,
                                          "Ejecución de script SQL",
                                          "Ha terminado correctamente la ejecución del script SQL");
                    }
                    catch (Exception exception)
                    {
                        SolutionViewModel.MainController.Logger.Default.LogItems.Error($"Error al ejecutar la consulta. {exception.Message}");
                    }
                    // Indica que ha finalizado la tarea y detiene el temporizador
                    StopExecuting();
                }
            }
        }
コード例 #30
0
        private async void OnOpenDetailView(OpenDetailViewEventArgs args)
        {
            if (DetailViewModel != null && DetailViewModel.HasChanges)
            {
                var result = _messageDialogService.ShowOkCancelDialog("You've made changes. Navigate away?", "Question");

                if (result == MessageDialogResult.Cancel)
                {
                    return;
                }
            }
            switch (args.ViewModelName)
            {
            case nameof(FriendDetailViewModel):
                DetailViewModel = _friendDetailViewModelCreator();
                break;
            }

            await DetailViewModel.LoadAsync(args.Id);
        }