public bool InsertDailyEnergyLevel(DailyEnergyLevel energyLevel)
        {
            try
            {
                DateTime now = Controller.GetServerDateTime();
                bool     todayEnergyLevelExist = DailyEnergyLevelRepository.GetAsQueryable <DailyEnergyLevel>().ToList()
                                                 .FirstOrDefault(e => (e.UserId == energyLevel.UserId) && (now.Day == e.Date.Day) &&
                                                                 (now.Month == e.Date.Month) && (now.Year == e.Date.Year)) != null;

                if (todayEnergyLevelExist)
                {
                    return(false);
                }

                GenericError error;
                DailyEnergyLevelRepository.InsertEntity(out error, energyLevel);

                if (error == null)
                {
                    MontlyInfoHandlingTemplate.UpdateEntityRecords(energyLevel);

                    YearlyInfoHandlingTemplate.UpdateEntityRecords(energyLevel);

                    EventsService.UpdateUserDates(energyLevel.UserId, null, Controller.GetServerDateTime());
                }

                return(error == null);
            }
            catch (Exception ex)
            {
                Logger.Controller.LogError(ex);
                ErrorClasses.Controller.GetUnknownError();
                return(false);
            }
        }
예제 #2
0
        public void YearlyEnergyLevelsTest_FirstYearContainingOnlyOneDay()
        {
            var initialTime = new DateTime(2013, 4, 23);

            TestHelper.DropEnergyLevels();

            var  energyLevelInfoService = ObjectFactory.GetInstance <IEnergyLevelInfoService>();
            long userId = GetNewUserId();

            var dailyEnergyLevels = new List <DailyEnergyLevel>();

            int daysBackWard = DateTime.DaysInMonth(2013, 1) + DateTime.DaysInMonth(2013, 2) +
                               DateTime.DaysInMonth(2013, 3) + 23;

            for (int i = -daysBackWard; i <= 0; i = i + 1)
            {
                var energyLevel = new DailyEnergyLevel
                {
                    UserId      = userId,
                    Date        = initialTime.AddDays(i),
                    EnergyLevel = (byte)(-i % 3),
                };

                energyLevelInfoService.InsertDailyEnergyLevel(energyLevel);
                dailyEnergyLevels.Add(energyLevel);
            }

            IList <ServiceModel.EnergyLevel.EnergyLevelInfo> dayLevels =
                energyLevelInfoService.GetEnergyLevelsForTimePeriod((int)userId, initialTime, Constants.YEAR_PERIOD);

            Assert.IsTrue(dayLevels.Count(e => e.Value > 0) == 2);
        }
예제 #3
0
        public void MonthlyEnergyLevelsTest_FirstMonthContainingOnlyOneDay()
        {
            var initialTime = new DateTime(2013, 4, 23);

            TestHelper.DropEnergyLevels();

            var  energyLevelInfoService = ObjectFactory.GetInstance <IEnergyLevelInfoService>();
            long userId = GetNewUserId();

            var dailyEnergyLevels = new List <DailyEnergyLevel>();

            const int daysBackWard = 23;

            for (int i = -daysBackWard; i <= 0; i = i + 1)
            {
                var energyLevel = new DailyEnergyLevel
                {
                    UserId      = userId,
                    Date        = initialTime.AddDays(i),
                    EnergyLevel = 1,
                };

                energyLevelInfoService.InsertDailyEnergyLevel(energyLevel);
                dailyEnergyLevels.Add(energyLevel);
            }

            IList <ServiceModel.EnergyLevel.EnergyLevelInfo> dayLevels =
                energyLevelInfoService.GetEnergyLevelsForTimePeriod((int)userId, initialTime, 2);

            Assert.IsTrue(dayLevels.Count(e => e.Value == 1) == 2);
        }
예제 #4
0
        public void GetLastDaysEnergyLevelTest_OnlyEvenDaysWereFilled()
        {
            TestHelper.DropEnergyLevels();

            var  energyLevelInfoService = ObjectFactory.GetInstance <IEnergyLevelInfoService>();
            long userId = GetNewUserId();

            var dailyEnergyLevels = new List <DailyEnergyLevel>();

            for (int i = -50; i <= 0; i = i + 2)
            {
                var energyLevel = new DailyEnergyLevel
                {
                    UserId      = userId,
                    Date        = DateTime.Now.AddDays(i),
                    EnergyLevel = 1,
                };

                energyLevelInfoService.InsertDailyEnergyLevel(energyLevel);
                dailyEnergyLevels.Add(energyLevel);
            }

            IList <ServiceModel.EnergyLevel.EnergyLevelInfo> dayLevels =
                energyLevelInfoService.GetEnergyLevelsForTimePeriod((int)userId, DateTime.Now, 0);

            Assert.IsTrue(dayLevels.Count(e => e.Value == 1) == 4);
        }
예제 #5
0
        public void YearlyEnergyLevelsTest_ShouldIncludeTheCorrectDataInTimeSpans_ExactlyOneYear()
        {
            var initialTime = new DateTime(2013, 4, 23);

            TestHelper.DropEnergyLevels();

            var energyLevelInfoService = ObjectFactory.GetInstance <IEnergyLevelInfoService>();

            long userId = GetNewUserId();

            var dailyEnergyLevels = new List <DailyEnergyLevel>();

            int daysBackWard =
                DateTime.DaysInMonth(2013, 1) +
                DateTime.DaysInMonth(2013, 2) +
                DateTime.DaysInMonth(2013, 3) + 22;

            for (int i = -daysBackWard; i <= 0; i = i + 1)
            {
                var energyLevel = new DailyEnergyLevel
                {
                    UserId      = userId,
                    Date        = initialTime.AddDays(i),
                    EnergyLevel = (byte)(-i % 3),
                };

                energyLevelInfoService.InsertDailyEnergyLevel(energyLevel);
                dailyEnergyLevels.Add(energyLevel);
            }

            IList <ServiceModel.EnergyLevel.EnergyLevelInfo> dayLevels =
                energyLevelInfoService.GetEnergyLevelsForTimePeriod((int)userId, initialTime, Constants.YEAR_PERIOD);

            Assert.IsTrue(dayLevels.Count(e => e.Value > 0) == 1);
            Assert.IsTrue(Math.Abs(dayLevels[0].Value - dailyEnergyLevels.Average(c => c.EnergyLevel)) < 0.1);
        }
예제 #6
0
 public override ServiceModel.EnergyLevel.EnergyLevelInfo InitializeNewServiceType(DailyEnergyLevel objectInTimeSpan, TimeSpan span)
 {
     return(new ServiceModel.EnergyLevel.EnergyLevelInfo()
     {
         Date = objectInTimeSpan.Date,
         Value = objectInTimeSpan.EnergyLevel,
         DateString = span.GetSpanDate()
     });
 }
예제 #7
0
 public override ServiceModel.EnergyLevel.EnergyLevelInfo InitializeNewServiceType(DailyEnergyLevel answers, TimeSpan span)
 {
     return(new ServiceModel.EnergyLevel.EnergyLevelInfo()
     {
         Value = answers.EnergyLevel,
         DateString = span.GetSpanDate(),
         Date = answers.Date
     });
 }