예제 #1
0
        public void Register(RegisterView registerUser)
        {
            User     newUser = Mapper.Map <User>(registerUser);
            DateTime today   = DateTime.Today;
            int      age     = today.Year - newUser.Birth.Year;

            if (newUser.Birth > today.AddYears(-age))
            {
                age--;
            }
            Double BMI = newUser.Weight / ((newUser.Height / 100) * (newUser.Height / 100));

            //HashPassword
            newUser.Password = _userservice.HashPassword(newUser.Password);
            newUser.Age      = age;
            if (newUser.Sex == "男")
            {
                newUser.BMR     = newUser.Weight * 13.7 + newUser.Height * 5.0 - (6.8 * age) + 66;
                newUser.Bodyfat = (1.2 * BMI) + (0.23 * age) - 5.4 - (10.8 * 1);
            }
            else if (newUser.Sex == "女")
            {
                newUser.BMR     = newUser.Weight * 9.6 + newUser.Height * 1.8 - (4.7 * age) + 655;
                newUser.Bodyfat = (1.2 * BMI) + (0.23 * age) - 5.4 - (10.8 * 0);
            }
            UserHabit newHabit = Mapper.Map <UserHabit>(registerUser);

            _repository.Create(newUser);
            newHabit.CreateTime = DateTime.Now;
            _userHabitrepository.Create(newHabit);
            _db.Save();
            //_userservice.Register(newUser, null, null, null, 0, newHabit);, fileName, type, path, size, newHabit);
        }
예제 #2
0
        public RegisterView getHabit([FromBody] PostId data)
        {
            UserHabit    userHabit = _userservice.GetUserHabit(data.account);
            RegisterView nowUser   = Mapper.Map <RegisterView>(userHabit);

            return(nowUser);
        }
예제 #3
0
        public ActionResult CollectionHabit(string PayCompanyCode, string City, string BillType, string TradeType)
        {
            if (string.IsNullOrEmpty(PayCompanyCode) && string.IsNullOrEmpty(City) && string.IsNullOrEmpty(BillType) && string.IsNullOrEmpty(TradeType))
            {
                return(this.FailedMsg("无可保存值"));
            }

            UserHabit Habit = new UserHabit();

            Habit.PayCompanyCode = PayCompanyCode;
            Habit.City           = City;
            Habit.BillType       = BillType;
            Habit.TradeType      = TradeType;

            IGetFeeData _IGetFeeData = new GetFeeData();
            int         result       = _IGetFeeData.EidtUserHabit(this.CurrentSession.UserName, JsonHelper.Serialize(Habit));

            if (result > 0)
            {
                return(this.SuccessMsg("收藏成功"));
            }
            else
            {
                return(this.FailedMsg("收藏失败"));
            }
        }
예제 #4
0
        //public async Task<IActionResult> Edit(int id, UserHabit userHabit)
        //public async Task<IActionResult> Edit(int id, [Bind("Id, Name, Description, Frequency")] Habit habit)

        //public async Task<IActionResult> Edit(int id, [Bind("Id, Name, Description, Frequency")] UserHabit userHabit)
        public async Task <IActionResult> Edit(int id, UserHabit modelFromView)

        {
            if (ModelState.IsValid)
            {
                var userId = FindSpecificUserByUserID();

                var originalHabit = _context.UserHabit.Include(x => x.Habit).First(x => x.AppUserId == userId && x.HabitId == id);

                originalHabit.Monday_doHabit    = modelFromView.Monday_doHabit;
                originalHabit.Tuesday_doHabit   = modelFromView.Tuesday_doHabit;
                originalHabit.Wednesday_doHabit = modelFromView.Wednesday_doHabit;
                originalHabit.Thursday_doHabit  = modelFromView.Thursday_doHabit;
                originalHabit.Friday_doHabit    = modelFromView.Friday_doHabit;
                originalHabit.Saturday_doHabit  = modelFromView.Saturday_doHabit;
                originalHabit.Sunday_doHabit    = modelFromView.Sunday_doHabit;

                originalHabit.Habit.Name        = modelFromView.Habit.Name;
                originalHabit.Habit.Description = modelFromView.Habit.Description;

                //var originalHabit = _context.UserHabit.First(x => x.HabitId == id);
                //originalHabit.Habit.Name = userHabit.Habit.Name;
                //originalHabit.Habit.Description = userHabit.Habit.Description;
                //originalHabit.Monday_doHabit = userHabit.AllHabits.



                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(modelFromView));
        }
