void Moderador::editarPonto(Logradouro &L,vector<Pessoa *> &usuarios){ int opcao,ncomentario; float area; string descricao,cep,rua,referencia,nomelocal; Comentario comentantigo,comentnovo; Usuario *ptrU; cout<<"Informacoes do local a ser editado: "<<endl; getch(); cout<<L; getch(); do{ cout<<"Escolha um dado para editar: "<<endl; getch(); cout<<"1. Nome: "<<endl; cout<<"2. Area: "<<endl; cout<<"3. Descricao: "<<endl; cout<<"4. Comentarios: "<<endl; cout<<"5. CEP: "<<endl; cout<<"6. Rua: "<<endl; cout<<"7. Referencia"<<endl; cout<<"8. Voltar: "<<endl; cin >> opcao; switch(opcao){ case 1: do{ cout<<"Digite o novo nome do local: "<<endl; cin >> nomelocal; nomelocal = Logradouro::validaNome(nomelocal); if (nomelocal == "Padrao"){ cout<<"Nome digitado e' invalido!"<<endl; getch(); } }while(nomelocal == "Padrao"); cout<<"Nome modificado de '"<<L.getNome()<<"' para '"<<nomelocal<<"'. "<<endl; L.setNome(nomelocal); getch(); break; case 2: do{ cout<<"Digite a nova area em km²(digite -1 caso nao saiba o valor correto): "<<endl; cin >> area; if (area == 0 || area < -1){ cout<<"Valor invalido!"<<endl; getch(); } }while(area == 0 || area < -1); cout<<"Area modificada de '"<<L.getArea()<<"' km² para '"<<area<<"' km². "<<endl; getch(); L.setArea(area); break; case 3: cout<<"Digite a nova descricao para o Local "<<L.getNome()<<": "<<endl; cin.sync(); getline(cin,descricao); cout<<"Descricao antiga: "<<endl; cout<<" - "<<L.getDescricao()<<"."<<endl; getch(); cout<<"Descricao nova: "<<endl; cout<<" - "<<descricao<<"."<<endl; getch(); L.setDescricao(descricao); break; case 4: if (L.getNComentarios() > 0){ L.mostrarComentarios(); do{ cout<<"Digite o numero do comentario que deseja editar: "<<endl; cin >> ncomentario; if (ncomentario < 1 || ncomentario > L.getNComentarios()){ cout<<"Opcao invalida!"<<endl; getch(); } }while(ncomentario < 1 || ncomentario > L.getNComentarios()); //modifica o comentario dentro do objeto B do tipo Bairro comentantigo = L.getComentario(ncomentario); comentnovo = comentantigo; this->editarComentario(comentnovo); L.setComentario(ncomentario,comentnovo); for (unsigned int i = 0;i < usuarios.size();i++){ //atualiza com o texto novo os comentários de todos os usuários ptrU = dynamic_cast<Usuario *>(usuarios[i]); if(ptrU && ptrU->getUsername() == comentantigo.getNomeUsuario()) this->editarComentario(*ptrU,comentantigo.getTexto(),comentnovo.getTexto()); } } else{ cout<<"O local nao tem nenhum comentario!"<<endl; getch(); } break; case 5: do{ cout<<"Digite o novo CEP: "<<endl; cin >> cep; cep = Logradouro::validaCEP(cep); if (cep == "00000000000") cout<<"CEP invalido!"<<endl; }while(cep == "00000000000"); cout<<"CEP modificado de '"<<L.getCEP()<<"' para '"<<cep<<"'. "<<endl; getch(); L.setCEP(cep); break; case 6: cout<<"Digite o novo nome da rua do local '"<<L.getNome()<<"'. "<<endl; cin.sync(); getline(cin,rua); cout<<"Rua modificada de '"<<L.getRua()<<"' para '"<<rua<<"'. "<<endl; getch(); L.setRua(rua); break; case 7: cout<<"Digite a nova referencia do local '"<<L.getNome()<<"'. "<<endl; cin.sync(); getline(cin,referencia); cout<<"Referencia modificada de '"<<L.getReferencia()<<"' para '"<<referencia<<"'. "<<endl; getch(); L.setReferencia(referencia); break; case 8: break; default: cout<<"Opcao invalida!"<<endl; getch(); break; }