public HttpResponseMessage GetByDate(long date) { // Получаем смещение времени пользователя int timezoneOffset = RequestHelper.GetTimezoneOffset(Request); var zonedDateTime = TimeHelper.ConvertFromUtc(TimeHelper.FromUnixMsToDateTime(date), timezoneOffset); var zonedDate = zonedDateTime.Date; var workoutDiaryEntries = unitOfWork.WorkoutDiaryEntryRepository.Get( f => (f.CreateUserId == currentUserId && DbFunctions.DiffDays( // Выбрасываем время, оставляем только дату DbFunctions.TruncateTime( // Добавляем смещение временной зоны пользователя, получаем время из БД в часовом формате пользователя DbFunctions.AddMinutes(f.DateUTC, timezoneOffset) ), zonedDate) == 0), null, iE => iE.Exercise, iES => iES.Sets ); // Преобразовываем в DTO-объект для ответа var workoutDiaryEntryDTO = Mapper.Map <IEnumerable <WorkoutDiaryEntryDTO> >(workoutDiaryEntries); return(Request.CreateResponse <IEnumerable <WorkoutDiaryEntryDTO> >(HttpStatusCode.OK, workoutDiaryEntryDTO)); }
public HttpResponseMessage GetBurnedCalories(long date) { // Получаем смещение времени пользователя int timezoneOffset = RequestHelper.GetTimezoneOffset(Request); var zonedDateTime = TimeHelper.ConvertFromUtc(TimeHelper.FromUnixMsToDateTime(date), timezoneOffset); var zonedDate = zonedDateTime.Date; var workoutDiaryEntries = unitOfWork.WorkoutDiaryEntryRepository.Get( f => (f.CreateUserId == currentUserId && DbFunctions.DiffDays( // Выбрасываем время, оставляем только дату DbFunctions.TruncateTime( // Добавляем смещение временной зоны пользователя, получаем время из БД в часовом формате пользователя DbFunctions.AddMinutes(f.DateUTC, timezoneOffset) ), zonedDate) == 0), null, iE => iE.Exercise, iES => iES.Sets ); decimal burnedCalories = 0; if (workoutDiaryEntries != null && workoutDiaryEntries.Count() > 0) { burnedCalories = workoutDiaryEntries.Select(s => s.BurnedCalories).Sum(); } return(Request.CreateResponse(HttpStatusCode.OK, Helpers.Utilities.RoundAFZ(burnedCalories))); }
public HttpResponseMessage GetByDate(long date) { #region _Temp_ // Получаем идентификатор часового пояса пользователя //var userTzId = unitOfWork.UserProfileRepository.Get( // f => f.UserId == currentUserId, // null) // .SingleOrDefault() // .TimezoneId; // Структура из которой можно определить переданное время в часовом поясе пользователя //var zonedDateTime2 = new TimeHelper.DateTimeWithZone(date, "Russian Standard Time"); // Получаем данные о записях из БД на переданную дату в часовом поясе полльзователя //var foodDiaryEntries2 = unitOfWork.FoodDiaryEntryRepository.Get( // f => (f.CreateUserId == currentUserId && // EntityFunctions.DiffDays( // // Выбрасываем время, оставляем только дату // EntityFunctions.TruncateTime( // // Добавляем смещение временной зоны пользователя, получаем время из БД в часовом формате пользователя // EntityFunctions.AddMilliseconds(f.Date, zonedDateTime2.ZonedUniversalDateTime.Offset.Milliseconds) // ), // zonedDateTime2.LocalTime.Date) == 0), // null, // iF => iF.Food, // iS => iS.Food.Servings //); #endregion // Получаем смещение времени пользователя int timezoneOffset = RequestHelper.GetTimezoneOffset(Request); var zonedDateTime = TimeHelper.ConvertFromUtc(TimeHelper.FromUnixMsToDateTime(date), timezoneOffset); var zonedDate = zonedDateTime.Date; var foodDiaryEntries = unitOfWork.FoodDiaryEntryRepository.Get( f => (f.CreateUserId == currentUserId && DbFunctions.DiffDays( // Выбрасываем время, оставляем только дату DbFunctions.TruncateTime( // Добавляем смещение временной зоны пользователя, получаем время из БД в часовом формате пользователя DbFunctions.AddMinutes(f.Date, timezoneOffset) ), zonedDate) == 0), null, iF => iF.Food, iS => iS.Food.Servings ); // Преобразовываем в DTO-объект для ответа var foodDiaryEntryDTO = Mapper.Map <IEnumerable <FoodDiaryEntryDTO> >(foodDiaryEntries); return(Request.CreateResponse <IEnumerable <FoodDiaryEntryDTO> >(HttpStatusCode.OK, foodDiaryEntryDTO)); }
public HttpResponseMessage GetNutritionInfo(long date) { // Получаем смещение времени пользователя int timezoneOffset = RequestHelper.GetTimezoneOffset(Request); var zonedDateTime = TimeHelper.ConvertFromUtc(TimeHelper.FromUnixMsToDateTime(date), timezoneOffset); var zonedDate = zonedDateTime.Date; var foodDiaryEntries = unitOfWork.FoodDiaryEntryRepository.Get( f => (f.CreateUserId == currentUserId && DbFunctions.DiffDays( // Выбрасываем время, оставляем только дату DbFunctions.TruncateTime( // Добавляем смещение временной зоны пользователя, получаем время из БД в часовом формате пользователя DbFunctions.AddMinutes(f.Date, timezoneOffset) ), zonedDate) == 0), null, iF => iF.Food, iS => iS.Food.Servings ); var consumedNInfo = new NutritionInfoDTO(); var plannedNInfo = new NutritionInfoDTO(); int plannedMealsCount = 0; int consumedMealsCount = 0; if (foodDiaryEntries != null && foodDiaryEntries.Count() > 0) { foreach (var entry in foodDiaryEntries) { var serving = entry.Food.Servings.Where(s => (s.ServingId == entry.FtSelectedServingId && entry.FsSelectedServingId == 0) || (s.FSServingId == entry.FsSelectedServingId && entry.FtSelectedServingId == 0) || (s.ServingId == entry.FtSelectedServingId && entry.FsSelectedServingId != 0 && entry.FtSelectedServingId != 0) ).SingleOrDefault(); if (serving != null) { if (entry.IsCompleted == true) { // Суммируем значения энергетической ценности уже потребленной еды. consumedNInfo.Sum(serving, entry.FoodQty); consumedMealsCount++; } else { // Суммируем значения энергетической ценности запланированной к потреблению еды. plannedNInfo.Sum(serving, entry.FoodQty); plannedMealsCount++; } } } #region __Округляем значения__ // Consumed info. consumedNInfo.Round(2); // Planned info. plannedNInfo.Round(2); #endregion } return(Request.CreateResponse( HttpStatusCode.OK, new { consumedNInfo = consumedNInfo, plannedNInfo = plannedNInfo, plannedMealsCount = plannedMealsCount, consumedMealsCount = consumedMealsCount })); }