#include <stdio.h>
#include <string.h>
#include "saelo.h"

void main(void)
{
	char nom[15], prenom[15], fnom[15], fprenom[15], bCard, member, categ, recharge, acti1[15], acti2[15], acti3[15];
	int erreur, numAd, age, state, acti, passeoupas, ptsbought,ptsbonus, numCard, avoiravecevann, testnom, testpnom, found = 0, ptrecharge, nbacti, numacti, s1, s2, s3, m1, m2, m3, f1, f2, f3, b1, b2, b3, z1, z2, z3;

	FILE *f;
	f = fopen("donneeClient.don","r");
	if (f==NULL){printf("Erreur ouverture fichier clients"); fclose(f); return;}




	//accueil
	printf("Bienvenue ! Déjà membre ou création de compte ? Créer (C) ou Membre (M)\n");
	scanf("%c%*c", &member);
	bCard = Card();
	erreur = Fillvar(f, &numAd, fnom, fprenom, &age, &state, &acti, &passeoupas, &ptsbought, &ptsbonus, &categ);




	//si nouveau client / créer nouveau compte
	if (member == 'C')
	{
		/*creationCompte(int avoiravecevann);*/
		avoiravecevann = 2;
	}




	//demander nom & prénom
	Name(nom, prenom);


	//si client n'a pas son numéro de carte
	if (bCard == 'N')
	{

		puts("Recherche de la carte !");

		testnom = strcmp(fnom, nom);//comparer nom du fichier et nom donné
		testpnom = strcmp(fprenom, prenom);//comparer prénom du fichier et prénom donné


		while (erreur != -1 && found == 0)// tant que pas d'erreur ou pas trouvé
		{
			if (testnom == 0)
				{
					if (testpnom == 0)
						found = 1;
						break;
				}

			erreur = Fillvar(f, &numAd, fnom, fprenom, &age, &state, &acti, &passeoupas, &ptsbought, &ptsbonus, &categ);//rescan
			testnom = strcmp(fnom, nom);//recomparaison nom
			testpnom = strcmp(fprenom, prenom);//recomparaison prénom
		}

		if(erreur == -1 || found == 0)//si pas trouvé ou fin de fichier
		{
			printf("Recherche non aboutie : numéro non enregistré...\n");//si le client n'est au final pas enregistré
			return;
		}



		if (found == 1)//si trouvé
		{
			if (passeoupas == 1)//si client déjà passé
			{
				printf("Déjà passé, nombre possible de passage dans une journée : 1...\n");
				return;
			}
			printf("La carte dispose de %d points, rechargement de carte souhaité ? (O/N) \n", ptsbought);//infos sur ses points + recharge ?
			scanf("%c%*c", &recharge);


			if (recharge == 'O')//si client souhaite recharger carte
			{
				printf("De combien de dizaine de points souhaitez vous recharger ?\n");
				scanf("%d%*c", &ptrecharge);
				printf("%d", ptrecharge);
			}
		}
	}




	if (bCard == 'O')//si client a la carte
	{
		printf("Veuillez entrer numéro de carte ?\n");
		scanf("%d%*c", &numCard);
		while (numCard < 100000 || numCard > 999999)//vérifier numéro carte correct (6 chiffres)
		{
			printf("Veuillez saisir un numéro de carte correct\n");
			scanf("%d%*c", &numCard);
		}


		erreur = Fillvar(f, &numAd, fnom, fprenom, &age, &state, &acti, &passeoupas, &ptsbought, &ptsbonus, &categ);//scanner le document et récupérer les variables

		while (numCard != numAd && erreur == 0)//tant que numéro de carte donné différent de celui du fichier
		{
			erreur = Fillvar(f, &numAd, fnom, fprenom, &age, &state, &acti, &passeoupas, &ptsbought, &ptsbonus, &categ);//rescan
		}

		if (passeoupas == 1)
		{
			printf("Déjà passé, nombre possible de passage dans une journée : 1...");
			return;
		}

		printf("La carte dispose de %d points, rechargement de carte souhaité ? (O/N) \n", ptsbought);//nombre de points qu'il a + recharger ou non
		scanf("%c", &recharge);

	}

	printf("Combien d'activités souhaitées aujourd'hui ? (max 3)\n");
	scanf("%d%*c", &nbacti);
	while (nbacti > 3 || nbacti <= 0)
	{
		printf("Nombre d'activités incorrect, veuillez re-saisir (max 3)\n");
		scanf("%d%*c", &nbacti);
	}


	//si il n'y a qu'un activité
	if (nbacti == 1)
	{
		printf("Quelle est-elle ?(zumba/badminton/musculation/football/squash)\n");
		scanf("%s", acti1);
		z1 = strcmp(acti1, "zumba");
		b1 = strcmp(acti1, "badminton");
		printf("%d", b1);
		m1 = strcmp(acti1, "musculation");
		s1 = strcmp(acti1, "squash");
		f1 = strcmp(acti1, "football");
		while(z1 != 0 && b1 != 0 && m1 != 0 && s1 != 0 && f1 != 0)
		{
			printf("Veuillez saisir une activité correcte \n");
			scanf("%s", acti1);
		}
		if (z1 == 0)
		{
			numacti = 5;
			if (ptsbought < 5)
			{
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (b1 == 0)
		{
			numacti = 1;
			if (ptsbought < 8)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 8;
			ptsbonus += 8;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (s1 == 0)
		{
			numacti = 4;
			if (ptsbought < 10)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 10;
			ptsbonus += 10;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (f1 == 0)
		{
			numacti = 3;
			if (ptsbought < 5)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (m1 == 0)
		{
			numacti = 2;
			if (ptsbought < 15)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 15;
			ptsbonus += 15;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
	}


	//si il y a 2 activités
	if (nbacti == 2)
	{
		printf("Quelles sont-elles ?(zumba/badminton/musculation/football/squash)\n");
		scanf("%s%*c", acti1);
		scanf("%s%*c", acti2);
		z1 = strcmp(acti1, "zumba");
		b1 = strcmp(acti1, "badminton");
		m1 = strcmp(acti1, "musculation");
		s1 = strcmp(acti1, "squash");
		f1 = strcmp(acti1, "football");
		while(z1 != 0 && b1 != 0 && m1 != 0 && s1 != 0 && f1 != 0)
		{
			printf("Veuillez saisir une activité correcte \n");
			scanf("%s", acti1);
		}
		z2 = strcmp(acti2, "zumba");
		b2 = strcmp(acti2, "badminton");
		m2 = strcmp(acti2, "musculation");
		s2 = strcmp(acti2, "squash");
		f2 = strcmp(acti2, "football");
		while(z2 != 0 && b2 != 0 && m2 != 0 && s2 != 0 && f2 != 0)
		{
			printf("Veuillez saisir une activité correcte \n");
			scanf("%s", acti2);
		}


		//première activité
		if (z1 == 0)
		{
			numacti = 5;
			if (ptsbought < 5)
			{
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (b1 == 0)
		{
			numacti = 1;
			if (ptsbought < 8)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 8;
			ptsbonus += 8;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (s1 == 0)
		{
			numacti = 4;
			if (ptsbought < 10)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 10;
			ptsbonus += 10;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (f1 == 0)
		{
			numacti = 3;
			if (ptsbought < 5)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (m1 == 0)
		{
			numacti = 2;
			if (ptsbought < 15)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 15;
			ptsbonus += 15;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}




		//deuxième activité
		if (z2 == 0)
		{
			numacti += 5*10;
			if (ptsbought < 5)
			{
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (b2 == 0)
		{
			numacti += 1*10;
			if (ptsbought < 8)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 8;
			ptsbonus += 8;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (s2 == 0)
		{
			numacti += 4*10;
			if (ptsbought < 10)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 10;
			ptsbonus += 10;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (f2 == 0)
		{
			numacti += 3*10;
			if (ptsbought < 5)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (m2 == 0)
		{
			numacti += 2*10;
			if (ptsbought < 15)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 15;
			ptsbonus += 15;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
	}





	if (nbacti == 3)
	{
		printf("Quelles sont-elles ?(zumba/badminton/musculation/football/squash)\n");
		scanf("%s", acti1);
		scanf("%s", acti2);
		scanf("%s", acti3);
		z1 = strcmp(acti1, "zumba");
		b1 = strcmp(acti1, "badminton");
		m1 = strcmp(acti1, "musculation");
		s1 = strcmp(acti1, "squash");
		f1 = strcmp(acti1, "football");
		while(z1 != 0 && b1 != 0 && m1 != 0 && s1 != 0 && f1 != 0)
		{
			printf("Veuillez saisir une activité correcte \n");
			scanf("%s", acti1);
		}
		z2 = strcmp(acti2, "zumba");
		b2 = strcmp(acti2, "badminton");
		m2 = strcmp(acti2, "musculation");
		s2 = strcmp(acti2, "squash");
		f2 = strcmp(acti2, "football");
		while(z2 != 0 && b2 != 0 && m2 != 0 && s2 != 0 && f2 != 0)
		{
			printf("Veuillez saisir une activité correcte \n");
			scanf("%s", acti2);
		}
		z3 = strcmp(acti3, "zumba");
		b3 = strcmp(acti3, "badminton");
		m3 = strcmp(acti3, "musculation");
		s3 = strcmp(acti3, "squash");
		f3 = strcmp(acti3, "football");
		while(z3 != 0 && b3 != 0 && m3 != 0 && s3 != 0 && f3 != 0)
		{
			printf("Veuillez saisir une activité correcte \n");
			scanf("%s", acti3);
		}

		//première activité
		if (z1 == 0)
		{
			numacti = 5;
			if (ptsbought < 5)
			{
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (b1 == 0)
		{
			numacti = 1;
			if (ptsbought < 8)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 8;
			ptsbonus += 8;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (s1 == 0)
		{
			numacti = 4;
			if (ptsbought < 10)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 10;
			ptsbonus += 10;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (f1 == 0)
		{
			numacti = 3;
			if (ptsbought < 5)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (m1 == 0)
		{
			numacti = 2;
			if (ptsbought < 15)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 15;
			ptsbonus += 15;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}



		printf("%d", numacti);
		//deuxième activité
		if (z2 == 0)
		{
			numacti += 5*10;
			if (ptsbought < 5)
			{
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (b2 == 0)
		{
			numacti += 1*10;
			if (ptsbought < 8)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 8;
			ptsbonus += 8;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (s2 == 0)
		{
			numacti += 4*10;
			if (ptsbought < 10)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 10;
			ptsbonus += 10;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (f2 == 0)
		{
			numacti += 3*10;
			if (ptsbought < 5)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (m2 == 0)
		{
			numacti += 2*10;
			if (ptsbought < 15)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 15;
			ptsbonus += 15;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}

		printf("%d", numacti);
		//troisième activité
		if (z3 == 0)
		{
			numacti += 5*100;
			if (ptsbought < 5)
			{
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (b3 == 0)
		{
			numacti += 1*100;
			if (ptsbought < 8)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 8;
			ptsbonus += 8;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (s3 == 0)
		{
			numacti += 4*100;
			if (ptsbought < 10)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 10;
			ptsbonus += 10;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (f3 == 0)
		{
			numacti += 3*100;
			if (ptsbought < 5)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 5;
			ptsbonus += 5;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
		if (m3 == 0)
		{
			numacti += 2*100;
			if (ptsbought < 15)
				printf("Pas assez de points disponibles sur la carte, rechargement souhaité ? (O/N)\n");
				scanf("%c%*c", &recharge);
				if (recharge == 'N')
				{
					return;
				}
				else
				{
					//RELOAD AND CONTINUE
					return;
				}
			ptsbought -= 15;
			ptsbonus += 15;
			if (ptsbonus >= 100)
			{
				ptsbought += 15;
				ptsbonus -= 100;
			}
		}
	}


	printf("%d", numacti);

	return;
}
