public void OnBeforeUpdateTest()
        {
            var target = FoodGroupEN.GetService("");
            var p      = new FoodGroup_GetUnsavedFoodGroupSP
            {
                FoodServingTimeTypeID = (int)EntityEnums.FoodServingTimeTypeEnum.Other,
                UserID = TestEnums.User.constPatientUserID
            };
            var obj = target.GetUnsavedFoodGroup(p);

            // clearing previous results
            var dp = new DailyActivity_GetByTypeAndExternalEntityAndUserSP()
            {
                UserID = TestEnums.User.constPatientUserID,
                DailyActivityTypeID = (int)EntityEnums.DailyActivityTypeEnum.Eating,
                ExternalEntityID    = obj.FoodGroupID
            };
            var list = DailyActivityEN.GetService().GetByTypeAndExternalEntityAndUser(dp);

            if (list.Count > 0)
            {
                DailyActivityEN.GetService().Delete(list[0], null);
            }


            // test update
            obj.RecordDateTimeUserLocal = DateTime.Now;

            //var foodgroupitem1 = new FoodGroupItem
            //{
            //    FoodGroupID = obj.FoodGroupID,
            //    Calorie = 0,
            //    Carb = 0,
            //    Protein = 0,
            //    Fat = 0,
            //    FoodID = new Guid("176B0637-65E9-409E-829C-0001D06B5626"),
            //    FoodServingTypeID = 0,
            //    ServingAmount = 100,
            //    ServingGrams = 50
            //};
            //FoodGroupItemEN.GetService().Insert(foodgroupitem1, null);

            target.Update(obj, null);

            // check if daily activity is created successfully
            list = DailyActivityEN.GetService().GetByTypeAndExternalEntityAndUser(dp);
            Assert.IsTrue(obj.IsGroupSaved == true, "group should be saved after update");
            Assert.IsTrue(list.Count == 1, "DailyActivity has not been created after update");
        }
示例#2
0
        /// <summary>
        /// Updates DailyActivitySum by FoodGroup information
        /// </summary>
        /// <param name="f">FoodGroup information</param>
        public static void UpdateDailyActivitySums(FoodGroup f)
        {
            if (f.IsGroupSaved)
            {
                var foodgroupSumService = FoodGroupSumEN.GetService();
                var filter  = new FilterExpression(vFoodGroupSum.ColumnNames.FoodGroupID, f.FoodGroupID);
                var sumList = foodgroupSumService.GetByFilterV(new GetByFilterParameters(filter));
                if (sumList.Count > 0)
                {
                    var dailyActivityService = DailyActivityEN.GetService();

                    var list =
                        dailyActivityService.GetByTypeAndExternalEntityAndUser(new DailyActivity_GetByTypeAndExternalEntityAndUserSP
                    {
                        UserID              = f.UserID,
                        ExternalEntityID    = f.FoodGroupID,
                        DailyActivityTypeID = (int)EntityEnums.DailyActivityTypeEnum.Eating
                    });

                    var activity = list[0];

                    if (sumList[0].CalorieSum.HasValue)
                    {
                        activity.Calorie = sumList[0].CalorieSum.Value;
                    }
                    if (sumList[0].CarbSum.HasValue)
                    {
                        activity.Carb = sumList[0].CarbSum.Value;
                    }
                    if (sumList[0].ProteinSum.HasValue)
                    {
                        activity.Protein = sumList[0].ProteinSum.Value;
                    }
                    if (sumList[0].FatSum.HasValue)
                    {
                        activity.Fat = sumList[0].FatSum.Value;
                    }

                    dailyActivityService.Update(activity, null);
                }
            }
        }
