private double?GoDown(ObjectMeasurement fromMeasurement, ObjectMeasurement to, double value)
        {
            var children = fromMeasurement.ObjectMeasurements;

            //if (children.Any() != true)
            //{
            //    children = Find(from.SingleName).ObjectMeasurements;
            //}
            foreach (var objectMeasurement in children)
            {
                if (objectMeasurement == to)
                {
                    return(value / to.Value);
                }
                else
                {
                    var down = GoDown(objectMeasurement, to, value / objectMeasurement.Value);
                    if (down != null)
                    {
                        return(down);
                    }
                }
            }

            return(null);
        }
        public static ObjectMeasurement NewObjectAction(
            string pluralName,
            string singleName,
            double value,
            string measurementStr,
            string pack,
            IObjectRepository repository)
        {
            var packObj = repository.GetObjectPack(pack);

            if (measurementStr != null && repository.GetObjectMeasurements().All(p => p.SingleName != singleName))
            {
                var measure = repository.GetObjectMeasurement(measurementStr);
                if (measure != null)
                {
                    var newObject = new ObjectMeasurement(singleName, pluralName)
                    {
                        Value = value, ObjectPackId = packObj.Id
                    };
                    measure.Add(newObject);
                    repository.AddObject(newObject);
                    //repository.UpdatePack(pack, newObject);
                    return(newObject);
                }
            }

            return(null);
        }
Example #3
0
        public void AddObject(ObjectMeasurement measurement)
        {
            //if (measurement.ObjectPackId == null)
            //    throw new InvalidOperationException("must have a pack name");

            if (measurement.ParentObjectMeasurementId == null && measurement.Measurement != null)
            {
                measurement.ParentObjectMeasurementId = measurement.Measurement.Id;
            }
            else if (measurement.ParentObjectMeasurementId != null && measurement.Measurement == null)
            {
                measurement.Measurement =
                    measurements.FirstOrDefault(p => p.Id == measurement.ParentObjectMeasurementId);
            }
            if (measurement.ObjectPackId == null && measurement.ObjectPack != null)
            {
                measurement.ObjectPackId = measurement.ObjectPack.Id;
            }
            else if (measurement.ObjectPackId != null && measurement.ObjectPack == null)
            {
                measurement.ObjectPack = packs.FirstOrDefault(p => p.Id == measurement.ObjectPackId);
            }

            var pack = packs.First(p => p.Id == measurement.ObjectPackId);

            if (pack.ObjectMeasurements.Any(p => p.SingleName == measurement.SingleName) != true)
            {
                pack.ObjectMeasurements.Add(measurement);
            }

            measurements.Add(measurement);
            SaveChanges();
        }
