public void GetCurrentHIGForUser() { //ARRANGE var timestamp = DateTime.Now; var hv = new HIGEntry { CaptureDate = timestamp, Subject = Orguser.ToSimpleUser(), Value = 1 }; using (var orgSession = OrgStore.OpenSession()) { orgSession.Store(hv); orgSession.SaveChanges(); var helper = new HIGHelper(orgSession); //ACT var t = helper.CurrentHIG(Orguser.Id); //ASSERT Assert.AreEqual(1, t.Value); Assert.AreEqual(Orguser.Id, t.Subject.UserId); Assert.AreEqual(timestamp, t.CaptureDate); } }
/// <summary> /// Get the current HIG for a user /// </summary> /// <param name="userId"></param> /// <returns></returns> public HIGEntry CurrentHIG(string userId) { var currentHIG = _session.Query<HIGEntry>() .Where(u => u.Subject.UserId == userId) .OrderByDescending(e => e.CaptureDate) .FirstOrDefault(); if (currentHIG == null) { var user = _session.Load<User>(userId); currentHIG = new HIGEntry { CaptureDate = DateTime.Now, Value = 0, Subject = user.ToSimpleUser() }; } return currentHIG; }
public void CreateTestHIGs(int numberofHIGs, List<User> users) { using (var orgSession = OrgStore.OpenSession()) { for (int k = 0; k < users.Count; k++) { var HIGs = new List<HIGEntry>(); for (int l = 0; l < numberofHIGs; l++) { var HIG = new HIGEntry(); HIG.CaptureDate = DateTime.Now; string HIGNumber = l.ToString(); HIG.Subject = new SimpleUser(); HIG.Subject.UserId = users[k].Id; HIG.Subject.FullName = users[k].FirstName + " " + users[k].LastName; HIG.LastInDay = true; //HIG.Id = "HIG" + HIGNumber; if (l % 2 == 0) { HIG.Value = 1; } else { HIG.Value = -1; } HIGs.Add(HIG); } foreach (HIGEntry HIG in HIGs) { orgSession.Store(HIG); orgSession.SaveChanges(); } } } }
// do this and then can control number of users, and items per user. public List<string> CreateTestObjects(int i, int j, string type) { var users = GetTestUsers(i); addUsersToOrgStore(users, OrgStore); // TestBase already creates OrgStore, so use that. OrgKey = TestKey using (var orgSession = OrgStore.OpenSession()) { var userIDs = new List<string>(); for (int k = 0; k < users.Count; k++) { userIDs.Add(users[k].Id); switch (type) { case "concern": var concerns = GetTestConcerns(users[k], j); foreach (Concern concern in concerns) { orgSession.Store(concern); orgSession.SaveChanges(); } var check1 = orgSession.Query<Concern>().ToList(); break; case "praise": var praises = GetTestPraises(users[k], j); foreach (Praise praise in praises) { orgSession.Store(praise); orgSession.SaveChanges(); } var check2 = orgSession.Query<Praise>().ToList(); break; case "sickness": var sicknesses = GetTestSicknesses(users[k], j); foreach (Sickness sickness in sicknesses) { orgSession.Store(sickness); orgSession.SaveChanges(); } break; case "HIG": var HIGs = new List<HIGEntry>(); for (int l = 0; l < j; l++) { var HIG = new HIGEntry(); string HIGNumber = l.ToString(); //HIG.Id = "HIG" + HIGNumber; if (l % 2 == 0) { HIG.Value = 1; } else { HIG.Value = -1; } HIGs.Add(HIG); } foreach (HIGEntry HIG in HIGs) { orgSession.Store(HIG); orgSession.SaveChanges(); } break; } } return userIDs; // Ienumerable<string> users is a list of user ids I think. } }
public static HIGEntry Capture(IDocumentStore store, User user, HIGCaptureViewModel model) { using (var orgSession = store.OpenSession()) { var simpleUser = user.ToSimpleUser(); var hv = new HIGEntry { CaptureDate = DateTime.Now, ConsolidatedCompletionDate = DateTime.Now, Subject = simpleUser, Value = model.HIGValue, Message = model.HIGMessage, Id = IlluminateDatabase.GenerateId<HIGEntry>(), LastInDay = true }; if (user.LatestHig != null && user.LatestHig.CaptureDate.Date == DateTime.UtcNow.Date) //same day { //previous hig should be not latest in day. var lasthig = orgSession.Load<HIGEntry>(user.LatestHig.Id); lasthig.LastInDay = false; } //set users latest hig. user.LatestHig = hv; if (hv.Value < 0) { //alert! Alert! var notify = new Notification { About = simpleUser, Body = String.Format( "{0} added a new negative HIG on {1}. Perhaps you should investigate", user.Name, hv.CaptureDate), SendDate = DateTime.Now, Title = string.Format("HIG Alert for {0}", user.Name), From = EmailRecipient.GetIlluminateRecipient(), NotificationRecipients = new[] { new NotificationRecipient { NotificationDeliveryTypes = NotificationDeliveryTypes .Toast | NotificationDeliveryTypes .Email | NotificationDeliveryTypes.Sms , Users = user.Relationships .Where(r => r.RelationshipName == Role.BuiltInRole.LineManager.ToString() ) } }, }; orgSession.Store(notify); } orgSession.Store(user); orgSession.Store(hv); orgSession.SaveChanges(); return hv; } }
/// <summary> /// Get an (ordered) array of recent HIG entries, aggregated to day level /// </summary> /// <param name="userId"></param> /// <param name="days">number of days to go back, not including today. default 7</param> /// <returns></returns> public List<HIGEntry> DailyHIGHistory(string userId, int days = 7) { var ret = new List<HIGEntry>(); if(days<=0) throw new ArgumentException("days must be >0"); var endoftoday = DateTime.Today.AddDays(1); var entries = _session.Query<HIGEntry>() .Where(e => e.Subject.UserId == userId && e.CaptureDate > endoftoday.AddDays(-1*days)) .ToList(); var user = _session.Load<User>(userId); //workk forwards from oldest, getting value for each day. for (var d = days+1; d > 0; d--) //start at days+1 back from end of today { var day = endoftoday.AddDays(-1*d); var range = entries.Where(e => e.CaptureDate >= day && e.CaptureDate < day.AddDays(1)); HIGEntry aggregatedentry; if (range.Any()) { aggregatedentry = Aggregate(range); } else { aggregatedentry = new HIGEntry { CaptureDate = day, Subject = user.ToSimpleUser(), Value = HIGEntry.NoEntryValue }; //no entry for that day } ret.Add(aggregatedentry); } return ret; }
private void CreateTestHigs(IDocumentStore store) { using (var session = store.OpenSession()) { //for user 1 generate higs that should cause inference var startDate = DateTime.Today.AddDays(0 - _typeConfig.PeriodDays).AddDays(1); for (var count = 0; count < _typeConfig.NumberInPeriod + 1; count++) { var hig = new HIGEntry { CaptureDate = startDate, Id = IlluminateDatabase.GenerateId<HIGEntry>(), Value = -1, Subject = _user1.ToSimpleUser() }; session.Store(hig); startDate=startDate.AddDays(1); } startDate = DateTime.Today.AddDays(0 - _typeConfig.PeriodDays).AddDays(1); //for user 2 add too few higs to trigger inference for (var count = 0; count < _typeConfig.NumberInPeriod -1; count++) { var hig = new HIGEntry { CaptureDate = startDate, Id = IlluminateDatabase.GenerateId<HIGEntry>(), Value = -1, Subject = _user2.ToSimpleUser() }; session.Store(hig); startDate=startDate.AddDays(1); } session.SaveChanges(); } }
public List<HIGEntry> GetTestHIGs(Organisation org, int number) { var HIGs = new List<HIGEntry>(); for (int i = 0; i < number; i++) { var HIG = new HIGEntry(); string HIGNumber = i.ToString(); HIG.Id = HIGNumber; HIGs.Add(HIG); } return HIGs; }