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); }
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(); }
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(); }
public void UpdateObject(ObjectMeasurement selectedObject) { }
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(); }