コード例 #1
0
        public async Task <IActionResult> GetCompletedMemeories([FromQuery] CompletedMemoryParams queryParams)
        {
            queryParams.UserId    = UserId;
            queryParams.UserRoles = new[] { UserRole };

            if (queryParams?.FromDate > queryParams?.ToDate)
            {
                return(BadRequest("Invalid date range"));
            }

            var memories = await _repo.GetCompletedMemories(queryParams);

            var dto = memories
                      .GroupBy(km => km.Memory.Category)
                      .OrderBy(c => c.Key.Id)
                      .Select(c => new KidMemoryCategory
            {
                CategoryId   = c.Key.Id,
                CategoryName = c.Key.Name,
                KidMemories  = c.GroupBy(km => km.Kid)
                               .OrderBy(km => km.Key.LastName)
                               .Select(k => new KidMemoryDetail
                {
                    FirstName = k.Key.FirstName,
                    LastName  = k.Key.LastName,
                    Completed = k.OrderByDescending(x => x.DateCompleted).ThenBy(x => x.Memory.Name)
                                .Select(x => new CompletedMemoryDetail
                    {
                        MemoryId          = x.Memory.Id,
                        MemoryName        = x.Memory.Name,
                        MemoryDescription = x.Memory.Description,
                        DateCompleted     = x.DateCompleted,
                    })
                })
            });

            return(Ok(dto));
        }