Exemplo n.º 1
0
        public ParametersViewModel(
            Interfaces.ISettingsManager settingsManager,
            Services.IInteractionService interactionService,
            Services.IDispatcherService dispatcherService,
            Interfaces.IGoogleManager googleManager,
            IEventAggregator eventAggregator)
        {
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            if (interactionService == null)
            {
                throw new ArgumentNullException("InteractionService");
            }

            if (dispatcherService == null)
            {
                throw new ArgumentNullException("dispatcherService");
            }

            if (eventAggregator == null)
            {
                throw new ArgumentNullException("EventAggregator");
            }

            if (googleManager == null)
            {
                throw new ArgumentNullException("googleManager");
            }

            this.settingsManager    = settingsManager;
            this.interactionService = interactionService;
            this.dispatcherService  = dispatcherService;
            this.eventAggregator    = eventAggregator;
            this.googleManager      = googleManager;

            this.Calendars = new ObservableCollection <Entity.Calendar>();

            this.SelectCollectionneurDbPathCommand = new DelegateCommand(new Action(() =>
            {
                this.SelectCollectionneurDbPath();
            }));

            this.SaveCommand = new DelegateCommand(
                new Action(this.Save),
                new Func <bool>(() => this.CanSave));

            this.IsGmailAccountAlreadyConfigured = this.googleManager.IsAccountAlreadyConfigured();

            this.currentSettings             = this.settingsManager.LoadSettings();
            this.DaysToSyncBefore            = this.currentSettings.DaysToSyncBefore;
            this.DaysToSyncAfter             = this.currentSettings.DaysToSyncAfter;
            this.collectionneurRecetteDbPath = this.currentSettings.CollectionneurDabasePath;
        }
        public ParametersViewModel(
            Interfaces.ISettingsManager settingsManager,
            Services.IInteractionService interactionService,
            Services.IDispatcherService dispatcherService,
            Interfaces.IGoogleManager googleManager,
            IEventAggregator eventAggregator)
        {
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            if (interactionService == null)
            {
                throw new ArgumentNullException("InteractionService");
            }

            if (dispatcherService == null)
            {
                throw new ArgumentNullException("dispatcherService");
            }

            if (eventAggregator == null)
            {
                throw new ArgumentNullException("EventAggregator");
            }

            if (googleManager == null)
            {
                throw new ArgumentNullException("googleManager");
            }

            this.settingsManager = settingsManager;
            this.interactionService = interactionService;
            this.dispatcherService = dispatcherService;
            this.eventAggregator = eventAggregator;
            this.googleManager = googleManager;

            this.Calendars = new ObservableCollection<Entity.Calendar>();

            this.SelectCollectionneurDbPathCommand = new DelegateCommand(new Action(() =>
            {
                this.SelectCollectionneurDbPath();
            }));

            this.SaveCommand = new DelegateCommand(
                new Action(this.Save),
                new Func<bool>(() => this.CanSave));

            this.IsGmailAccountAlreadyConfigured = this.googleManager.IsAccountAlreadyConfigured();

            this.currentSettings = this.settingsManager.LoadSettings();
            this.DaysToSyncBefore = this.currentSettings.DaysToSyncBefore;
            this.DaysToSyncAfter = this.currentSettings.DaysToSyncAfter;
            this.collectionneurRecetteDbPath = this.currentSettings.CollectionneurDabasePath;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CollectorReceiptManager" /> class.
        /// </summary>
        /// <param name="receiptRepository">The receipt repository.</param>
        /// <param name="processRepository">The process repository.</param>
        /// <param name="settingsManager">The settings manager.</param>
        /// <param name="networkHelper">The network helper.</param>
        /// <param name="logger">The logger.</param>
        /// <exception cref="System.ArgumentNullException">settingsManager
        /// or
        /// receiptRepository
        /// or
        /// processRepository
        /// or
        /// networkHelper
        /// or
        /// logger</exception>
        public CollectorReceiptManager(
            Interfaces.ICollectorReceiptRepository receiptRepository,
            Interfaces.IProcessRepository processRepository,
            Interfaces.ISettingsManager settingsManager,
            Interfaces.INetworkHelper networkHelper,
            ILoggerService logger)
        {
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            if (receiptRepository == null)
            {
                throw new ArgumentNullException("receiptRepository");
            }

            if (processRepository == null)
            {
                throw new ArgumentNullException("processRepository");
            }

            if (networkHelper == null)
            {
                throw new ArgumentNullException("networkHelper");
            }

            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            this.receiptRepository = receiptRepository;
            this.processRepository = processRepository;
            this.settingsManager   = settingsManager;
            this.settings          = this.settingsManager.LoadSettings();
            this.networkHelper     = networkHelper;
            this.logger            = logger;

            this.databaseConnectionString = "jdbc:h2:" + this.settings.CollectionneurDabasePath.Replace(".h2.db", string.Empty);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CollectorReceiptManager" /> class.
        /// </summary>
        /// <param name="receiptRepository">The receipt repository.</param>
        /// <param name="processRepository">The process repository.</param>
        /// <param name="settingsManager">The settings manager.</param>
        /// <param name="networkHelper">The network helper.</param>
        /// <param name="logger">The logger.</param>
        /// <exception cref="System.ArgumentNullException">settingsManager
        /// or
        /// receiptRepository
        /// or
        /// processRepository
        /// or
        /// networkHelper
        /// or
        /// logger</exception>
        public CollectorReceiptManager(
            Interfaces.ICollectorReceiptRepository receiptRepository, 
            Interfaces.IProcessRepository processRepository,
            Interfaces.ISettingsManager settingsManager,
            Interfaces.INetworkHelper networkHelper,
            ILoggerService logger)
        {
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            if (receiptRepository == null)
            {
                throw new ArgumentNullException("receiptRepository");
            }

            if (processRepository == null)
            {
                throw new ArgumentNullException("processRepository");
            }

            if (networkHelper == null)
            {
                throw new ArgumentNullException("networkHelper");
            }

            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            this.receiptRepository = receiptRepository;
            this.processRepository = processRepository;
            this.settingsManager = settingsManager;
            this.settings = this.settingsManager.LoadSettings();
            this.networkHelper = networkHelper;
            this.logger = logger;

            this.databaseConnectionString = "jdbc:h2:" + this.settings.CollectionneurDabasePath.Replace(".h2.db", string.Empty);
        }
        public MainWindowViewModel(
            CrossCutting.ILoggerService logger,
            Interfaces.ICollectorReceiptManager collectorReceiptManager,
            Interfaces.ISettingsManager settingsManager,
            Interfaces.IGoogleManager googleManager,
            Services.IDispatcherService dispatcherService,
            IEventAggregator eventAggregator)
        {
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            if (dispatcherService == null)
            {
                throw new ArgumentNullException("dispatcherService");
            }

            if (collectorReceiptManager == null)
            {
                throw new ArgumentNullException("collectorReceiptManager");
            }

            if (eventAggregator == null)
            {
                throw new ArgumentNullException("eventAggregator");
            }

            if (googleManager == null)
            {
                throw new ArgumentNullException("googleManager");
            }

            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            this.exitCommand = new DelegateCommand(new Action(() =>
            {
                System.Windows.Application.Current.Shutdown();
            }));

            this.showParametersCommand = new DelegateCommand(new Action(() =>
            {
                var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>();
                regionManager.RequestNavigate("AppBarRegion", new Uri("AppBarParametersView", UriKind.Relative));
                regionManager.RequestNavigate("MainRegion", new Uri("ParametersView", UriKind.Relative));
                this.eventAggregator.GetEvent<Events.ActivateWindowEvent>().Publish(null);
            }));

            this.SyncMenuCommand = new DelegateCommand(() =>
            {
                var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>();
                //regionManager.RequestNavigate("AppBarRegion", new Uri("AppBarParametersView", UriKind.Relative));
                regionManager.RequestNavigate("MainRegion", new Uri("SyncMenuView", UriKind.Relative));
                this.eventAggregator.GetEvent<Events.ActivateWindowEvent>().Publish(null);
                this.eventAggregator.GetEvent<Events.StartSyncEvent>().Publish(null);
            });

            this.ShowAboutCommand = new DelegateCommand(() =>
            {
                var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>();
                regionManager.RequestNavigate("MainRegion", new Uri("AboutView", UriKind.Relative));
                this.eventAggregator.GetEvent<Events.ActivateWindowEvent>().Publish(null);
            });

            this.logger = logger;
            this.eventAggregator = eventAggregator;
            this.collectorReceiptManager = collectorReceiptManager;
            this.googleManager = googleManager;
            this.settingsManager = settingsManager;
            this.dispatcherService = dispatcherService;

            this.LoadCommand = new DelegateCommand(() =>
            {
                if (string.IsNullOrEmpty(this.settingsManager.LoadSettings().CollectionneurDabasePath))
                {
                    this.logger.LogInformation("Application settings not set, show parameters window");
                    this.dispatcherService.Invoke(() =>
                    {
                        this.ShowParametersCommand.Execute();
                    });
                }

                this.checkAppRunningTimer = new Timer((state) =>
                {
                    if (this.collectorReceiptManager.CanSync() == Entity.CanNotSyncReason.None)
                    {
                        if (this.collectorReceiptManager.IsCollectorReceiptAppRunning())
                        {
                            if (!this.isAppCollectorAlreadyRunning)
                            {
                                // the app is not running before, so show notification
                                this.eventAggregator.GetEvent<Events.DisplayNotificationMessageEvent>().Publish("Application collectionneur de recettes détectées, en attente de fermeture pour synchronisation");
                                this.isAppCollectorAlreadyRunning = true;
                            }
                        }
                        else
                        {
                            if (this.isAppCollectorAlreadyRunning)
                            {
                                // the app was running, so launch sync
                                // TODO: launch sync
                                var regionManager = ServiceLocator.Current.GetInstance<Prism.Regions.IRegionManager>();
                                regionManager.RequestNavigate("MainRegion", new Uri("SyncMenuView", UriKind.Relative));
                                this.eventAggregator.GetEvent<Events.StartSyncEvent>().Publish(null);
                                this.eventAggregator.GetEvent<Events.DisplayNotificationMessageEvent>().Publish("Application collectionneur de recettes fermée, début de la synchronisation");
                                this.isAppCollectorAlreadyRunning = false;
                            }
                        }
                    }

                    this.checkAppRunningTimer.Change(2000, Timeout.Infinite);
                },
                null,
                1000,
                Timeout.Infinite);

                this.dispatcherService.Invoke(() =>
                {
                    if (!this.googleManager.SecretFileExists())
                    {
                        this.logger.LogWarning("Google json secret file doesn't exists, application will close");
                        this.eventAggregator.GetEvent<Events.DisplayErrorMessageEvent>().Publish(new Events.DisplayErrorMessageEventArgs()
                        {
                            Message = "Veuillez créer votre fichier client_secrets.json, placez le dans " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\CollectionneurRecettes.Addon\n et redémarrez l'application",
                            CloseApplication = true
                        });
                    }
                });
            });
        }
Exemplo n.º 6
0
        public MainWindowViewModel(
            CrossCutting.ILoggerService logger,
            Interfaces.ICollectorReceiptManager collectorReceiptManager,
            Interfaces.ISettingsManager settingsManager,
            Interfaces.IGoogleManager googleManager,
            Services.IDispatcherService dispatcherService,
            IEventAggregator eventAggregator)
        {
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            if (dispatcherService == null)
            {
                throw new ArgumentNullException("dispatcherService");
            }

            if (collectorReceiptManager == null)
            {
                throw new ArgumentNullException("collectorReceiptManager");
            }

            if (eventAggregator == null)
            {
                throw new ArgumentNullException("eventAggregator");
            }

            if (googleManager == null)
            {
                throw new ArgumentNullException("googleManager");
            }

            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            this.exitCommand = new DelegateCommand(new Action(() =>
            {
                System.Windows.Application.Current.Shutdown();
            }));

            this.showParametersCommand = new DelegateCommand(new Action(() =>
            {
                var regionManager = ServiceLocator.Current.GetInstance <Prism.Regions.IRegionManager>();
                regionManager.RequestNavigate("AppBarRegion", new Uri("AppBarParametersView", UriKind.Relative));
                regionManager.RequestNavigate("MainRegion", new Uri("ParametersView", UriKind.Relative));
                this.eventAggregator.GetEvent <Events.ActivateWindowEvent>().Publish(null);
            }));

            this.SyncMenuCommand = new DelegateCommand(() =>
            {
                var regionManager = ServiceLocator.Current.GetInstance <Prism.Regions.IRegionManager>();
                //regionManager.RequestNavigate("AppBarRegion", new Uri("AppBarParametersView", UriKind.Relative));
                regionManager.RequestNavigate("MainRegion", new Uri("SyncMenuView", UriKind.Relative));
                this.eventAggregator.GetEvent <Events.ActivateWindowEvent>().Publish(null);
                this.eventAggregator.GetEvent <Events.StartSyncEvent>().Publish(null);
            });

            this.ShowAboutCommand = new DelegateCommand(() =>
            {
                var regionManager = ServiceLocator.Current.GetInstance <Prism.Regions.IRegionManager>();
                regionManager.RequestNavigate("MainRegion", new Uri("AboutView", UriKind.Relative));
                this.eventAggregator.GetEvent <Events.ActivateWindowEvent>().Publish(null);
            });

            this.logger                  = logger;
            this.eventAggregator         = eventAggregator;
            this.collectorReceiptManager = collectorReceiptManager;
            this.googleManager           = googleManager;
            this.settingsManager         = settingsManager;
            this.dispatcherService       = dispatcherService;

            this.LoadCommand = new DelegateCommand(() =>
            {
                if (string.IsNullOrEmpty(this.settingsManager.LoadSettings().CollectionneurDabasePath))
                {
                    this.logger.LogInformation("Application settings not set, show parameters window");
                    this.dispatcherService.Invoke(() =>
                    {
                        this.ShowParametersCommand.Execute();
                    });
                }

                this.checkAppRunningTimer = new Timer((state) =>
                {
                    if (this.collectorReceiptManager.CanSync() == Entity.CanNotSyncReason.None)
                    {
                        if (this.collectorReceiptManager.IsCollectorReceiptAppRunning())
                        {
                            if (!this.isAppCollectorAlreadyRunning)
                            {
                                // the app is not running before, so show notification
                                this.eventAggregator.GetEvent <Events.DisplayNotificationMessageEvent>().Publish("Application collectionneur de recettes détectées, en attente de fermeture pour synchronisation");
                                this.isAppCollectorAlreadyRunning = true;
                            }
                        }
                        else
                        {
                            if (this.isAppCollectorAlreadyRunning)
                            {
                                // the app was running, so launch sync
                                // TODO: launch sync
                                var regionManager = ServiceLocator.Current.GetInstance <Prism.Regions.IRegionManager>();
                                regionManager.RequestNavigate("MainRegion", new Uri("SyncMenuView", UriKind.Relative));
                                this.eventAggregator.GetEvent <Events.StartSyncEvent>().Publish(null);
                                this.eventAggregator.GetEvent <Events.DisplayNotificationMessageEvent>().Publish("Application collectionneur de recettes fermée, début de la synchronisation");
                                this.isAppCollectorAlreadyRunning = false;
                            }
                        }
                    }

                    this.checkAppRunningTimer.Change(2000, Timeout.Infinite);
                },
                                                      null,
                                                      1000,
                                                      Timeout.Infinite);

                this.dispatcherService.Invoke(() =>
                {
                    if (!this.googleManager.SecretFileExists())
                    {
                        this.logger.LogWarning("Google json secret file doesn't exists, application will close");
                        this.eventAggregator.GetEvent <Events.DisplayErrorMessageEvent>().Publish(new Events.DisplayErrorMessageEventArgs()
                        {
                            Message          = "Veuillez créer votre fichier client_secrets.json, placez le dans " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\CollectionneurRecettes.Addon\n et redémarrez l'application",
                            CloseApplication = true
                        });
                    }
                });
            });
        }