private static void TagOfficeJob([NotNull] TimeLimitEntry timeLimitEntry, [NotNull] HouseholdTrait newTrait) { var livingTags = newTrait.Tags.Where(x => x.Tag.Name.Contains("Living Pattern / Office Job")).ToList(); if (livingTags.Count != 1) { throw new LPGException("More than one living pattern"); } newTrait.DeleteHHTTag(livingTags[0]); if (timeLimitEntry.Tag == null) { throw new LPGException("Tag was null"); } newTrait.AddTag(timeLimitEntry.Tag); }
private static void TagAlarms([NotNull] Simulator sim, [NotNull] TimeLimitEntry timeLimitEntry, [NotNull] HouseholdTrait newTrait) { var livingTags = newTrait.Tags.Where(x => x.Tag.Name.Contains("Living Pattern")).ToList(); foreach (HHTTag livingTag in livingTags) { newTrait.DeleteHHTTag(livingTag); } TimeSpan endTime = timeLimitEntry.BeginTime; List <TraitTag> tags = new List <TraitTag> { GetTraitTagByName(sim, "Living Pattern / Part Time Job"), GetTraitTagByName(sim, "Living Pattern / Retiree"), GetTraitTagByName(sim, "Living Pattern / Stay at Home / Regular"), GetTraitTagByName(sim, "Living Pattern / Two Shift Work"), GetTraitTagByName(sim, "Living Pattern / University / Student Independent"), GetTraitTagByName(sim, "Living Pattern / University / Student Living at Home") }; if (endTime.Hours <= 7) { tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Early (5-7am)")); tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Medium (7-9am)")); tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Late (9-11am)")); } else if (endTime.Hours <= 8) { tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Medium (7-9am)")); tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Late (9-11am)")); } else { tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Late (9-11am)")); } foreach (TraitTag tag in tags) { if (tag == null) { throw new LPGException("Tag not found"); } newTrait.AddTag(tag); } }
public void HouseholdTraitTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { db.ClearTable(HouseholdTrait.TableName); db.ClearTable(HHTAutonomousDevice.TableName); db.ClearTable(HHTDesire.TableName); db.ClearTable(HHTLocation.TableName); db.ClearTable(HHTAffordance.TableName); db.ClearTable(HHTTag.TableName); var timeBasedProfiles = db.LoadTimeBasedProfiles(); var dateBasedProfiles = db.LoadDateBasedProfiles(); var devices = db.LoadRealDevices(out ObservableCollection <DeviceCategory> deviceCategories, out _, out ObservableCollection <VLoadType> loadTypes, timeBasedProfiles); var timeLimits = db.LoadTimeLimits(dateBasedProfiles); var desires = db.LoadDesires(); var deviceActionGroups = db.LoadDeviceActionGroups(); var deviceActions = db.LoadDeviceActions(timeBasedProfiles, devices, loadTypes, deviceActionGroups); var locations = db.LoadLocations(devices, deviceCategories, loadTypes); var variables = db.LoadVariables(); var affordances = db.LoadAffordances(timeBasedProfiles, out _, deviceCategories, devices, desires, loadTypes, timeLimits, deviceActions, deviceActionGroups, locations, variables); var hht = new HouseholdTrait("blub", null, "blub", db.ConnectionString, "none", 1, 100, 10, 1, 1, TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid()); hht.SaveToDB(); var hht2 = new HouseholdTrait("blub2", null, "blub2", db.ConnectionString, "none", 1, 100, 10, 1, 1, TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid()); hht2.SaveToDB(); var loc = new Location("loc1", -1, db.ConnectionString, Guid.NewGuid().ToStrGuid()); hht.AddAutomousDevice(devices[0], timeBasedProfiles[0], 0, loadTypes[0], timeLimits[0], loc, 0, VariableCondition.Equal, variables[0]); var hhtl = hht.AddLocation(locations[0]); hht.SaveToDB(); var tag = new TraitTag("tag", db.ConnectionString, TraitLimitType.NoLimit, TraitPriority.Mandatory, Guid.NewGuid().ToStrGuid()); tag.SaveToDB(); hht.AddTag(tag); hht.AddAffordanceToLocation(hhtl, affordances[0], timeLimits[0], 100, 0, 0, 0, 0); hht.SaveToDB(); hht.AddDesire(desires[0], 1, "Healthy", 1, 1, 0, 100, PermittedGender.All); hht.SaveToDB(); hht.AddTrait(hht2); hht.SaveToDB(); (hht.SubTraits.Count).Should().Be(1); var hhts = new ObservableCollection <HouseholdTrait>(); var tags = db.LoadTraitTags(); HouseholdTrait.LoadFromDatabase(hhts, db.ConnectionString, locations, affordances, devices, deviceCategories, timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions, deviceActionGroups, tags, false, variables); (hhts.Count).Should().Be(2); var hht3 = hhts[0]; (hht3.MinimumPersonsInCHH).Should().Be(1); (hht3.MaximumPersonsInCHH).Should().Be(100); (hht3.Desires.Count).Should().Be(1); (hht3.SubTraits.Count).Should().Be(1); (hht3.Classification).Should().Be("none"); (hht3.Tags.Count).Should().Be(1); (hht3.Tags[0].Tag.Name).Should().Be("tag"); foreach (var trait in hhts) { trait.DeleteFromDB(); } hhts.Clear(); Logger.Info("Loading again..."); HouseholdTrait.LoadFromDatabase(hhts, db.ConnectionString, locations, affordances, devices, deviceCategories, timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions, deviceActionGroups, tags, false, variables); (hhts.Count).Should().Be(0); db.Cleanup(); } }