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); } }