Beispiel #1
0
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();
}
Beispiel #2
0
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();
}