private async Task UpdateEndTime(string userName, DateTime endTime, WorkTimeEntity currentDayInfo) { DateTime lastStart; if (currentDayInfo.StartTimes.Any()) { var orderedStartTimes = currentDayInfo .StartTimes .OrderByDescending(x => x); lastStart = orderedStartTimes.First(); } else { // Okay, no start time on the current day. Let's check the 3 days before, in case someone did a night shift var lastDayInfo = await GetWorkTime(userName, endTime.AddDays(-3)); var orderedStartTimes = lastDayInfo .StartTimes .OrderByDescending(x => x) .ToList(); // In case we didn't find something for the day before, just take the input date's midnight value. // In change someone works > 3 days in a row -> 1) wtf 2) add that logic here lastStart = orderedStartTimes.Any() ? orderedStartTimes.First() : endTime.Date; } var timeSinceLastStart = endTime - lastStart; currentDayInfo.TotalMinutes += timeSinceLastStart.TotalMinutes; }
private async Task InsertOrUpdateWorkTimes(WorkTimeEntity entity) { var workTimeTable = await _tableHelper.GetTable(); var operation = TableOperation.InsertOrMerge(entity); await workTimeTable.ExecuteAsync(operation); }