/// <summary>
        /// Check to make sure the enviornment is set up correctly before processing the users request
        ///
        /// </summary>
        /// <returns></returns>
        private async Task <bool> CheckRequirements()
        {
            if (_selectedMap == null)
            {
                MessageBox.Show("Select A Map In Domain Appointer Settings");
                return(false);
            }

            if (_selectedLayer == null)
            {
                MessageBox.Show("Select A Layer in Domain Appointer Settings");
                return(false);
            }

            if (_selectedField == null)
            {
                MessageBox.Show("Select a Field in Domain Appointer Settings");
            }

            bool canEditData = false;

            await QueuedTask.Run(() =>
            {
                canEditData = _selectedLayer.CanEditData();
            });

            if (!canEditData)
            {
                MessageBox.Show("Feature Layer '" + _selectedLayer.Name + "' Is not Editable");
                return(false);
            }

            IEnumerable <Field> fields = null;

            await QueuedTask.Run(() =>
            {
                Table table = _selectedLayer.GetTable();
                if (table is FeatureClass)
                {
                    FeatureClass featureclass = table as FeatureClass;
                    using (FeatureClassDefinition def = featureclass.GetDefinition())
                    {
                        fields = def.GetFields();
                    }
                }
            });

            var match = fields.FirstOrDefault(field => field.Name.ToLower().Contains(_selectedField.ToLower()));

            if (match == null)
            {
                MessageBox.Show("The field '" + _selectedField + "' is Missing From '" + _selectedLayer.Name + "' Feature Layer");
                return(false);
            }


            return(true);
        }