public async Task <IActionResult> Post([FromBody] TodaysHabits todaysHabits)
        {
            var complete = todaysHabits.IsComplete;

            if (todaysHabits.IsComplete == false && todaysHabits.IsMeasurable)
            {
                if (todaysHabits.NumberOfBlocksCompleted == todaysHabits.NumberOfBlocks)
                {
                    complete = true;
                }
            }
            HabitComplete completeHabit = new HabitComplete
            {
                Id             = 0,
                HabitId        = todaysHabits.Id,
                Date           = dateTimeService.GetCurrentDateTime(),
                IsComplete     = complete,
                CompleteBlocks = todaysHabits.NumberOfBlocksCompleted
            };

            return(CreatedAtAction("Get", new { id = completeHabit.Id }, habitService.UpdateHabitComplete(completeHabit)));
        }
        public IEnumerable <TodaysHabits> GetTodaysHabits(DateTime current)
        {
            var todaysHabits = new List <TodaysHabits>();
            var habits       = _context.Habits.ToList();

            foreach (Habit habit in habits)
            {
                var completed  = _context.HabitCompletes.ToList();
                var isComplete = completed
                                 .Where(x => x.HabitId == habit.Id)
                                 .Where(x => x.Date.Year == current.Year && x.Date.Month == current.Month && x.Date.Day == current.Day)?
                                 .LastOrDefault()?.IsComplete;
                var completedBlocks = completed
                                      .Where(x => x.HabitId == habit.Id)
                                      .Where(x => x.Date.Year == current.Year && x.Date.Month == current.Month && x.Date.Day == current.Day)?
                                      .LastOrDefault()?.CompleteBlocks;

                if (habit.NumberOfBlocks < completedBlocks)
                {
                    completedBlocks = habit.NumberOfBlocks;
                }

                if (isComplete != null)
                {
                    if (habit.NumberOfBlocks == completedBlocks)
                    {
                        isComplete = true;
                    }
                    else if (habit.Mesurable)
                    {
                        isComplete = false;
                    }
                }
                else
                {
                    isComplete = false;
                }

                var todayHabit = new TodaysHabits
                {
                    Id                      = habit.Id,
                    Name                    = habit.Name,
                    Colour                  = habit.Colour,
                    IsComplete              = (bool)isComplete,
                    IsMeasurable            = habit.Mesurable,
                    NumberOfBlocks          = habit.NumberOfBlocks,
                    NumberOfBlocksCompleted = completedBlocks
                };
                if (CompareDateLessThanOrEqual(habit.StartDate, current))
                {
                    //if the habit is weekly and todays DAY is the same as one of the days of the habit
                    //if habit is yearly and the day and montha re the same then we good
                    //
                    if (habit.EndDate == null || CompareDateGreaterThanOrEqual(habit.EndDate, current))
                    {
                        if (habit.Repeat == Repeat.NoRepeat)
                        {
                            if (CompareDateEquals(habit.StartDate, current))
                            {
                                todaysHabits.Add(todayHabit);
                            }
                        }
                        else if (habit.Repeat == Repeat.Weekly)
                        {
                            var todaysDay = current.DayOfWeek.ToString();
                            if (habit.RepeatDays != null)
                            {
                                foreach (var repeatDay in GetFlags(habit.RepeatDays))
                                {
                                    if (repeatDay.ToString().Equals(todaysDay))
                                    {
                                        todaysHabits.Add(todayHabit);
                                    }
                                }
                            }
                        }
                        else if (habit.Repeat == Repeat.Yearly)
                        {
                            if (CompareDateYearly(habit.StartDate, current))
                            {
                                todaysHabits.Add(todayHabit);
                            }
                        }
                        else if (habit.Repeat == Repeat.Everyday)
                        {
                            todaysHabits.Add(todayHabit);
                        }
                    }
                }
            }
            return(todaysHabits);
        }