private async Task <bool> CreateDatabase()
        {
            DocumentDBContext.Initialize(tbAzureCosmosEndpoint.Text.Trim(), tbAzureKey.Text.Trim());
            bool exists = await DocumentDBContext.DatabaseExistsAsync();

            bool createSucceded = true;

            if (!exists)
            {
                try
                {
                    await DocumentDBContext.CreateDatabaseAsync();
                }
                catch (Exception exc)
                {
                    Logging.Logger.Log(exc);
                    createSucceded = false;
                }
            }

            return(createSucceded);
        }
Example #2
0
        public NavViewModel()
        {
            LockSettingsCommand        = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(this.ExecuteLockSettings);
            SavePasswordCommand        = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(this.ExecuteSavePasswordCommand);
            CancelCommand              = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(this.ExecuteCancelCommand);
            UnlockCommand              = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(this.ExecuteUnlockCommand);
            SaveUnlockCommand          = new GalaSoft.MvvmLight.CommandWpf.RelayCommand(this.ExecuteSaveUnlockCommand);
            Drivers                    = new ObservableCollection <ComboBoxItemViewModel>();
            PasswordModalVisible       = false;
            UnlockPasswordModalVisible = false;



            using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork())
            {
                var setting = dp.SettingsRepository.FindSingle(k => k.Key == TruckClientSettingKeys.ADMIN_PASSWORD);

                if (setting != null && !string.IsNullOrWhiteSpace(setting.Value))
                {
                    SettingsLocked = true;
                }
                else
                {
                    SettingsLocked = false;
                }

                var documentDbSetting   = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DOCUMENT_DB_KEY);
                var syncIntervalSetting = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DATA_SYNC_INTERVAL);
                var endpointSetting     = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DOCUMENTDB_ENDPOINT);

                string key      = "";
                string endpoint = "";

                if (documentDbSetting != null)
                {
                    key = documentDbSetting.Value;
                }

                if (endpointSetting != null)
                {
                    endpoint = endpointSetting.Value;
                }

                if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(endpoint))
                {
                    CloudDBInitialized = false;
                    HasCloudSettings   = false;
                }
                else
                {
                    HasCloudSettings = true;
                    try
                    {
                        Task.Run(async() => {
                            DocumentDBContext.Initialize(endpoint, key);
                            if (!await DocumentDBContext.DatabaseExistsAsync())
                            {
                                CloudDBInitialized = true;
                            }
                        });
                    }
                    catch (Exception exc)
                    {
                        Logging.Logger.Log(exc);
                    }
                }
            }
            Messenger.Default.Register <BusyMessage>(this, (action) => ReceiveBusyMessage(action));
            Messenger.Default.Register <DialogClosedMessage>(this, (action => ReceiveDialogClosed(action)));
            Messenger.Default.Register <DialogOpenedMessage>(this, (action => ReceiveDialogOpened(action)));

            refresh();
            Timer timer = new Timer(25000);

            timer.Elapsed += (sender, e) => refresh();
            timer.Start();
        }
        private async Task InitializeDataSourcesAsync()
        {
            using (IUnitOfWork uow = UnitOfWorkFactory.CreateUnitOfWork())
            {
                BusyMessage.Show("Checking for Azure database.", this);
                var    settingsRepo = uow.SettingsRepository;
                string endpoint     = settingsRepo.FindSingle(t => t.Key == GinAppSettingKeys.AZURE_DOCUMENTDB_ENDPOINT).Value;
                string key          = settingsRepo.FindSingle(t => t.Key == GinAppSettingKeys.AZURE_DOCUMENTDB_KEY).Value;

                if (endpoint.ToLower().IndexOf("azure.com") >= 0 && !string.IsNullOrEmpty(key))
                {
                    DocumentDBContext.Initialize(endpoint, key);
                    bool exists = await DocumentDBContext.DatabaseExistsAsync();

                    bool createSucceded = true;
                    if (!exists)
                    {
                        BusyMessage.UpdateMessage("Creating Azure document database..");
                        try
                        {
                            await DocumentDBContext.CreateDatabaseAsync();
                        }
                        catch (Exception exc)
                        {
                            Logging.Logger.Log(exc);
                            createSucceded = false;
                            BusyMessage.UpdateMessage("Creating Azure document database failed.");
                            System.Threading.Thread.Sleep(2000);
                        }
                    }

                    if (createSucceded)
                    {
                        exists = await DocumentDBContext.CollectionExistsAsync();

                        if (!exists)
                        {
                            try
                            {
                                BusyMessage.UpdateMessage("Creating Azure document database collections..");
                                await DocumentDBContext.CreateCollectionAsync();

                                createSucceded = true;
                            }
                            catch (Exception exc)
                            {
                                BusyMessage.UpdateMessage("Creating Azure document database collections failed.");
                                System.Threading.Thread.Sleep(2000);
                                Logging.Logger.Log(exc);
                                createSucceded = false;
                            }
                        }
                    }

                    if (createSucceded)
                    {
                        try
                        {
                            await DocumentDBContext.CreateStoredProceduresAsync();
                        }
                        catch (Exception exc)
                        {
                            BusyMessage.UpdateMessage("Creating database stored procedures failed.");
                            System.Threading.Thread.Sleep(2000);
                            Logging.Logger.Log(exc);
                            createSucceded = false;
                        }
                    }

                    DbIntitialized = true;
                    BusyMessage.Close();
                }
                else
                {
                    BusyMessage.Close();
                    DbIntitialized = false;
                    appTabs.TabPages.Remove(tabHome);
                    appTabs.TabPages.Remove(tabFields);
                    appTabs.TabPages.Remove(tabModules);
                    appTabs.TabPages.Remove(tabPickupLists);
                    appTabs.TabPages.Remove(tabClients);
                    appTabs.TabPages.Remove(tabFarms);
                    appTabs.TabPages.Remove(tabTrucks);
                    appTabs.TabPages.Remove(tabDrivers);
                    appTabs.TabPages.Remove(tabReports);
                    appTabs.TabIndex = 0;
                    MessageBox.Show("Azure Document DB connection settings are missing or incorrect.  Please update Azure information in the Settings tab then restart the application.");
                }
            }
        }