コード例 #1
0
ファイル: CepController.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Obtem um cep e converte em Model
        /// </summary>
        /// <param name="id"></param>
        /// <param name="model"></param>
        /// <param name="mensagemErro"></param>
        /// <returns></returns>
        private bool ObterCep(Guid id, ref CepModel model, ref string mensagemErro)
        {
            //Preparar a requisição e o retorno
            RetornoObterDto <CepDto> retorno       = new RetornoObterDto <CepDto>();
            RequisicaoObterDto       requisicaoDto = new RequisicaoObterDto()
            {
                Id            = id,
                Identificacao = SessaoUsuario.SessaoLogin.Identificacao,
                IdUsuario     = SessaoUsuario.SessaoLogin.IdUsuario
            };

            //Consumir o serviço
            CepBll cepBll = new CepBll(true);

            cepBll.Obter(requisicaoDto, ref retorno);

            //Tratar o retorno
            if (retorno.Retorno == false)
            {
                mensagemErro = retorno.Mensagem;
                return(false);
            }
            else
            {
                //Converter para Model
                return(model.ConverterDtoParaModel(retorno.Entidade, ref mensagemErro));
            }
        }
コード例 #2
0
        async Task BuscaCep()
        {
            if (string.IsNullOrWhiteSpace(lblCep.Text))
            {
                await DisplayAlert("Alerta!", "Digite o Cep para procurar.", "OK");

                return;
            }
            IsBusy = true;
            CepService srvCep = new CepService();
            CepModel   cep    = new CepModel();

            cep = await srvCep.BuscaCep(lblCep.Text);

            IsBusy = false;
            if (cep.Cep == null)
            {
                await DisplayAlert("Alerta!", "Falha ao procurar o Cep.", "OK");

                return;
            }
            else
            {
                lblEndereco.Text    = cep.Logradouro;
                lblMunicipio.Text   = cep.Localidade;
                lblEstado.Text      = cep.UF;
                lblBairro.Text      = cep.Bairro;
                lblComplemento.Text = cep.Complemento;
            }
        }
コード例 #3
0
ファイル: Utilidades.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Valide se o endereço foi preenchido, caso o CEP seja informado
        /// </summary>
        /// <param name="model"></param>
        /// <param name="erros"></param>
        /// <returns></returns>
        public static bool ValidarEndereco(CepModel model, ref Dictionary <string, string> erros)
        {
            if (string.IsNullOrWhiteSpace(model.Cep))
            {
                return(true);
            }

            bool retorno = true;

            if (string.IsNullOrWhiteSpace(model.Logradouro))
            {
                erros.Add("Endereco.Logradouro", "O logradouro é obrigatório para incluir o endereço.");
                retorno = false;
            }

            if (string.IsNullOrWhiteSpace(model.Bairro))
            {
                erros.Add("Endereco.Bairro", "O bairro é obrigatório para incluir o endereço.");
                retorno = false;
            }

            if (string.IsNullOrWhiteSpace(model.Cidade))
            {
                erros.Add("Endereco.Cidade", "A cidade é obrigatória para incluir o endereço.");
                retorno = false;
            }

            return(retorno);
        }
コード例 #4
0
        public async Task <ActionResult> Buscando(String id)
        {
            var cepModel = new CepModel();

            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                //Não mostrar:
                Headless = true
                           //Mostrar:
                           //Headless = false
            });

            //Url Correios
            string fullUrl = "http://www.buscacep.correios.com.br/sistemas/buscacep/BuscaCepEndereco.cfm";

            //Abertura de pagina
            var page = await browser.NewPageAsync();

            var timeout = (int)TimeSpan.FromSeconds(30).TotalMilliseconds;

            page.DefaultNavigationTimeout = timeout;
            page.DefaultTimeout           = timeout;
            var options = new NavigationOptions {
                Timeout = timeout
            };

            await page.GoToAsync(fullUrl, options);

            //Preenchimento e clique
            await page.TypeAsync("[name='relaxation']", id);

            await page.ClickAsync("[value='Buscar']");

            try
            {
                //Obter dados
                var _obterDados = new ObterDados();

                var _logradouro = _obterDados.GetLogradouro(page);
                cepModel.logradouro = await _logradouro;

                var _bairro = _obterDados.GetBairro(page);
                cepModel.bairro = await _bairro;

                var _estado = _obterDados.GetEstado(page);
                cepModel.estado = await _estado;

                await browser.CloseAsync();

                cepModel.cep = id;
                //Fim Obter dados
            }
            catch
            {
                Invalido();
            }

            return(View(cepModel));
        }
コード例 #5
0
        public async Task<CepModel> GetCepDetails(string cep)
        {
            if (_cepApiOptions == null)
                throw new ConfigurationErrorsException("Cep API Url setting must be configured!");

            ICepClientApiService client = RestService.For<ICepClientApiService>(_cepApiOptions.Url);

            CepModel cepDetails = await client.GetAddressAsync(cep);

            return cepDetails;
        }