예제 #5
0
        public async Task TestCase_InvalidWeeklyStartDate()
        {
            var context = fixture.GetCurrentDataContext();
            UserHabitsController control = new UserHabitsController(context);

            UserHabit habit = new UserHabit()
            {
                ValidFrom  = new DateTime(2021, 1, 1),
                ValidTo    = new DateTime(2022, 12, 31),
                Category   = HabitCategory.Positive,
                Name       = "Test1",
                TargetUser = "******",
                Frequency  = HabitFrequency.Weekly,
                StartDate  = 8,
            };

            //var rst = await control.Post(habit);
            //if (rst != null)
            //{
            //    BadRequestObjectResult badrequest = (BadRequestObjectResult)rst;
            //    Assert.NotNull(badrequest);
            //    Assert.Equal("Invalid start date", badrequest.Value);
            //}

            try
            {
                await control.Post(habit);
            }
            catch (Exception ex)
            {
                Assert.NotNull(ex);
            }
        }
예제 #6
0
        public ActionResult Register(RegisterView RegisterUser, HttpPostedFileBase file)
        {
            if (file != null)
            {
                User newUser  = Mapper.Map <User>(RegisterUser);
                var  fileName = Path.GetFileNameWithoutExtension(file.FileName);
                var  type     = Path.GetExtension(file.FileName);
                var  size     = file.ContentLength;
                //將檔案存入資料庫
                var pathName = newUser.Account + type;
                var path     = Path.Combine(Server.MapPath("~/FileUpload"), pathName);

                UserHabit newHabit = Mapper.Map <UserHabit>(RegisterUser);
                _userservices.Register(newUser, fileName, type, path, size, newHabit);
                //將檔案存放至實體路徑
                file.SaveAs(path);
            }
            else
            {
                var       fileName = "";
                var       path     = "";
                var       type     = "";
                int       size     = 0;
                User      newUser  = Mapper.Map <User>(RegisterUser);
                UserHabit newHabit = Mapper.Map <UserHabit>(RegisterUser);
                _userservices.Register(newUser, fileName, type, path, size, newHabit);
            }
            return(RedirectToAction("Index", "Home"));
        }
예제 #7
0
        public IActionResult Edit(int?id)
        {
            var userId    = FindSpecificUserByUserID();
            var pageInput = new UserHabit();

            pageInput = _context.UserHabit.Include(x => x.Habit).First(x => x.AppUserId == userId && x.HabitId == id);
            //pageInput = _context.UserHabit.First(x => x.AppUserId == userId && x.HabitId == id);

            return(View(pageInput));
        }
예제 #8
0
        public UserHabit LookUserHabit(string UserName)
        {
            UserHabit Habit = new UserHabit();

            string sql = string.Format("select OPERATIONVALUE from USER_HABIT where EMPLOYEENO='{0}' and APPNAME='MultiBank' and ACTIONNAME='PayFee'", UserName);

            OracleHelper _oraDal = new OracleHelper();

            var dt = _oraDal.ExecuteQuery(sql);

            if (dt.Rows.Count > 0)
            {
                try
                {
                    Habit = JsonHelper.Deserialize <UserHabit>(dt.Rows[0][0].ToString());
                }
                catch (Exception)
                {
                }
            }

            return(Habit);
        }
예제 #9
0
 public void saveHabit(UserHabit data)
 {
     _userservice.saveHabit(data);
 }
