public async Task <IActionResult> Create([Bind("IdReclamacao,Data,Empresa,Telefone,Email,Descricao,IdUsuario")] Reclamacao reclamacao)
        {
            var usuario = await _usuarioRepositorio.PegarUsuarioLogado(User);

            if (ModelState.IsValid && usuario != null)
            {
                reclamacao.IdUsuario = usuario.Id;
                await _reclamacaoRepositorio.Inserir(reclamacao);

                _logger.LogInformation("Nova Reclamacao cadastrada");
                return(RedirectToAction("Index", "Usuarios"));
            }

            _logger.LogError("Erro no cadastro de reclamacao");
            return(View(reclamacao));
        }
Beispiel #2
0
        public async Task <ActionResult <UserToken> > Create([FromBody] Reclamacao reclamacao)
        {
            //var usuario = await _usuarioRepositorio.PegarUsuarioPeloEmail(reclamacao.Usuario.Email);
            //PasswordHasher<Usuario> passwordHasher = new PasswordHasher<Usuario>();

            //var result = await ApiUsuariosController_signInManager.PasswordSignInAsync(reclamacao.Usuario.UserName, reclamacao.Usuario.PasswordHash,
            // isPersistent: false, lockoutOnFailure: false);

            LoginViewModel login = new LoginViewModel();

            login.Email = reclamacao.Usuario.Email.ToLower();
            login.Senha = reclamacao.Usuario.PasswordHash;

            var usuario = await _usuarioRepositorio.PegarUsuarioPeloEmail(login.Email);


            //PasswordHasher<Usuario> passwordHasher = new PasswordHasher<Usuario>();

            int result = await _apiUsuarios.LoginInterno(login);

            if (result == 0)
            {
                return(View(reclamacao));
            }


            // await _signInManager.PasswordSignInAsync(usuario.UserName, login.Senha,
            //isPersistent: false, lockoutOnFailure: false);

            //await BuildToken(login);


            if (ModelState.IsValid && usuario != null)
            {
                string endereco = "";
                string numero   = "";
                string bairro   = "";
                string cidade   = "";
                string estado   = "";
                string cep      = "";
                string img      = "";

                //
                try
                {
                    HttpClient client   = new HttpClient();
                    var        response = await client.GetStringAsync("https://maps.googleapis.com/maps/api/geocode/json?latlng=" + reclamacao.Latitude + "," + reclamacao.Longitude + "&key=AIzaSyCZWaCsDUe9eZwKkuz5Zzr4l5_k1iERHwY");

                    //var response = await client.GetStringAsync("https://maps.googleapis.com/maps/api/geocode/json?latlng=-21.2716850,-48.4966450&key=AIzaSyCZWaCsDUe9eZwKkuz5Zzr4l5_k1iERHwY");
                    //var endereco = JsonConvert.DeserializeObject(response);
                    //var json_serializer = new JavaScriptSerializer();
                    //var routes_list = (IDictionary<string, object>)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
                    //Console.WriteLine(routes_list["test"]);
                    //var item = JsonConvert.DeserializeObject<object>(response);


                    ApiGeocoding end = new ApiGeocoding();

                    ApiGeocoding item = JsonConvert.DeserializeObject <ApiGeocoding>(response);



                    //var teste = JsonConvert.DeserializeObject <String> ( item["results"].ToString());

                    //object teste2 = teste["formatted_address"];

                    //var item2 = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(colecao.ToString());


                    //var colecao = item.Where(d => d.Key == "results").Select(d => d.Value);



                    //var colecao2 = colecao.Where(e => e.Key == "address_components").Select(e => e.Value);



                    //string teste = item["formatted_address"];


                    //var item2 = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(item.ToString());

                    numero   = item.results[0].address_components[0].long_name.ToString();  //numero
                    endereco = item.results[0].address_components[1].long_name.ToString();  //endereco
                    bairro   = item.results[0].address_components[2].long_name.ToString();  //bairro
                    cidade   = item.results[0].address_components[3].long_name.ToString();  //cidade
                    estado   = item.results[0].address_components[4].short_name.ToString(); //estado
                    item.results[0].address_components[5].long_name.ToString();             //pais
                    cep = item.results[0].address_components[6].long_name.ToString();       //cep



                    byte[] bytes = Convert.FromBase64String(reclamacao.Imagem);

                    using (MemoryStream myMemStream = new MemoryStream(bytes))
                    {
                        System.Drawing.Image fullsizeImage = System.Drawing.Image.FromStream(myMemStream);

                        var width = 800;

                        var height = 800;
                        System.Drawing.Image newImage = fullsizeImage.GetThumbnailImage(width, height, null, IntPtr.Zero);

                        using (var mst = new MemoryStream())
                        {
                            newImage.Save(mst, System.Drawing.Imaging.ImageFormat.Png);
                            bytes = mst.ToArray();
                        }



                        //bytes = newImage.to

                        using (var myResult = new MemoryStream())
                        {
                            //newImage.Save(myResult, System.Drawing.Imaging.ImageFormat.Png);

                            //string arqImg = "../DenuncieSpam/wwwroot/images/incidentes/" + System.Guid.NewGuid() + ".png";
                            string arqImg = _appEnvironment.WebRootPath + Path.DirectorySeparatorChar + "images" + Path.DirectorySeparatorChar + "incidentes" + Path.DirectorySeparatorChar + System.Guid.NewGuid().ToString() + ".png"; //"/images/incidentes/" + System.Guid.NewGuid() + ".png";

                            while (System.IO.File.Exists(arqImg))
                            {
                                //arqImg = "../DenuncieSpam/wwwroot/images/incidentes/" + System.Guid.NewGuid() + ".png";
                                arqImg = _appEnvironment.WebRootPath + Path.DirectorySeparatorChar + "images" + Path.DirectorySeparatorChar + "incidentes" + Path.DirectorySeparatorChar + System.Guid.NewGuid().ToString() + ".png";
                                //arqImg = "/images/incidentes/" + System.Guid.NewGuid() + ".png";
                            }

                            System.IO.File.WriteAllBytes(arqImg, bytes);

                            reclamacao.Imagem = arqImg;
                        }
                    }


                    //System.IO.Directory.GetFiles("../DenuncieSpam/wwwroot/images/incidentes/System.Guid.NewGuid().png");
                }
                catch (Exception ex)
                {
                }
                reclamacao.Endereco = endereco + ", " + numero + ", " + bairro + ", " + cidade + ", " + estado + ", " + cep;

                reclamacao.Data      = DateTime.Now;
                reclamacao.Telefone  = usuario.Telefone;
                reclamacao.Email     = usuario.Email;
                reclamacao.IdUsuario = usuario.Id;
                await _reclamacaoRepositorio.Inserir(reclamacao);

                _logger.LogInformation("Nova Reclamacao cadastrada");
            }

            _logger.LogError("Erro no cadastro de reclamacao");
            return(View(reclamacao));
        }