コード例 #6
0
ファイル: CepController.cs プロジェクト: n-bam/pizza_byte
        public ActionResult Incluir(CepModel model)
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            //Validar a model recebida
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Converter para DTO
            CepDto cepDto       = new CepDto();
            string mensagemErro = "";

            if (!model.ConverterModelParaDto(ref cepDto, ref mensagemErro))
            {
                ModelState.AddModelError("", $"Erro ao converter para Dto: {mensagemErro}");
                return(View(model));
            }

            cepDto.Id = Guid.NewGuid();

            //Preparar requisição e retorno
            RetornoDto retorno = new RetornoDto();
            RequisicaoEntidadeDto <CepDto> requisicaoDto = new RequisicaoEntidadeDto <CepDto>()
            {
                EntidadeDto   = cepDto,
                Identificacao = SessaoUsuario.SessaoLogin.Identificacao,
                IdUsuario     = SessaoUsuario.SessaoLogin.IdUsuario
            };

            //Consumir o serviço
            CepBll cepBll = new CepBll(true);

            cepBll.Incluir(requisicaoDto, ref retorno);

            //Verificar o retorno
            if (retorno.Retorno == false)
            {
                //Se houver erro, exibir na tela de inclusão
                ModelState.AddModelError("", retorno.Mensagem);
                return(View(model));
            }

            TempData["Retorno"] = "INCLUIDO";

            //Retornar para index
            return(RedirectToAction("Index"));
        }
コード例 #7
0
ファイル: CepController.cs プロジェクト: n-bam/pizza_byte
        public ActionResult Editar(CepModel model)
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            //Valida a entidade recebida
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Converte para DTO
            CepDto cepDto       = new CepDto();
            string mensagemErro = "";

            if (!model.ConverterModelParaDto(ref cepDto, ref mensagemErro))
            {
                ViewBag.MensagemErro = mensagemErro;
                return(View("Erro"));
            }

            //Preparar requisição e retorno
            RetornoDto retorno = new RetornoDto();
            RequisicaoEntidadeDto <CepDto> requisicaoDto = new RequisicaoEntidadeDto <CepDto>()
            {
                EntidadeDto   = cepDto,
                Identificacao = SessaoUsuario.SessaoLogin.Identificacao,
                IdUsuario     = SessaoUsuario.SessaoLogin.IdUsuario
            };

            //Consumir o serviço
            CepBll cepBll = new CepBll(true);

            cepBll.Editar(requisicaoDto, ref retorno);

            //Tratar o retorno
            if (retorno.Retorno == false)
            {
                ModelState.AddModelError("", retorno.Mensagem);
                return(View(model));
            }

            TempData["Retorno"] = "ALTERADO";

            //Voltar para o visualizar do cep
            return(RedirectToAction("Index"));
        }
コード例 #8
0
ファイル: CepController.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Chama a tela para incluir um cep
        /// </summary>
        /// <returns></returns>
        public ActionResult Incluir()
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            //Cep a ser incluído
            CepModel model = new CepModel()
            {
                Id = Guid.NewGuid()
            };

            TempData["Retorno"] = "INCLUINDO";

            //Chamar a view
            return(View(model));
        }
コード例 #9
0
        public async Task <CepModel> BuscaCep(string cep)
        {
            if (string.IsNullOrEmpty(cep))
            {
                return(null);
            }
            else
            {
                var client = new HttpClient();
                client.MaxResponseContentBufferSize = 256000;
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var uri      = new Uri(string.Format("https://viacep.com.br/ws/{0}/json/", cep));
                var response = await client.GetAsync(uri);

                if (response.StatusCode == HttpStatusCode.NotFound)
                {
                    _cep = new CepModel();
                }
                else
                {
                    string content = await response.Content.ReadAsStringAsync();

                    JObject output = JObject.Parse(content);
                    _cep = new CepModel();
                    if (output.ToString().Contains("erro"))
                    {
                        return(_cep);
                    }
                    _cep.Cep         = output.SelectToken("cep").ToString()?.Trim();
                    _cep.Logradouro  = output.SelectToken("logradouro").ToString()?.Trim();
                    _cep.Complemento = output.SelectToken("complemento").ToString()?.Trim();
                    _cep.Bairro      = output.SelectToken("bairro").ToString()?.Trim();
                    _cep.Localidade  = output.SelectToken("localidade").ToString()?.Trim();
                    _cep.UF          = output.SelectToken("uf").ToString()?.Trim();
                    _cep.Ibge        = output.SelectToken("ibge").ToString()?.Trim();
                }
                return(_cep);
            }
        }