예제 #10
0
        public async Task <IActionResult> Create(CreateViewModel userInput)
        {
            if (ModelState.IsValid)
            {
                var userId = FindSpecificUserByUserID();

                //skapar en userhabit
                var newUserHabit = new UserHabit();
                newUserHabit.AppUserId = userId;
                newUserHabit.Habit     = userInput.CreateHabit;

                newUserHabit.Monday_doHabit    = userInput.MondayChecked;
                newUserHabit.Tuesday_doHabit   = userInput.TuesdayChecked;
                newUserHabit.Wednesday_doHabit = userInput.WednesdayChecked;
                newUserHabit.Thursday_doHabit  = userInput.ThursdayChecked;
                newUserHabit.Friday_doHabit    = userInput.FridayChecked;
                newUserHabit.Saturday_doHabit  = userInput.SaturdayChecked;
                newUserHabit.Sunday_doHabit    = userInput.SundayChecked;

                //if(userInput.MondayChecked)
                //    newUserHabit.MondayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.MondayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;

                //if (userInput.TuesdayChecked)
                //    newUserHabit.TuesdayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.TuesdayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;

                //if (userInput.WednesdayChecked)
                //    newUserHabit.WednesdayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.WednesdayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;

                //if (userInput.ThursdayChecked)
                //    newUserHabit.ThursdayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.ThursdayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;

                //if (userInput.FridayChecked)
                //    newUserHabit.FridayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.FridayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;

                //if (userInput.SaturdayChecked)
                //    newUserHabit.SaturdayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.SaturdayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;

                //if (userInput.SundayChecked)
                //    newUserHabit.SundayStatus = CalendarViewModel.HabitDetails.Day.isVacant;
                //else
                //    newUserHabit.SundayStatus = CalendarViewModel.HabitDetails.Day.isNotPlanned;


                _context.Add(newUserHabit);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View("Index"));
        }
예제 #11
0
        //#region 註冊

        //public void Register(User newUser)
        //{
        //    //HashPassword
        //    newUser.Password = HashPassword(newUser.Password);
        //    _repository.Create(newUser);
        //    _db.Save();
        //}

        //#endregion

        #region 註冊

        public void Register(User newUser, string fileName, string type, string path, int size, UserHabit newHabit)
        {
            DateTime today = DateTime.Today;
            int      age   = today.Year - newUser.Birth.Year;

            if (newUser.Birth > today.AddYears(-age))
            {
                age--;
            }
            Double BMI = newUser.Weight / ((newUser.Height / 100) * (newUser.Height / 100));

            //HashPassword
            newUser.Password = HashPassword(newUser.Password);
            newUser.Age      = age;
            if (newUser.Sex == "男")
            {
                newUser.BMR     = newUser.Weight * 13.7 + newUser.Height * 5.0 - (6.8 * age) + 66;
                newUser.Bodyfat = (1.2 * BMI) + (0.23 * age) - 5.4 - (10.8 * 1);
            }
            else if (newUser.Sex == "女")
            {
                newUser.BMR     = newUser.Weight * 9.6 + newUser.Height * 1.8 - (4.7 * age) + 655;
                newUser.Bodyfat = (1.2 * BMI) + (0.23 * age) - 5.4 - (10.8 * 0);
            }
            //newUser.Img = fileName;
            newUser.Url         = path;
            newUser.Type        = type;
            newUser.Size        = size;
            newHabit.Account    = newUser.Account;
            newHabit.CreateTime = DateTime.Now;
            _repository.Create(newUser);
            _userHabitrepository.Create(newHabit);
            _db.Save();
        }
