Esempio n. 1
0
    public async Task SendMemoriesEmail()
    {
        var users = await _accountService.SearchUsersWithEnableMemoriesEmail();

        if (users?.Any() != true)
        {
            return;
        }

        foreach (var user in users)
        {
            var shortUserId = AccountService.GetUserId(user.UserId);

            var babies = _sqLiteService.GetBabiesFromDb(shortUserId);

            foreach (var baby in babies)
            {
                var memories = _sqLiteService.GetMemoriesFromDb(DateTime.Now, shortUserId, baby.BabyName);

                _logger.LogInformation($"Found {memories.Count} memories for {baby.BabyName}");

                if (memories.Count > 0)
                {
                    await SendEmail(memories, user, shortUserId, baby.BabyName);
                }
            }
        }
    }
Esempio n. 2
0
    public async Task <IActionResult> Index()
    {
        if (User.Identity?.IsAuthenticated == true &&
            await _importService.HasDataClone())
        {
            var babiesViewModel = new BabiesViewModel
            {
                Profile = await _accountService.GetProfile(User),
                Babies  = await _sqLiteService.GetBabiesFromDb(User)
            };

            return(View("Babies", babiesViewModel));
        }
        else if (User.Identity?.IsAuthenticated == true)
        {
            var model = new BaseViewModel
            {
                Profile = await _accountService.GetProfile(User)
            };

            return(View("LoggedIn", model));
        }

        return(View(new BaseViewModel()));
    }
Esempio n. 3
0
    public async Task <ChartsViewModel> GetViewModel(ClaimsPrincipal user, string babyName, int?maxAge = null)
    {
        var result = new ChartsViewModel();

        var connection = await _sqLiteService.OpenConnection(user);

        var entries = _sqLiteService.GetGrowth(long.MinValue, long.MaxValue, babyName, connection);
        var babies  = await _sqLiteService.GetBabiesFromDb(user);

        var baby = babies.FirstOrDefault(baby => baby.BabyName == babyName) as BabyModel;

        connection.Close();

        foreach (Growth entry in entries.Take(maxAge ?? int.MaxValue))
        {
            var ageInMonths = (entry.TimeUTC - baby.DateOfBirth).Days / (double)30;

            if (entry.Weight > 0)
            {
                result.WeightPoints.Add(new Point(ageInMonths, entry.Weight));
            }

            if (entry.Length > 0)
            {
                result.LengthPoints.Add(new Point(ageInMonths, entry.Length));
            }

            if (entry.HeadSize > 0)
            {
                result.HeadSizePoints.Add(new Point(ageInMonths, entry.HeadSize));
            }

            if (entry.Length > 0 && entry.Weight > 0)
            {
                var lengthInMeters = entry.Length / 100;
                var bmi            = entry.Weight / (lengthInMeters * lengthInMeters);
                result.BMIPoints.Add(new Point(ageInMonths, bmi));
            }
        }

        SetWeightCsvPoints(result, maxAge);
        SetLengthCsvPoints(result, maxAge);
        SetHeadSizeCsvPoints(result, maxAge);
        SetBMICsvPoints(result, maxAge);

        return(result);
    }