diogomene15 / TrabalhoFinal-GCS

Trabalho final da disciplina de Gerência de Configuração de Software, realizado pelos alunos Diogo de Lima Menezes, João Pedro Cintra Karpinski e Luis Henrique Souza Carvalho
0 stars 0 forks source link

Permitir preenchimento automático de informações de cidade, ao cadastrar endereços #9

Open diogomene15 opened 1 month ago

diogomene15 commented 1 month ago

O projeto atual da aplicação permite aos usuários adicionar endereços a partir das informações de Descrição, Latitude e Longitude. No entanto, os usuários também precisam selecionar manualmente uma cidade relacionada ao endereço, onde as cidades são cadastradas pelo próprio usuário com as informações de Cidade (nome da cidade) e Estado (sigla ou nome do estado). Essa abordagem pode levar a erros de digitação ou inconsistências nos nomes e siglas dos estados, resultando em dados incorretos e dificultando a integridade e a uniformidade das informações no sistema.

A necessidade de cadastro manual de cidade e estado aumenta a possibilidade de erros e torna o processo de adição de endereços mais complicado e propenso a inconsistências. Esses problemas não apenas afetam a qualidade dos dados armazenados, mas também podem causar confusão entre os usuários ao visualizar e gerenciar seus endereços.

Para resolver esse problema, proponho que se retire o cadastro manual de cidade e estado, e que essas informações sejam extraídas automaticamente a partir da seleção do usuário de uma latitude e longitude. A API do Google Maps oferece funcionalidades para obter informações detalhadas sobre a localização, incluindo o nome da cidade e o estado, com base nas coordenadas geográficas fornecidas.

Na tela de adição de endereço, o usuário deve continuar a fornecer a Descrição, Latitude e Longitude. No entanto, em vez de selecionar a cidade manualmente, a aplicação deve utilizar a API do Google Maps para obter e preencher automaticamente as informações da cidade e estado. Essa abordagem não apenas reduzirá a possibilidade de erros, mas também simplificará o processo de adição de endereços para o usuário.

No arquivo AddAddressFragment.java, podemos adicionar uma função para obter informações da cidade e do estado a partir da API do Google Maps:

private void fetchCityAndState(double latitude, double longitude) {
    Geocoder geocoder = new Geocoder(getContext(), Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
        if (addresses != null && !addresses.isEmpty()) {
            Address address = addresses.get(0);
            String city = address.getLocality();
            String state = address.getAdminArea();
            cityEditText.setText(city);
            stateEditText.setText(state);
        } else {
            Toast.makeText(getContext(), "Não foi possível obter a cidade e o estado.", Toast.LENGTH_SHORT).show();
        }
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(getContext(), "Erro ao obter a cidade e o estado.", Toast.LENGTH_SHORT).show();
    }
}

Essa função deve ser chamada após o usuário fornecer a latitude e longitude:

latitudeEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        double latitude = Double.parseDouble(latitudeEditText.getText().toString());
        double longitude = Double.parseDouble(longitudeEditText.getText().toString());
        fetchCityAndState(latitude, longitude);
    }
    // outros métodos do TextWatcher podem ser deixados em branco
});

Recomendo o envolvimento da equipe de Requisitos para revisar essa necessidade com o cliente, garantindo que a solução proposta atenda às expectativas e necessidades do usuário final. A equipe de Requisitos deve auxiliar a equipe de Desenvolvimento a entender melhor o problema e a delimitar uma solução efetiva. Essa abordagem deve ser discutida e validada em conjunto com a equipe de Desenvolvimento para garantir que todas as implicações técnicas sejam consideradas e abordadas adequadamente. Caso necessário, essa issue pode ser ramificada em sub-tarefas específicas para facilitar a gestão e a implementação das mudanças propostas.