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);
            }
        }
Example #2
0
        /// <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.
     }
 }
Example #5
0
        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; 
            }
        }
Example #6
0
        /// <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;
 }