コード例 #1
0
        public void GetCompletedMemeories_ValidDateRange_ReturnsOk()
        {
            _memoriesController.HttpContext.User.AddIdentity(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Role, UserRoles.Coach) }));

            CompletedMemoryParams queryParams = new CompletedMemoryParams
            {
                FromDate = new DateTime(2019, 8, 23),
                ToDate   = new DateTime(2020, 1, 1),
            };

            var kidMemories = new List <KidMemory> {
                new KidMemory {
                    KidId = 324, MemoryId = 12, DateCompleted = new DateTime(2019, 8, 24), Memory = new Memory {
                        Id = 12, CategoryId = 1
                    }
                }
            };

            _memoryRepoMock
            .Setup(x => x.GetCompletedMemories(queryParams))
            .ReturnsAsync(kidMemories);

            var actual = _memoriesController.GetCompletedMemeories(queryParams).Result;

            Assert.IsInstanceOfType(actual, typeof(OkObjectResult));
        }
コード例 #2
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));
        }