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

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

		public static int VisitesDeLUtilisateurSurLeSite {
			get {
				if( HttpContext.Current.Response.Cookies.AllKeys.Contains( nameof( VisitesDeLUtilisateurSurLeSite ) ) ) {
					var c = HttpContext.Current.Response.Cookies[nameof( VisitesDeLUtilisateurSurLeSite )];
					return int.Parse( c.Value );
				}
				else {
					var c = HttpContext.Current.Request.Cookies[nameof( VisitesDeLUtilisateurSurLeSite )];
					return c == null ? 0 : int.Parse( c.Value );
				}
			}
			set {
				var c = HttpContext.Current.Response.Cookies[nameof( VisitesDeLUtilisateurSurLeSite )];
				c.Value = value.ToString();
				c.Expires = DateTime.Now.AddDays( 45 );
			}
		}


		public static int NbDeVisiteurs;

		private static string CheminFichierNbVisiteurs;

		public static void Initialiser() {
			CheminFichierNbVisiteurs = System.Configuration.ConfigurationManager.AppSettings["AppliWebANA.Models.Compteurs.CheminFichierNbVisiteurs"];

			if( System.IO.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 );
			}
		}

	}
}