コード例 #1
0
        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);
        }