Esempio n. 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);
        }
        public async Task <CheckResponseModel> RequestCheck(string xmlText, Guid instanceId, DateTime launchTime)
        {
            try
            {
                var elasticName = clientFactory.GetClient().RootNodeInfo()?.Name ?? string.Empty;

                using (var client = CreateHttpClient())
                {
                    var model = new CheckRequestModel()
                    {
                        Id      = instanceId,
                        License = xmlText.ToBase64(),
                        Details = new CheckDetailsModel()
                        {
                            LaunchTime  = launchTime,
                            Cores       = Environment.ProcessorCount,
                            ElasticName = elasticName
                        }
                    };

                    var json     = JsonConvert.SerializeObject(model);
                    var content  = new StringContent(json, Encoding.UTF8, "application/json");
                    var response = await client.PostAsync("api/check", content);

                    if (response.StatusCode != System.Net.HttpStatusCode.BadRequest &&
                        response.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        return(null);
                    }

                    var responseBody = await response.Content.ReadAsStringAsync();

                    var checkResponse = JsonConvert.DeserializeObject <CheckResponseModel>(responseBody);

                    return(checkResponse);
                }
            }
            catch (Exception)
            {
                return(null);
            }
        }