コード例 #1
0
        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;
        }
コード例 #2
0
        private async Task InsertOrUpdateWorkTimes(WorkTimeEntity entity)
        {
            var workTimeTable = await _tableHelper.GetTable();

            var operation = TableOperation.InsertOrMerge(entity);

            await workTimeTable.ExecuteAsync(operation);
        }