private async Task CreateCollection()
        {
            var exists = await DocumentDBContext.CollectionExistsAsync();

            if (!exists)
            {
                await DocumentDBContext.CreateCollectionAsync();

                await DocumentDBContext.CreateStoredProceduresAsync();
            }
        }
예제 #2
0
        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.");
                }
            }
        }