コード例 #10
0
ファイル: CepController.cs プロジェクト: n-bam/pizza_byte
        /// <summary>
        /// Chama a tela para editar um cep
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Editar(Guid id)
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            //Model a ser populada
            CepModel model           = new CepModel();
            string   mensagemRetorno = "";

            //Obtem o cep pelo ID
            if (!this.ObterCep(id, ref model, ref mensagemRetorno))
            {
                ViewBag.MensagemErro = mensagemRetorno;
                return(View("Erro"));
            }

            TempData["Retorno"] = "EDITANDO";

            //Chamar a view
            return(View(model));
        }
コード例 #11
0
ファイル: DatabaseHelper.cs プロジェクト: nilobaz/desafio-cep
 public void InsertCep(CepModel Cep)
 {
     sqliteconnection.Insert(Cep);
 }
コード例 #12
0
        public void CepMapperTest()
        {
            var model = new CepModel
            {
                Id          = Guid.NewGuid(),
                Cep         = Faker.RandomNumber.Next(1, 10000).ToString(),
                Logradouro  = Faker.Address.StreetName(),
                Numero      = "",
                CreateAt    = DateTime.UtcNow,
                UpdateAt    = DateTime.UtcNow,
                MunicipioId = Guid.NewGuid()
            };

            var listaEntity = new List <CepEntity>();

            for (int i = 0; i < 5; i++)
            {
                var item = new CepEntity
                {
                    Id          = Guid.NewGuid(),
                    Cep         = Faker.RandomNumber.Next(1, 10000).ToString(),
                    Logradouro  = Faker.Address.StreetName(),
                    Numero      = Faker.RandomNumber.Next(1, 10000).ToString(),
                    CreateAt    = DateTime.UtcNow,
                    UpdateAt    = DateTime.UtcNow,
                    MunicipioId = Guid.NewGuid(),
                    Municipio   = new MunicipioEntity
                    {
                        Id      = Guid.NewGuid(),
                        Nome    = Faker.Address.UsState(),
                        CodIbge = Faker.RandomNumber.Next(1, 10000),
                        UfId    = Guid.NewGuid(),
                        Uf      = new UfEntity
                        {
                            Id    = Guid.NewGuid(),
                            Nome  = Faker.Address.UsState(),
                            Sigla = Faker.Address.UsState().Substring(1, 3)
                        }
                    }
                };
                listaEntity.Add(item);
            }

            //Model => Entity
            var entity = Mapper.Map <CepEntity>(model);

            Assert.Equal(entity.Id, model.Id);
            Assert.Equal(entity.Logradouro, model.Logradouro);
            Assert.Equal(entity.Numero, model.Numero);
            Assert.Equal(entity.Cep, model.Cep);
            Assert.Equal(entity.CreateAt, model.CreateAt);
            Assert.Equal(entity.UpdateAt, model.UpdateAt);

            //Entity para Dto
            var cepDto = Mapper.Map <CepDto>(entity);

            Assert.Equal(cepDto.Id, entity.Id);
            Assert.Equal(cepDto.Logradouro, entity.Logradouro);
            Assert.Equal(cepDto.Numero, entity.Numero);
            Assert.Equal(cepDto.Cep, entity.Cep);

            var cepDtoCompleto = Mapper.Map <CepDto>(listaEntity.FirstOrDefault());

            Assert.Equal(cepDtoCompleto.Id, listaEntity.FirstOrDefault().Id);
            Assert.Equal(cepDtoCompleto.Cep, listaEntity.FirstOrDefault().Cep);
            Assert.Equal(cepDtoCompleto.Logradouro, listaEntity.FirstOrDefault().Logradouro);
            Assert.Equal(cepDtoCompleto.Numero, listaEntity.FirstOrDefault().Numero);
            Assert.NotNull(cepDtoCompleto.Municipio);
            Assert.NotNull(cepDtoCompleto.Municipio.uf);

            var listaDto = Mapper.Map <List <CepDto> >(listaEntity);

            Assert.True(listaDto.Count() == listaEntity.Count());
            for (int i = 0; i < listaDto.Count(); i++)
            {
                Assert.Equal(listaDto[i].Id, listaEntity[i].Id);
                Assert.Equal(listaDto[i].Cep, listaEntity[i].Cep);
                Assert.Equal(listaDto[i].Logradouro, listaEntity[i].Logradouro);
                Assert.Equal(listaDto[i].Numero, listaEntity[i].Numero);
            }

            var cepDtoCreateResult = Mapper.Map <CepDtoCreateResult>(entity);

            Assert.Equal(cepDtoCreateResult.Id, entity.Id);
            Assert.Equal(cepDtoCreateResult.Cep, entity.Cep);
            Assert.Equal(cepDtoCreateResult.Logradouro, entity.Logradouro);
            Assert.Equal(cepDtoCreateResult.Numero, entity.Numero);
            Assert.Equal(cepDtoCreateResult.CreateAt, entity.CreateAt);

            var cepDtoUpdateResult = Mapper.Map <CepDtoUpdateResult>(entity);

            Assert.Equal(cepDtoUpdateResult.Id, entity.Id);
            Assert.Equal(cepDtoUpdateResult.Cep, entity.Cep);
            Assert.Equal(cepDtoUpdateResult.Logradouro, entity.Logradouro);
            Assert.Equal(cepDtoCreateResult.Numero, entity.Numero);
            Assert.Equal(cepDtoUpdateResult.UpdateAt, entity.UpdateAt);

            //Dto para Model
            cepDto.Numero = "";
            var cepModel = Mapper.Map <CepModel>(cepDto);

            Assert.Equal(cepModel.Id, cepDto.Id);
            Assert.Equal(cepModel.Cep, cepDto.Cep);
            Assert.Equal(cepModel.Logradouro, cepDto.Logradouro);
            Assert.Equal("S/N", cepModel.Numero);

            var cepDtoCreate = Mapper.Map <CepDtoCreate>(cepModel);

            Assert.Equal(cepDtoCreate.Cep, cepModel.Cep);
            Assert.Equal(cepDtoCreate.Logradouro, cepModel.Logradouro);
            Assert.Equal(cepDtoCreate.Numero, cepModel.Numero);

            var cepDtoUpdate = Mapper.Map <CepDtoUpdate>(cepModel);

            Assert.Equal(cepDtoUpdate.Id, cepModel.Id);
            Assert.Equal(cepDtoUpdate.Cep, cepModel.Cep);
            Assert.Equal(cepDtoUpdate.Logradouro, cepModel.Logradouro);
            Assert.Equal(cepDtoUpdate.Numero, cepModel.Numero);
        }
