void Program::readMessage() //Le uma mensagem escolhida pelo utilizador { cout << "\n\n **** Envio de Mensagens ****\n"; if (users.empty()) { cout << "Nao existem utilizadores para mandar mensagens. \nAdicione alguns e tente outra vez.\n"; hold(); return; } showAllUsers(); cout << "Escolha o utilizador que pretende ler mensagens: "; unsigned short temp; temp = handleChoice(0, users.size()); User* ChosenOne = &users[temp]; //E lido o utilizador escolhido como um apontador cout << endl; if (messageBoxes.empty()) { cout << "Nao ha caixas de mensagens. Adicione algumas e tente outra vez.\n"; hold(); return; } showAllMessageboxes(); cout << "Escolha a caixa de mensagens a que se pretende ligar: "; temp = handleChoice(0, messageBoxes.size()); MessageBox* ReadFrom = &messageBoxes[temp]; //E a messagebox para onde ler e lida tambem como apontador if (!ReadFrom->isRegistered(*ChosenOne)) { cout << "O utilizador escolhido nao esta registado na caixa. Por favor tente novamente.\n"; hold(); return; } if (!handleAuth(*ReadFrom, *ChosenOne)) return; vector<Message> msgs; msgs = ReadFrom->getAllMessagesFor(*ChosenOne); //E criado um vector contendo todas as mensagens enderecadas ao User escolhido if (msgs.empty()) { cout << "O utilizador nao tem mensagens.\n"; hold(); return; } showMessages(msgs); //Depois e apresentado ao utilizador a lista de mensagens totais cout << "Escolha a mensagem que pretende ler: "; temp = handleChoice(0, msgs.size()); //E ele escolhe a mensagem que quer ler. showMessage(msgs[temp]); hold(); }
void Program::sendMessage() //Envia uma mensagem de um utilizador para outro numa messagebox { cout << "\n\n **** Envio de Mensagens ****\n"; if (users.empty()) { cout << "Nao existem utilizadores para mandar mensagens. \nAdicione alguns e tente outra vez.\n"; hold(); return; } showAllUsers(); cout << "Escolha o emissor da mensagem: "; unsigned short temp; temp = handleChoice(0, users.size()); User* Sender = &users[temp]; cout << "Escolha o receptor da mensagem: "; temp = handleChoice(0, users.size()); User* Reciever = &users[temp]; cout << endl; if (messageBoxes.empty()) { cout << "Nao ha caixas de mensagens. Adicione algumas e tente outra vez.\n"; hold(); return; } showAllMessageboxes(); cout << "\n\nEscolha a caixa de mensagens para a qual pretende enviar o e-mail: "; temp = handleChoice(0, messageBoxes.size()); MessageBox* SendTo = &messageBoxes[temp]; if (!SendTo->isRegistered(*Reciever) || !SendTo->isRegistered(*Sender)) { cout << "Um dos utilizadores nao se encontra registado na caixa de mensagens. Por favor tente outra vez.\n"; hold(); return; } if (!handleAuth(*SendTo, *Sender)) return; //caso o utilizador escreva "\EXIT" o programa volta ao menu principal cout << "\n\nAssunto da Mensagem: "; string assunto; if (cin.peek() == '\n') cin.ignore(1000,'\n'); getline(cin, assunto); while (assunto.size() > 18) { cout << "O nome dado tem mais do que 18 caracteres. Rectifique este erro e tente novamente.\n"; getline(cin, assunto); } string conteudo; string temp2; cout << "Por favor escreva o conteudo da mensagem. Indique o fim da sua mensagem com uma linha consistindo apenas de um \".\"\n"; getline(cin, temp2); while (temp2 != ".") //Aqui, ate encontrar um "." em temp2, vai construindo o conteudo com as linhas de texto e um caracter endl apos cada linha //ja que cin ignora endlines { conteudo += temp2; getline(cin, temp2); conteudo += "\n"; } Message msg(*Sender, *Reciever, assunto, conteudo); SendTo->addMessage(msg); //Apos estarem reunidos todos os dados, constroi-se a mensagem e adiciona-se a messagebox cout << "\n **** Mensagem Enviada ****\n"; hold(); }