public async Task <UserTrackedItem> CreateOrUpdateTrackedItemAsync(TrackedFoodItem trackedItem, string userId) { var isNewItem = await CreateOrUpdateItemPreProcessingAsync(trackedItem, userId); trackedItem.Description = trackedItem.Name; trackedItem.ValidateValuesForSubmission(isNewItem); var userTask = GetOrCreateUserFromDbAsync(userId); var insertedItem = await _elmDb.UpsertTrackedItem(trackedItem); await CreateOrUpdateItemPostProcessingAsync(trackedItem, await userTask); return(insertedItem); }
private EffectsSummary GenerateFoodRecordRelatedData(TrackedFoodItem foodRecord, IEnumerable <TrackedBowelMovementItem> bowelMovRecords, IEnumerable <TrackedStomachSymptomItem> stomachSymRecords) { var time72HoursAgo = foodRecord.TrackedTime.AddHours(-72); var time24HoursAgo = foodRecord.TrackedTime.AddHours(-24); var time8HoursAgo = foodRecord.TrackedTime.AddHours(-8); var time72HoursAfter = foodRecord.TrackedTime.AddHours(72); var time24HoursAfter = foodRecord.TrackedTime.AddHours(24); var time8HoursAfter = foodRecord.TrackedTime.AddHours(8); var bowelRecords72HoursBefore = bowelMovRecords.Where(bm => bm.TrackedTime >= time72HoursAgo && bm.TrackedTime <= foodRecord.TrackedTime); var bowelRecords24HoursBefore = bowelRecords72HoursBefore.Where(bm => bm.TrackedTime >= time24HoursAgo); var bowelRecords8HoursBefore = bowelRecords24HoursBefore.Where(bm => bm.TrackedTime >= time8HoursAgo); var bowelRecords72HoursAfter = bowelMovRecords.Where(bm => bm.TrackedTime <= time72HoursAfter && bm.TrackedTime >= foodRecord.TrackedTime); var bowelRecords24HoursAfter = bowelRecords72HoursAfter.Where(bm => bm.TrackedTime <= time24HoursAfter); var bowelRecords8HoursAfter = bowelRecords24HoursAfter.Where(bm => bm.TrackedTime <= time8HoursAfter); var stomachRecords72HoursBefore = stomachSymRecords.Where(ss => ss.TrackedTime >= time72HoursAgo && ss.TrackedTime <= foodRecord.TrackedTime); var stomachRecords24HoursBefore = stomachRecords72HoursBefore.Where(ss => ss.TrackedTime >= time24HoursAgo); var stomachRecords8HoursBefore = stomachRecords24HoursBefore.Where(ss => ss.TrackedTime >= time8HoursAgo); var stomachRecords72HoursAfter = stomachSymRecords.Where(ss => ss.TrackedTime <= time72HoursAfter && ss.TrackedTime >= foodRecord.TrackedTime); var stomachRecords24HoursAfter = stomachRecords72HoursBefore.Where(ss => ss.TrackedTime <= time24HoursAfter); var stomachRecords8HoursAfter = stomachRecords24HoursBefore.Where(ss => ss.TrackedTime <= time8HoursAfter); var bowelRecords72HourAfterAverage = GenerateAverageBowelMovRecord(bowelRecords72HoursAfter); var bowelRecords24HourAfterAverage = GenerateAverageBowelMovRecord(bowelRecords24HoursAfter); var bowelRecords8HourAfterAverage = GenerateAverageBowelMovRecord(bowelRecords8HoursAfter); var bowelRecords72HourBeforeAverage = GenerateAverageBowelMovRecord(bowelRecords72HoursBefore); var bowelRecords24HourBeforeAverage = GenerateAverageBowelMovRecord(bowelRecords24HoursBefore); var bowelRecords8HourBeforeAverage = GenerateAverageBowelMovRecord(bowelRecords8HoursBefore); var bowelRecords72HourDelta = GenerateBowelMovDelta(bowelRecords72HourBeforeAverage, bowelRecords72HourAfterAverage); var bowelRecords24HourDelta = GenerateBowelMovDelta(bowelRecords24HourBeforeAverage, bowelRecords24HourAfterAverage); var bowelRecords8HourDelta = GenerateBowelMovDelta(bowelRecords8HourBeforeAverage, bowelRecords8HourAfterAverage); var stomachRecords72HourAfterAverage = GenerateAverageStomachSymRecord(stomachRecords72HoursAfter); var stomachRecords24HourAfterAverage = GenerateAverageStomachSymRecord(stomachRecords24HoursAfter); var stomachRecords8HourAfterAverage = GenerateAverageStomachSymRecord(stomachRecords8HoursAfter); var stomachRecords72HourBeforeAverage = GenerateAverageStomachSymRecord(stomachRecords72HoursBefore); var stomachRecords24HourBeforeAverage = GenerateAverageStomachSymRecord(stomachRecords24HoursBefore); var stomachRecords8HourBeforeAverage = GenerateAverageStomachSymRecord(stomachRecords8HoursBefore); var stomachRecords72HourDelta = GenerateStomachSymDelta(stomachRecords72HourBeforeAverage, stomachRecords72HourAfterAverage); var stomachRecords24HourDelta = GenerateStomachSymDelta(stomachRecords24HourBeforeAverage, stomachRecords24HourAfterAverage); var stomachRecords8HourDelta = GenerateStomachSymDelta(stomachRecords8HourBeforeAverage, stomachRecords8HourAfterAverage); return(new EffectsSummary() { BowelRecords72HourAfterAverage = bowelRecords72HourAfterAverage, BowelRecords24HourAfterAverage = bowelRecords24HourAfterAverage, BowelRecords8HourAfterAverage = bowelRecords8HourAfterAverage, BowelRecords72HourBeforeAverage = bowelRecords72HourBeforeAverage, BowelRecords24HourBeforeAverage = bowelRecords24HourBeforeAverage, BowelRecords8HourBeforeAverage = bowelRecords8HourBeforeAverage, BowelRecords72HourDelta = bowelRecords72HourDelta, BowelRecords24HourDelta = bowelRecords24HourDelta, BowelRecords8HourDelta = bowelRecords8HourDelta, StomachRecords72HourAfterAverage = stomachRecords72HourAfterAverage, StomachRecords24HourAfterAverage = stomachRecords24HourAfterAverage, StomachRecords8HourAfterAverage = stomachRecords8HourAfterAverage, StomachRecords72HourBeforeAverage = stomachRecords72HourBeforeAverage, StomachRecords24HourBeforeAverage = stomachRecords24HourBeforeAverage, StomachRecords8HourBeforeAverage = stomachRecords8HourBeforeAverage, StomachRecords72HourDelta = stomachRecords72HourDelta, StomachRecords24HourDelta = stomachRecords24HourDelta, StomachRecords8HourDelta = stomachRecords8HourDelta }); }
public async Task <ActionResult <UserTrackedItem> > CreateOrUpdateTrackedFoodItemAsync([FromBody] TrackedFoodItem trackedItemObject) { var user = GetUserObjectFromClaims(HttpContext.User.Claims); return(await _trackItemBl.CreateOrUpdateTrackedItemAsync(trackedItemObject, user.ObjectId)); }