コード例 #13
0
        public void Teste_Mapper()
        {
            var model = new CepModel
            {
                Id          = Guid.NewGuid(),
                Cep         = Faker.RandomNumber.Next(1, 10000).ToString(),
                Logradouro  = Faker.Address.StreetName(),
                Numero      = Faker.RandomNumber.Next(1, 10000).ToString(),
                MunicipioId = Guid.NewGuid(),
                CreateAt    = DateTime.Now,
                UpdateAt    = DateTime.Now,
            };


            var listaEntity = new List <CepEntity>();

            for (int i = 0; i < 5; i++)
            {
                var item = new CepEntity
                {
                    Id          = Guid.NewGuid(),
                    Cep         = Faker.RandomNumber.Next(1, 10000).ToString(),
                    Logradouro  = Faker.Address.StreetName(),
                    Numero      = Faker.RandomNumber.Next(1, 10000).ToString(),
                    MunicipioId = Guid.NewGuid(),
                    CreateAt    = DateTime.Now,
                    UpdateAt    = DateTime.Now,
                    Municipio   = new MunicipioEntity()
                    {
                        Id      = Guid.NewGuid(),
                        Nome    = Faker.Address.City(),
                        CodIBGE = Faker.RandomNumber.Next(1, 10000),
                        UfId    = Guid.NewGuid(),
                        Uf      = new UfEntity()
                        {
                            Id    = Guid.NewGuid(),
                            Nome  = Faker.Address.UsState(),
                            Sigla = Faker.Address.UsState().Substring(1, 3)
                        }
                    }
                };

                listaEntity.Add(item);
            }

            //Model to Entity
            var dtoToEntity = Mapper.Map <CepEntity>(model);

            Assert.Equal(dtoToEntity.Id, model.Id);
            Assert.Equal(dtoToEntity.Cep, model.Cep);
            Assert.Equal(dtoToEntity.Logradouro, model.Logradouro);
            Assert.Equal(dtoToEntity.CreateAt, model.CreateAt);
            Assert.Equal(dtoToEntity.UpdateAt, model.UpdateAt);


            //Entity to DTO
            var UfDto = Mapper.Map <CepDto>(dtoToEntity);

            Assert.Equal(UfDto.Id, dtoToEntity.Id);
            Assert.Equal(UfDto.Cep, dtoToEntity.Cep);
            Assert.Equal(UfDto.Logradouro, dtoToEntity.Logradouro);

            var listDto = Mapper.Map <List <CepDto> >(listaEntity);

            Assert.True(listaEntity.Count == listDto.Count());
            for (int i = 0; i < listDto.Count(); i++)
            {
                Assert.Equal(listDto[i].Id, listaEntity[i].Id);
                Assert.Equal(listDto[i].Cep, listaEntity[i].Cep);
                Assert.Equal(listDto[i].Logradouro, listaEntity[i].Logradouro);
            }

            var ufModel = Mapper.Map <CepDto>(dtoToEntity);
        }
コード例 #14
0
 public void InsertCep(CepModel cep)
 {
     _databaseHelper.InsertCep(cep);
 }