예제 #12
0
        //#region 取得題目陣列

        //public List<Topic> GetTopicList()
        //{
        //    var data = _topicrepository.GetAll().ToList();
        //    return data;
        //}

        //#endregion

        //#region 取得題目選項陣列

        //public List<TopicSelect> GetTopicSelectList()
        //{
        //    var data = _topicselectrepository.GetAll().ToList();
        //    return data;
        //}

        //#endregion


        #region APP

        #region 儲存問卷資料
        public void saveHabit(UserHabit data)
        {
            data.CreateTime = DateTime.Now;
            _userHabitrepository.Create(data);
            _db.Save();
        }
        public async Task CalculatePoints(UserHabitRecordsControllerTestData_MonthNoOfCount testData)
        {
            var context = this.fixture.GetCurrentDataContext();

            UserHabitRecordsController control = new(context);

            // Add Habit, Habit Rules
            UserHabit habit = new UserHabit();

            habit.TargetUser        = DataSetupUtility.UserA;
            habit.ValidFrom         = new DateTime(2021, 1, 1);
            habit.ValidTo           = new DateTime(2022, 12, 31);
            habit.Name              = "Habit_1";
            habit.Category          = HabitCategory.Positive;
            habit.Comment           = habit.Name;
            habit.Frequency         = HabitFrequency.Monthly;
            habit.CompleteCategory  = HabitCompleteCategory.NumberOfCount;
            habit.CompleteCondition = testData.CompleteCondition;
            habit.StartDate         = testData.DateInMonth;
            context.UserHabits.Add(habit);
            context.SaveChanges();
            Int32 nNewHabitID = habit.ID;

            foreach (var rule in testData.RuleList)
            {
                rule.HabitID = nNewHabitID;
                context.UserHabitRules.Add(rule);
            }
            context.SaveChanges();

            // Add user record.
            foreach (UserHabitRecord record in testData.RecordList)
            {
                record.HabitID = nNewHabitID;
                var rst = control.Post(record);
                Assert.NotNull(rst);
                if (rst != null)
                {
                    CreatedODataResult <UserHabitRecord> rstrecord = (CreatedODataResult <UserHabitRecord>)rst.Result;
                    Assert.NotNull(rstrecord);
                }
            }

            // Check on DB directly
            var dbrecords = (from dbrecord in context.UserHabitRecords
                             where dbrecord.HabitID == nNewHabitID
                             select dbrecord).ToList();

            Assert.Equal(testData.RecordCount, dbrecords.Count);

            // Ensure rule is assigned correctly
            if (testData.ExpectedRuleDateList.Count > 0)
            {
                var rulecnt = 0;
                dbrecords.ForEach(dbr =>
                {
                    if (dbr.RuleID != null)
                    {
                        rulecnt++;

                        var ridx = testData.ExpectedRuleDateList.FindIndex(rd => rd.Date == dbr.RecordDate.Date);
                        Assert.NotEqual(-1, ridx);
                    }
                });
                Assert.Equal(testData.ExpectedRuleDateList.Count, rulecnt);
            }

            DataSetupUtility.ClearUserHabitData(context, nNewHabitID);
            context.SaveChanges();

            await context.DisposeAsync();
        }
        public async Task CalculatePoints_Daily_NumberOfTimes(UserHabitRecordsControllerTestData_DailyNoOfTimes testData)
        {
            var context = this.fixture.GetCurrentDataContext();
            UserHabitRecordsController control = new(context);

            // Add Habit, Habit Rule
            UserHabit habit = new UserHabit();

            habit.TargetUser       = DataSetupUtility.UserA;
            habit.ValidFrom        = new DateTime(2021, 1, 1);
            habit.ValidTo          = new DateTime(2022, 12, 31);
            habit.Name             = "Habit_Daily_1";
            habit.Category         = HabitCategory.Positive;
            habit.Comment          = habit.Name;
            habit.Frequency        = HabitFrequency.Daily;
            habit.CompleteCategory = HabitCompleteCategory.NumberOfTimes;
            context.UserHabits.Add(habit);
            context.SaveChanges();
            Int32 nNewHabitID = habit.ID;

            foreach (var rule in testData.RuleList)
            {
                rule.HabitID = habit.ID;
                context.UserHabitRules.Add(rule);
            }
            context.SaveChanges();

            // Add user record.
            foreach (DateTime dt in testData.RecordDatesList)
            {
                UserHabitRecord record = new UserHabitRecord();
                record.HabitID    = habit.ID;
                record.RecordDate = dt;
                record.Comment    = "Test1";
                var rst = control.Post(record);
                Assert.NotNull(rst);
                if (rst != null)
                {
                    CreatedODataResult <UserHabitRecord> rstrecord = (CreatedODataResult <UserHabitRecord>)rst.Result;
                    Assert.NotNull(rstrecord);
                }
            }

            // Check on DB directly
            var dbrecords = (from dbrecord in context.UserHabitRecords
                             where dbrecord.HabitID == habit.ID
                             orderby dbrecord.RecordDate ascending
                             select dbrecord).ToList();

            Assert.Equal(testData.ExpectedRecordList.Count, dbrecords.Count);

            // Ensure rule is assigned correctly
            if (testData.ExpectedRecordList.Count > 0)
            {
                foreach (var dbrecord in dbrecords)
                {
                    var ridx = testData.ExpectedRecordList.FindIndex(rd => rd.RecordDate == dbrecord.RecordDate);
                    Assert.NotEqual(-1, ridx);

                    Assert.Equal(testData.ExpectedRecordList[ridx].RuleID, dbrecord.RuleID);
                    Assert.Equal(testData.ExpectedRecordList[ridx].ContinuousCount, dbrecord.ContinuousCount);
                }
            }

            DataSetupUtility.ClearUserHabitData(context, nNewHabitID);
            context.SaveChanges();

            await context.DisposeAsync();
        }
        // POST: /UserHabits
        /// <summary>
        /// Support for creating user habit
        /// </summary>
        public async Task <IActionResult> Post([FromBody] UserHabit habit)
        {
            if (!ModelState.IsValid)
            {
                foreach (var value in ModelState.Values)
                {
                    foreach (var err in value.Errors)
                    {
                        System.Diagnostics.Debug.WriteLine(err.Exception?.Message);
                    }
                }

                return(BadRequest());
            }

            String usrId = ControllerUtil.GetUserID(this);

            if (String.IsNullOrEmpty(usrId))
            {
                throw new Exception("Failed ID");
            }

            // Check 0. User
            var ucnt = _context.AwardUsers.Where(p => p.TargetUser == habit.TargetUser && p.Supervisor == usrId).Count();

            if (ucnt != 1)
            {
                return(BadRequest("Invalid user"));
            }

            // Check 1. Validity
            if (habit.ValidTo <= habit.ValidFrom)
            {
                return(BadRequest("Invalid Validity"));
            }
            switch (habit.Frequency)
            {
            case HabitFrequency.Weekly:
                if (!habit.StartDate.HasValue)
                {
                    return(BadRequest("Invalid start date"));
                }
                else
                {
                    try
                    {
                        DayOfWeek dow = (DayOfWeek)habit.StartDate.Value;
                        if (!Enum.IsDefined(typeof(DayOfWeek), dow))
                        {
                            throw new Exception("Invalid start date");
                        }
                    }
                    catch (Exception exp)
                    {
                        return(BadRequest(exp.Message));
                    }

                    switch (habit.CompleteCategory)
                    {
                    case HabitCompleteCategory.NumberOfCount:
                        if (habit.CompleteCondition <= 0)
                        {
                            return(BadRequest("Invalid done criteria"));
                        }
                        break;

                    case HabitCompleteCategory.NumberOfTimes:
                    default:
                        if (habit.CompleteCondition > 7 || habit.CompleteCondition <= 0)
                        {
                            return(BadRequest("Invalid done criteria"));
                        }
                        break;
                    }
                }
                break;

            case HabitFrequency.Monthly:
                if (!habit.StartDate.HasValue)
                {
                    return(BadRequest("Invalid start date"));
                }
                else
                {
                    if (habit.StartDate.Value > 28 || habit.StartDate < 1)
                    {
                        return(BadRequest("Invalid start date"));
                    }

                    switch (habit.CompleteCategory)
                    {
                    case HabitCompleteCategory.NumberOfCount:
                        if (habit.CompleteCondition <= 0)
                        {
                            return(BadRequest("Invalid done criteria"));
                        }
                        break;

                    case HabitCompleteCategory.NumberOfTimes:
                    default:
                        if (habit.CompleteCondition > 28 || habit.CompleteCondition <= 0)
                        {
                            return(BadRequest("Invalid done criteria"));
                        }
                        break;
                    }
                }
                break;

            case HabitFrequency.Daily:
            default:
                if (habit.StartDate.HasValue)
                {
                    return(BadRequest("Invalid start date"));
                }
                switch (habit.CompleteCategory)
                {
                case HabitCompleteCategory.NumberOfCount:
                    if (habit.CompleteCondition <= 0)
                    {
                        return(BadRequest("Invalid done criteria"));
                    }
                    break;

                case HabitCompleteCategory.NumberOfTimes:
                default:
                    if (habit.CompleteCondition != 1)
                    {
                        return(BadRequest("Invalid done criteria"));
                    }
                    break;
                }
                break;
            }

            // Check 2. Rules
            if (habit.Rules.Count < 0)
            {
                return(BadRequest("Habit must define with rules"));
            }
            // habit.Rules.Sort(prop => prop.);

            int i = 1;

            foreach (var rule in habit.Rules)
            {
                rule.RuleID       = i++;
                rule.CurrentHabit = habit;
            }

            // Update db
            _context.UserHabits.Add(habit);
            await _context.SaveChangesAsync();

            return(Created(habit));
        }
        public async Task CalculatePoints_Weekly_NumberOfTimes(UserHabitRecordsControllerTestData_WeekNoOfTimes testData)
        {
            var context = this.fixture.GetCurrentDataContext();
            UserHabitRecordsController control = new(context);

            // Add Habit, Habit Rule
            UserHabit habit = new UserHabit();

            habit.TargetUser        = DataSetupUtility.UserA;
            habit.ValidFrom         = new DateTime(2021, 1, 1);
            habit.ValidTo           = new DateTime(2022, 12, 31);
            habit.Name              = "Habit_1";
            habit.Category          = HabitCategory.Positive;
            habit.Comment           = habit.Name;
            habit.Frequency         = HabitFrequency.Weekly;
            habit.CompleteCategory  = HabitCompleteCategory.NumberOfTimes;
            habit.CompleteCondition = testData.CompleteCondition;
            habit.StartDate         = (int)testData.Dow;
            context.UserHabits.Add(habit);
            context.SaveChanges();
            Int32 nNewHabitID = habit.ID;

            UserHabitRule rule1 = new UserHabitRule();

            rule1.HabitID = habit.ID;
            rule1.RuleID  = 1;
            rule1.ContinuousRecordFrom = 1;
            rule1.ContinuousRecordTo   = 2;
            rule1.Point = 1;
            context.UserHabitRules.Add(rule1);

            UserHabitRule rule2 = new UserHabitRule();

            rule2.HabitID = habit.ID;
            rule2.RuleID  = 2;
            rule2.ContinuousRecordFrom = 2;
            rule1.ContinuousRecordTo   = 3;
            rule2.Point = 2;
            context.UserHabitRules.Add(rule2);

            UserHabitRule rule3 = new UserHabitRule();

            rule3.HabitID = habit.ID;
            rule3.RuleID  = 3;
            rule3.ContinuousRecordFrom = 3;
            rule3.Point = 4;
            context.UserHabitRules.Add(rule3);
            context.SaveChanges();

            // Add user record.
            //Boolean lastRst = false;
            foreach (DateTime dt in testData.RecordDatesList)
            {
                UserHabitRecord record = new UserHabitRecord();
                record.HabitID    = habit.ID;
                record.RecordDate = dt;
                record.Comment    = "Test1";
                var rst = control.Post(record);
                Assert.NotNull(rst);
                if (rst != null)
                {
                    CreatedODataResult <UserHabitRecord> rstrecord = (CreatedODataResult <UserHabitRecord>)rst.Result;
                    Assert.NotNull(rstrecord);

                    //lastRst = rstrecord.Entity.RuleID.HasValue;
                }
            }

            // Check on DB directly
            var dbrecords = (from dbrecord in context.UserHabitRecords
                             where dbrecord.HabitID == habit.ID
                             select dbrecord).ToList();

            Assert.Equal(testData.RecordCount, dbrecords.Count);

            // Ensure rule is assigned correctly
            if (testData.TargetRuleDateList.Count > 0)
            {
                var rulecnt = 0;
                dbrecords.ForEach(dbr =>
                {
                    if (dbr.RuleID != null)
                    {
                        rulecnt++;

                        var ridx = testData.TargetRuleDateList.FindIndex(rd => rd.Date == dbr.RecordDate.Date);
                        Assert.NotEqual(-1, ridx);
                    }
                });
                Assert.Equal(testData.TargetRuleDateList.Count, rulecnt);
            }

            DataSetupUtility.ClearUserHabitData(context, nNewHabitID);
            context.SaveChanges();

            await context.DisposeAsync();
        }