internal void UpdatePreMealSugar(int sugarLevel, int targetSugar)
{
var userProfile = GetUserProfile();
var userData = userProfile.GetUserData();
if (userData.UserMeals == null)
{
log.WarnFormat("[UpdatePremealSugar] User={0} tried to update premeal sugar, but meal doesn't exists sugarLevel={1}, targetSugar={2}.", userProfile.UserName, sugarLevel, targetSugar);
userData.UserMeals = new List<Meal>();
userData.UserMeals.Add(new Meal());
}
var userMeal = userData.UserMeals.OrderByDescending(c => c.CreatedAt).ToList().FirstOrDefault();
var timeDiff = (DateTime.UtcNow - userMeal.CreatedAt);
if (timeDiff.Hours > 2)
{
log.WarnFormat("[UpdatePremealSugar] last meal was created for more then 2 hours. Created new one");
userMeal = new Meal();
userData.UserMeals.Add(userMeal);
}
userMeal.PreMealSugarLevel = sugarLevel;
userMeal.PreMealSugarUpdatedAt = DateTime.UtcNow;
if (targetSugar >= 0)
{
if (userData.BaseInsulinCalcProfile == null)
{
userData.BaseInsulinCalcProfile = new RapidInsulinProfile()
{
MaxSugarRange = targetSugar
};
}
else userData.BaseInsulinCalcProfile.MaxSugarRange = targetSugar;
}
userProfile.SetUserData(userData);
userProfile.Save();
log.InfoFormat("[UpdatePremealSugar] user={0}, meal={1}, sugarLevel={2}, targetSugar={3}.", userProfile.UserName, userMeal, sugarLevel, targetSugar);
}