public async Task <IActionResult> PostAsync([FromBody] PassageRequest request) { var currentCardDto = (await _cardManager .GetAllAsync(uniqueNumbers: new string[] { request.CardUniqueNumber })) .FirstOrDefault(); if (currentCardDto is null) { return(NotFound()); } var currentDoorReaderDto = (await _doorReaderManager .GetAllAsync( serialNumbers: new string[] { request.DoorReaderSerialNumber }, includes: new string[] { nameof(DoorReader.Door) })) .FirstOrDefault(); if (currentDoorReaderDto is null) { return(NotFound()); } var doorActionStatus = DoorActionStatusType.Success; if (currentCardDto.Status == CardStatusType.Locked) { doorActionStatus = DoorActionStatusType.Error; } if (currentDoorReaderDto.Door.Status != DoorStatusType.Active) { doorActionStatus = DoorActionStatusType.Error; } if (currentCardDto.Level < currentDoorReaderDto.Door.Level) { doorActionStatus = DoorActionStatusType.Denied; } var doorActionDto = new DoorActionDto { CardId = currentCardDto.Id, DoorReaderId = currentDoorReaderDto.Id, Status = doorActionStatus, TimeStamp = DateTime.Now, }; await _doorActionManager.AddAsync(doorActionDto); await _commitManager.SaveAsync(); return(doorActionStatus != DoorActionStatusType.Success ? BadRequest() : Ok()); }
public void GetAllAsync_CardsExist_CardsRetrieved() { // Arrange var card1 = new Card { Id = 1, UserId = "QWERTY123", UniqueNumber = "123-45", Status = CardStatusType.Active, Level = LevelType.Admin, }; var card2 = new Card { Id = 2, UserId = "QWERTY321", UniqueNumber = "123-67", Status = CardStatusType.Active, Level = LevelType.Admin, }; _applicationContext.Cards.AddRange(card1, card2); _applicationContext.SaveChanges(); // Act var receivedCardDtos = _cardManager .GetAllAsync() .GetAwaiter() .GetResult(); // Assert Assert.Single(receivedCardDtos.Where(cardDto => cardDto.Id == card1.Id)); Assert.Single(receivedCardDtos.Where(cardDto => cardDto.Id == card2.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 })); }
public async Task <IActionResult> GetCardsAsync() => Ok(await _cardManager.GetAllAsync());