public async Task CreateAsync(CheckRequestModel entity) { var alien = await _alienRepository.GetByIdAsync(entity.AlienID); var estabelecimento = await _estabelecimentoRepository.GetByIdAsync(entity.EstabalecimentoId); var check = new Check(DateTime.Now, alien, estabelecimento); var checkDb = await _checkRepository.GetCheckByUserId(entity.AlienID); if (estabelecimento.BannedList.Contains(checkDb.AlienId)) { throw new Exception("Alien banido."); } if (checkDb != null && checkDb.CheckOut == null) { estabelecimento.BannedList.Add(alien.Id); await _estabelecimentoRepository.UpdateAsync(estabelecimento); throw new Exception("Alien banido."); } if ((DateTime.Now.Year - alien.DateBirth.Year) < 250) { throw new Exception("Alien menor de idade."); } foreach (var objectAlien in alien.Objects) { if (estabelecimento.RestrictedObjects.Contains(objectAlien)) { throw new Exception("Objeto não permitido."); } } await _checkRepository.CreateAsync(check); }