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);
            }
        }
Exemple #3
0
        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();
            }
        }