コード例 #1
0
        public PersonagemViewModel ObterPorNome(string nome)
        {
            var personagemCacheado = _distributedCache.GetString(nome.ToBase64());

            if (!string.IsNullOrEmpty(personagemCacheado))
            {
                return(JsonConvert.DeserializeObject <PersonagemViewModel>(personagemCacheado));
            }

            var request   = new RestRequest("characters", Method.GET);
            var timeStamp = DateTime.UtcNow.Ticks.ToString();

            request.AddParameter("name", nome);
            request.AddParameter("ts", timeStamp);
            request.AddParameter("apikey", _publicKey);
            request.AddParameter("hash", GerarHash(timeStamp, _publicKey, _privateKey));
            var response = _restClient.Get(request);

            if (!response.IsSuccessful)
            {
                return(null);
            }

            dynamic resultado = JsonConvert.DeserializeObject(response.Content);

            if ((resultado.data.results as IList).Count == 0)
            {
                return(null);
            }

            PersonagemViewModel personagem = JsonConvert.DeserializeObject <PersonagemViewModel>(JsonConvert.SerializeObject(resultado.data.results[0]));

            _distributedCache.SetString(nome.ToBase64(), JsonConvert.SerializeObject(personagem));
            return(personagem);
        }
コード例 #2
0
        public IActionResult Patch(int id, PersonagemViewModel personagemAtualizado)
        {
            try
            {
                PersonagemDomain personagemBuscado = _personagemRepository.BuscarPorId(id);

                PersonagemDomain personagemBuscadoNome = _personagemRepository.BuscarPorNome(personagemAtualizado.nomePersonagem);

                if (personagemBuscadoNome == null)
                {
                    if (personagemBuscado != null)
                    {
                        personagemBuscado = new PersonagemDomain
                        {
                            nomePersonagem = personagemAtualizado.nomePersonagem,
                            maxVida        = personagemAtualizado.maxVida,
                            maxMana        = personagemAtualizado.maxMana,
                            idClasse       = personagemAtualizado.idClasse
                        };

                        _personagemRepository.Atualizar(id, personagemBuscado);

                        return(StatusCode(204));
                    }

                    return(NotFound("Personagem não encontrado!"));
                }

                return(NotFound("Não foi possível atualizar, nome de personagem já existente!"));
            }
            catch (Exception codErro)
            {
                return(BadRequest(codErro));
            }
        }
コード例 #3
0
        public IActionResult Post([FromForm] PersonagemViewModel model)
        {
            string sql = "";

            if (model.Id != 0)
            {
                sql = @"UPDATE personagem SET
                        nivel = @nivel,
                        agilidade = @agilidade,
                        ataque = @ataque,
                        carisma = @carisma,
                        defesa = @defesa,
                        destreza = @destreza,
                        inteligencia = @inteligencia,
                        sorte = @sorte,
                        vida = @vida
                        where Id = @Id";
            }
            else
            {
                sql = "INSERT INTO personagem(nome, raca, classe, nivel, agilidade, ataque, carisma, defesa, destreza, inteligencia, sorte, vida) VALUES(@nome, @raca, @classe, @nivel, @agilidade, @ataque, @carisma, @defesa, @destreza, @inteligencia, @sorte, @vida);";
            }

            using (var conn = _conexao.AbrirConexao())
            {
                conn.Execute(sql, model);
            }

            return(RedirectToAction("Index"));
        }
コード例 #4
0
        public PersonagemViewModel ObterPorId(long id)
        {
            var personagemCacheado = _distributedCache.GetString(id.ToString());

            if (!string.IsNullOrEmpty(personagemCacheado))
            {
                return(JsonConvert.DeserializeObject <PersonagemViewModel>(personagemCacheado));
            }

            var request   = new RestRequest("characters/{id}", Method.GET);
            var timeStamp = DateTime.UtcNow.Ticks.ToString();

            request.AddUrlSegment("id", id);
            request.AddParameter("ts", timeStamp);
            request.AddParameter("apikey", _publicKey);
            request.AddParameter("hash", GerarHash(timeStamp, _publicKey, _privateKey));
            var response = _restClient.Get(request);

            if (!response.IsSuccessful)
            {
                return(null);
            }

            dynamic             resultado  = JsonConvert.DeserializeObject <dynamic>(response.Content);
            PersonagemViewModel personagem = JsonConvert.DeserializeObject <PersonagemViewModel>(JsonConvert.SerializeObject(resultado.data.results[0]));

            _distributedCache.SetString(personagem.Id.ToString(), JsonConvert.SerializeObject(personagem));
            return(personagem);
        }
コード例 #5
0
        public IActionResult Put([FromBody] PersonagemViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                NotificarErros();
                return(Response(vm));
            }

            _servicosApp.Atualizar(vm);

            return(Response(vm));
        }
コード例 #6
0
        public async Task <ActionResult> EditAsync(int id)
        {
            HttpClient          httpClient = new HttpClient();
            HttpResponseMessage response   = await httpClient.GetAsync(uriBase + id.ToString());

            string serialized = await response.Content.ReadAsStringAsync();

            PersonagemViewModel p = await Task.Run(() =>
                                                   JsonConvert.DeserializeObject <PersonagemViewModel>(serialized));

            return(View(p));
        }
コード例 #7
0
        public async Task <ActionResult> EditAsync(PersonagemViewModel p)
        {
            HttpClient httpClient = new HttpClient();

            var content = new StringContent(JsonConvert.SerializeObject(p));

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            HttpResponseMessage response = await httpClient.PutAsync(uriBase, content);

            TempData["Mensagem"] = string.Format("Personagem {0}, classe {1} atualizado com sucesso!", p.Nome, p.Classe);

            return(RedirectToAction("Index"));
        }
コード例 #8
0
        public async Task <ActionResult> CreateAsync(PersonagemViewModel p)
        {
            HttpClient httpClient = new HttpClient();

            var content = new StringContent(JsonConvert.SerializeObject(p));

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            HttpResponseMessage response = await httpClient.PostAsync(uriBase, content);

            string serialized = await response.Content.ReadAsStringAsync();

            await Task.Run(() =>
                           JsonConvert.DeserializeObject <List <PersonagemViewModel> >(serialized));

            TempData["Mensagem"] = string.Format("Personagem {0} Salvo com sucesso!", p.Nome);

            return(RedirectToAction("Index"));
        }
コード例 #9
0
        void IBaseServicosApp <PersonagemViewModel> .Inserir(PersonagemViewModel viewModel)
        {
            var personagem = _mapper.Map <Personagem>(viewModel);

            _servicos.Inserir(personagem);
        }