示例#3
0
        protected override bool onBeforeUpdate(object entitySet, UpdateParameters parameters)
        {
            var dailyActivityService = DailyActivityEN.GetService();
            var f    = (FoodGroup)entitySet;
            var list = dailyActivityService.GetByTypeAndExternalEntityAndUser(new DailyActivity_GetByTypeAndExternalEntityAndUserSP()
            {
                UserID              = f.UserID,
                ExternalEntityID    = f.FoodGroupID,
                DailyActivityTypeID = (int)EntityEnums.DailyActivityTypeEnum.Eating
            });

            f.IsGroupSaved = true;

            if (list.Count == 0) // if we didn't have a saved daily activity just add it, computation will be done later
            {
                var obj = new DailyActivity
                {
                    DailyActivityID         = Guid.NewGuid(),
                    DurationSeconds         = 15 * 60,
                    ExternalEntityID        = f.FoodGroupID,
                    DailyActivityTypeID     = (int)EntityEnums.DailyActivityTypeEnum.Eating,
                    IsManualEntry           = true,
                    RecordDateTimeUserLocal = f.RecordDateTimeUserLocal,
                    UserID = f.UserID
                };

                parameters.DetailEntityObjects.Add(new DetailObjectInfo()
                {
                    EntityName = vDailyActivity.EntityName,
                    EntitySet  = obj,
                    FnName     = RuleFunctionSEnum.Insert
                });
            }

            return(true); //do update
        }
        public void OnAfterUpdateTest()
        {
            var target = FoodGroupEN.GetService("");
            var p      = new FoodGroup_GetUnsavedFoodGroupSP
            {
                FoodServingTimeTypeID = (int)EntityEnums.FoodServingTimeTypeEnum.Other,
                UserID = TestEnums.User.constPatientUserID
            };
            var obj = target.GetUnsavedFoodGroup(p);


            var foodgroupitem1 = new FoodGroupItem {
                FoodGroupID       = obj.FoodGroupID,
                Calorie           = 100,
                Carb              = 200,
                Protein           = 300,
                Fat               = 400,
                FoodID            = new Guid("176B0637-65E9-409E-829C-0001D06B5626"),
                FoodServingTypeID = 0,
                ServingAmount     = 100,
                ServingGrams      = 50
            };

            var foodgroupitem2 = new FoodGroupItem
            {
                FoodGroupID       = obj.FoodGroupID,
                Calorie           = 100,
                Carb              = 200,
                Protein           = 300,
                Fat               = 400,
                FoodID            = new Guid("176B0637-65E9-409E-829C-0001D06B5626"),
                FoodServingTypeID = 0,
                ServingAmount     = 100,
                ServingGrams      = 50
            };

            FoodGroupItemEN.GetService().Insert(foodgroupitem1, null);
            FoodGroupItemEN.GetService().Insert(foodgroupitem2, null);

            // updating foodgroup to save information in the database
            obj.RecordDateTimeUserLocal = DateTime.Now;
            target.Update(obj, null);

            // Checking sum values be updated in Daily Activity entity
            var dp = new DailyActivity_GetByTypeAndExternalEntityAndUserSP()
            {
                UserID = TestEnums.User.constPatientUserID,
                DailyActivityTypeID = (int)EntityEnums.DailyActivityTypeEnum.Eating,
                ExternalEntityID    = obj.FoodGroupID
            };
            var list = DailyActivityEN.GetService().GetByTypeAndExternalEntityAndUser(dp);

            Assert.IsTrue(list.Count > 0, "Daily Activity should exists.");
            var dailyActivity = list[0];

            Assert.AreEqual(dailyActivity.Carb, foodgroupitem1.Carb + foodgroupitem2.Carb);
            Assert.AreEqual(dailyActivity.Protein, foodgroupitem1.Protein + foodgroupitem2.Protein);
            Assert.AreEqual(dailyActivity.Fat, foodgroupitem1.Fat + foodgroupitem2.Fat);
            Assert.AreEqual(dailyActivity.Calorie, foodgroupitem1.Calorie + foodgroupitem2.Calorie);

            // Note: This part is another test case, but I put it here to avoid writing the whole test again
            // Check updates of a FoodGroupItem to propagate to daily activity
            foodgroupitem1.Calorie = foodgroupitem1.Calorie * 2;
            foodgroupitem1.Fat     = foodgroupitem1.Fat * 2;
            foodgroupitem1.Protein = foodgroupitem1.Protein * 2;
            foodgroupitem1.Carb    = foodgroupitem1.Carb * 2;
            FoodGroupItemEN.GetService().Update(foodgroupitem1, null);


            list = DailyActivityEN.GetService().GetByTypeAndExternalEntityAndUser(dp);
            Assert.IsTrue(list.Count > 0, "Daily Activity should exists.");
            dailyActivity = list[0];
            Assert.AreEqual(dailyActivity.Carb, foodgroupitem1.Carb + foodgroupitem2.Carb);
            Assert.AreEqual(dailyActivity.Protein, foodgroupitem1.Protein + foodgroupitem2.Protein);
            Assert.AreEqual(dailyActivity.Fat, foodgroupitem1.Fat + foodgroupitem2.Fat);
            Assert.AreEqual(dailyActivity.Calorie, foodgroupitem1.Calorie + foodgroupitem2.Calorie);
        }