# Script "cacahuète"
#
# Script tirant au hasard dans une liste pour associer des personnes
# à des adresses mails. Envoie un mail aux gens, leur indiquant à qui ils doivent faire un cadeau
# (tirage sans remise où il est impossible de se tirer soi-même)
# 
# Les participants sont dans un fichier "participants.dat", qui doit se trouver dans le répertoire de travail.
# Le fichier a le format:
#
#
#		Nom 1!adresse.1@isp.com
#		Nom 2!adresse.2@isp.com
#
# C'est-à-dire un tableau de deux colonnes séparées par <!>


tirage <- function (table, nombre) {
	# factors are expanded
	cbind(sample(table[,1],nombre), sample(table[,2],nombre))
}

table<-read.table("participants.dat", sep="!")
nombre<-dim(table)[1]

resultats<-tirage(table, nombre)
retirer<-T

while (retirer) {
	if (all(resultats[,1]!=resultats[,2])) { retirer<-F } 
	else { resultats<-tirage(table, nombre) }
}

resultats<-data.frame(table[resultats[,1],1],table[resultats[,2],2])

for (i in 1:dim(resultats)[1]) {
	commandline<-paste(
	'echo "Subject: Cadeaux du Nouvel An!\n',
	'Disposition-Notification-To: Nicolas Mazziotta <nicolas.mazziotta@swing.be>\n',
	'User-Agent: Postfix! Qui a lu cette ligne?\n',
	'To: ',
	table[table[,2]==as.character(resultats[i,2]),1],
	' <',
	as.character(resultats[i,2]),
	'>',
	'\nContent-Type: text/plain;\n\tcharset=UTF-8\n\n',
	'Salut!\n\nTu as été aléatoirement choisi(e) pour faire un petit cadeau (le budget est de 15 euros) à... (roulements)...\n\n\t',
	" => ",
	as.character(resultats[i,1]),
	'\n\nSi cette personne est toi-même (et uniquement dans ce cas), c\'est que j\'ai encore fait n\'importe quoi... contacte-moi *TOUT DE SUITE* pour que je fasse un nouveau tirage. ',
	'Sinon, la machine a décidé seule qui offrirait un cadeau à qui; personne d\'autre que toi n\'est au courant de son choix, alors motus!\n\n',
	'On se revoit au Nouvel An, Joyeux Noël!\n\n\n\tNicolas\n\nPS: désolé si tu as des problèmes avec les accents dans ce message. ',
	'Si c\'est ton cas, essaye de l\'afficher en UTF-8 en ajustant les propriétés d\'affichage de ton client ',
	'-- ceux qui utilisent outlook ou le webmail de gmail peuvent aller se pendre immédiatement.\n\n"',
	sep=""
	);
	system(paste(commandline, '| sendmail -f nicolas.mazziotta@swing.be -t', as.character(resultats[i,2])), intern=T)
}

