public void GetAllAsync_DoorActionsExist_DoorActionsRetrieved()
        {
            // Arrange
            var doorAction1 = new DoorAction
            {
                Id           = 1,
                DoorReaderId = 1,
                CardId       = 1,
                Status       = DoorActionStatusType.Success,
                TimeStamp    = new DateTime(2000, 1, 1),
            };

            var doorAction2 = new DoorAction
            {
                Id           = 2,
                DoorReaderId = 1,
                CardId       = 1,
                Status       = DoorActionStatusType.Error,
                TimeStamp    = new DateTime(2000, 1, 2),
            };

            _applicationContext.DoorActions.AddRange(doorAction1, doorAction2);
            _applicationContext.SaveChanges();

            // Act
            var receivedDoorActionDtos = _doorActionManager
                                         .GetAllAsync()
                                         .GetAwaiter()
                                         .GetResult();

            // Assert
            Assert.Equal(2, receivedDoorActionDtos.Count());
            Assert.Single(receivedDoorActionDtos.Where(doorActionDto => doorActionDto.Id == doorAction1.Id));
            Assert.Single(receivedDoorActionDtos.Where(doorActionDto => doorActionDto.Id == doorAction2.Id));
        }
        public async Task <IActionResult> List(DateTime?dateFilter, int?page)
        {
            const int defaultPage = 1;
            const int pageSize    = 10;

            var pageFilter = new PageHelper
            {
                Page     = page ?? defaultPage,
                PageSize = pageSize,
            };

            var user = await _userManager.GetUserAsync(User);

            var personCardIds = (await _cardManager.GetAllAsync(
                                     employeeIds: new string[] { user.Id }))
                                .Select(cardDto => cardDto.Id)
                                .ToArray();

            var doorActionDtosByPerson = (await _doorActionManager.GetAllAsync(
                                              pageFilter: pageFilter,
                                              dateFilter: dateFilter,
                                              cardIds: personCardIds,
                                              includes: new string[]
            {
                nameof(DoorActionDto.Card),
                nameof(DoorActionDto.DoorReader),
                nameof(DoorReader.Door)
            }))
                                         .OrderBy(doorActionDto => doorActionDto.TimeStamp);

            return(View(new DoorActionIndexViewModel
            {
                DoorActionViewModels = _mapper.Map <IEnumerable <DoorActionViewModel> >(doorActionDtosByPerson),
                PageViewModel = new PageViewModel(
                    await _doorActionManager.GetTotalCountAsync(
                        dateFilter: dateFilter,
                        cardIds: personCardIds),
                    pageFilter.Page,
                    pageFilter.PageSize),
                DateFilter = dateFilter.HasValue
                    ? dateFilter.Value.ToString("yyyy-MM-dd")
                    : null
            }));
        }