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); } } } }
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())); }
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); }