public bool ScanCelestial(string celestial)
        {
            StarSystemDocument document = _repository.FindOne(s => s.Celestials.FirstOrDefault(c => c.Name == celestial) != null);

            if (document == null)
            {
                return(false);
            }

            var celestialDocument = document.Celestials.Single(c => c.Name.ToUpper() == celestial.ToUpper());

            if (celestialDocument.Scanned == true)
            {
                // We've already scanned this celestial
                return(false);
            }
            else
            {
                celestialDocument.Scanned = true;
            }

            if (document.Celestials.All(c => c.Scanned))
            {
                document.Scanned = true;
            }

            return(_repository.Update(document));
        }
        private bool UpdateSystem(string system, bool scanned)
        {
            StarSystemDocument document = _repository.FindOne(s => s.Name.ToUpper() == system.ToUpper());

            if (document == null)
            {
                return(false);
            }

            document.Celestials.ForEach(c => c.Scanned = scanned);
            document.Scanned = scanned;

            return(_repository.Update(document));
        }
        public bool ScanCelestial(string celestial)
        {
            StarSystemDocument document = _repository.FindOne(s => s.Celestials.FirstOrDefault(c => c.Name == celestial) != null);

            if (document == null)
            {
                return(false);
            }

            document.Celestials.Single(c => c.Name.ToUpper() == celestial.ToUpper()).Scanned = true;

            if (document.Celestials.All(c => c.Scanned))
            {
                document.Scanned = true;
            }

            return(_repository.Update(document));
        }
        public bool ScanCelestialSurface(string celestial, bool efficient)
        {
            StarSystemDocument document = _repository.FindOne(s => s.Celestials.FirstOrDefault(c => c.Name == celestial) != null);

            if (document == null)
            {
                return(false);
            }

            var cDoc = document.Celestials.Single(c => c.Name.ToUpper() == celestial.ToUpper());

            cDoc.SurfaceScanned = true;
            cDoc.Efficient      = efficient;

            if (document.Celestials.All(c => c.SurfaceScanned))
            {
                document.SurfaceScanned = true;
            }

            return(_repository.Update(document));
        }