Example #4
0
 public ObjectMeasurement NewObject(
     string plural,
     string single,
     double value,
     ObjectMeasurement parent,
     string pack)
 {
     return(ObjectRepositorySeeder.NewObjectAction(plural, single, value, parent.SingleName, pack, this));
 }
 public double Convert(ObjectMeasurement fromMeasurement, ObjectMeasurement to, double valueFrom = 1)
 {
     if (fromMeasurement == null)
     {
         throw new ArgumentNullException("'from' cannot be null");
     }
     if (to == null)
     {
         throw new ArgumentNullException("'to' cannot be null");
     }
     return(Convert(fromMeasurement.PluralName, to.PluralName, valueFrom));
 }
        private void UpdatePack(string pack, ObjectMeasurement newObject)
        {
            var packs = ObjectPacks.FirstOrDefault(p => p.PackName == pack);

            if (packs != null)
            {
                packs.ObjectMeasurements.Add(newObject);
            }
            else
            {
                throw new InvalidOperationException($"package '{pack}' must exist first");
            }
        }
        public void UpdatePack(string pack, ObjectMeasurement newObject)
        {
            var packs = db.ObjectPacks.FirstOrDefault(p => p.PackName == pack);

            if (packs != null)
            {
                if (newObject.Measurement != null)
                {
                    db.Entry(newObject.Measurement).State = EntityState.Modified;
                }
                packs.ObjectMeasurements.Add(newObject);
            }
            else
            {
                throw new InvalidOperationException($"package '{pack}' must exist first");
            }

            Save();
        }
        public ObjectMeasurement NewObject(string pluralName, string singleName, double value, string measurement, string pack = "Custom")
        {
            var measure = Find(measurement);
            var packObj = _repository.GetObjectPack(pack);

            if (measure != null)
            {
                var newObject = new ObjectMeasurement(singleName, pluralName)
                {
                    Value        = value,
                    ObjectPackId = packObj.Id,
                    ParentObjectMeasurementId = measure.Id
                };
                _repository.AddObject(newObject);
                UpdateList();
                return(newObject);
            }

            return(null);
        }
 private double?Calculate(ObjectMeasurement fromMeasurement, ObjectMeasurement to, double value = 1)
 {
     if (fromMeasurement.ParentObjectMeasurementId != null)
     {
         if (fromMeasurement.ParentObjectMeasurementId == to.Id)
         {
             return(fromMeasurement.Value * value);
         }
         else
         {
             var up = Calculate(fromMeasurement.Measurement, to, fromMeasurement.Value * value);
             if (up != null)
             {
                 return(up);
             }
         }
     }
     else
     {
         return(GoDown(fromMeasurement, to, value));
     }
     return(null);
 }
        public static void Startup(IObjectRepository repository)
        {
            repository.ShouldSave = false;
#if BRIDGE
            var objectPacks = new List <ObjectPack>();
#else
            var objectPacks = new ObservableCollection <ObjectPack>();
#endif

            objectPacks.Add(new ObjectPack("Custom", "Objects that are made in the app are placed here.")
            {
                PackImage = "Assets/block.png"
            });
            objectPacks.Add(new ObjectPack(Imperial, "A default package for the US measurement system")
            {
                PackImage = "https://logoeps.com/wp-content/uploads/2013/06/flag-of-usa-vector-logo.png"
            });
            objectPacks.Add(new ObjectPack(Metric, "The metric system.  Used by everyone except the US")
            {
                PackImage = "http://www.knightstemplarorder.org/wp-content/uploads/2016/06/UN-SEAL-Stylized-500-Brown.png"
            });
            objectPacks.Add(new ObjectPack(Space, "Objects and Measurements in space")
            {
                PackImage = "https://sep.yimg.com/ay/skyimage/nasa-space-missions-9.jpg"
            });
            var packs = repository.GetObjectPacks().ToList();
            foreach (var objectPack in objectPacks)
            {
                if (!packs.Select(p => p.PackName).Contains(objectPack.PackName))
                {
                    repository.AddPack(objectPack);
                }
            }

            var centimeter = new ObjectMeasurement("Centimeter", "Centimeters")
            {
                Value = 1
            };
            centimeter.ObjectPack = objectPacks.First(p => p.PackName == Metric);

            //db.SaveChanges();
            if (repository.GetObjectMeasurements().All(p => p.SingleName != centimeter.SingleName))
            {
                repository.AddObject(centimeter);
            }
            //repository.UpdatePack(Imperial, centimeter);
            var inches    = repository.NewObject("Inches", "Inch", 2.54, centimeter, Imperial);
            var feet      = repository.NewObject("Feet", "Foot", 12, inches, Imperial);
            var mile      = repository.NewObject("Miles", "Mile", 5280, feet, Imperial);
            var meter     = repository.NewObject("Meters", "Meter", 100, centimeter, Metric);
            var kiloMeter = repository.NewObject("Kilometers", "Kilometer", 1000, meter, Metric);

            var nanoMeter = repository.NewObject("Nanometers", "Nanometer", 0.0000001, centimeter, Metric);

            var earth     = repository.NewObject("Earths", "Earth", 25000, mile, Space);
            var sun       = repository.NewObject("Suns", "Sun", 103, earth, Space);
            var dist      = repository.NewObject("Distance from Earth to Sun", "Distance from Earth to Sun", 92955807, mile, Space);
            var lightyear = repository.NewObject("Lightyears", "Lightyear", 5878625000000, mile, Space);

            var alpha = repository.NewObject("Distance from Earth to Alpha Centauri", "Distance from Earth to Alpha Centauri", 4.4, lightyear, Space);

            repository.ShouldSave = true;
            var pico = repository.NewObject("Picometers", "Picometer", 0.001, nanoMeter, Metric);
        }
 public void UpdateObject(ObjectMeasurement selectedObject)
 {
     db.ObjectMeasurements.Update(selectedObject);
     Save();
 }
Example #12
0
 public void UpdateObject(ObjectMeasurement selectedObject)
 {
 }
Example #13
0
 public void RemoveObject(ObjectMeasurement measurement)
 {
     measurements.Remove(measurement);
     SaveChanges();
 }
 public void AddObject(ObjectMeasurement measurement)
 {
     db.ObjectMeasurements.Add(measurement);
     Save();
 }
 public ObjectMeasurement NewObject(string pluralName, string singleName,
                                    double value, ObjectMeasurement measurement, string pack = "Custom")
 {
     return(NewObject(pluralName, singleName, value, measurement.PluralName, pack));
 }
 public void RemoveObject(ObjectMeasurement measurement)
 {
     db.ObjectMeasurements.Remove(measurement);
     Save();
 }
 public void UpdateObject(ObjectMeasurement selectedObject)
 {
     _repository.UpdateObject(selectedObject);
 }
 public void DeleteObject(ObjectMeasurement selectedObject)
 {
     _repository.RemoveObject(selectedObject);
     this.UpdateList();
 }