Example #1
0
        private object WorkDay(HttpListenerContext context, string path)
        {
            var parameters = this.QueryParser(context.Request.Url.Query);

            if (!parameters.TryGetValue("date", out var dateString) || !DateTime.TryParse(dateString, out var day))
            {
                context.Response.StatusCode = 400;
                return(new { status = "Bad Request: parameter 'date' was missing or malformed" });
            }
            int blur = 35;

            if (parameters.TryGetValue("blur", out string blurValue))
            {
                if (byte.TryParse(blurValue, out byte blurParam))
                {
                    blur = blurParam;
                }
                else
                {
                    context.Response.StatusCode = 400;
                    return(new { status = "Bad Request: parameter 'blur' was malformed" });
                }
            }

            var acts     = ActivityManager.GetSharedMonthActivities((short)day.Year, (byte)day.Month, "*", blur);
            var dayActs  = acts.Values.Where(x => x.Days.ContainsKey((byte)day.Day)).Select(x => x.Days[(byte)day.Day]).ToList();
            var xx       = dayActs.SelectMany(x => x.RangesWhere(y => y.WasActive && y.Classification == WorkPlayType.Work));
            var combined = RangeContainer.UintRangeContainer();

            combined.Add(xx);
            var totalTime = SecondToTime((uint)combined.Sum(x => x.End - x.Start + 1));

            return(new
            {
                date = day.ToString("yyyy-MM-dd"),
                totalTime,
                dayNumber = day.Day,
                work = combined.Select(x => new[] { SecondToTime(x.Start), SecondToTime(x.End) })
            });
        }