using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;

namespace AppliWebANA.Models {
	public static class Compteurs {
		public static int VisiteDuNavigateurSurLaPageDesCompteurs {
			get {
				// Ne sera jamais a null car init dans Session_Start
				return (int)HttpContext.Current.Session[nameof(VisiteDuNavigateurSurLaPageDesCompteurs)];
			}
			set {
				HttpContext.Current.Session[nameof(VisiteDuNavigateurSurLaPageDesCompteurs)] = value;
			}
		}

		public static int NbDeVisiteurs;
		
		public static string CheminFichierNbVisiteurs;

		public static void Initialiser() {
			CheminFichierNbVisiteurs = System.Configuration.ConfigurationManager.AppSettings["AppliWebANA.Models.Compteurs.CheminFichierNbVisiteurs"];
			if (File.Exists(CheminFichierNbVisiteurs)) {
				using (var reader = new System.IO.StreamReader(CheminFichierNbVisiteurs)) {
					NbDeVisiteurs = int.Parse(reader.ReadLine());
				}
			} else {
				NbDeVisiteurs = 0;
			}	
		}

		public static void Sauver() {
			using (var writer = new System.IO.StreamWriter(CheminFichierNbVisiteurs, false)) {
				writer.Write(NbDeVisiteurs);
			}
		}

		public static int VisiteDeLUtilisateurSurLeSite {
			get {
				if (HttpContext.Current.Response.Cookies.AllKeys.Contains(nameof(VisiteDeLUtilisateurSurLeSite))) {
					var c = HttpContext.Current.Response.Cookies[nameof(VisiteDeLUtilisateurSurLeSite)];
					return int.Parse(c.Value);
				} else {
					var c = HttpContext.Current.Request.Cookies[nameof(VisiteDeLUtilisateurSurLeSite)];
					return c == null ? 0 : int.Parse(c.Value);
				}

			}
			set {
				var c = HttpContext.Current.Response.Cookies[nameof(VisiteDeLUtilisateurSurLeSite)];
				c.Value = value.ToString();
				c.Expires = DateTime.Now.AddDays(45);
			}
		}
	}
}
