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

namespace WebApplication1.Models {

	public partial class AnnuaireEntities {
		private static Dictionary<int, Titre> _TitresEnCache = null; // Dictionary pas vraiment utile ici mais il est parfois bien pratique de retrouver une entité par sa clé primaire alors que l'entité n'est pas trackée.
		public static Dictionary<int, Titre> TitresEnCache {
			get {
				HttpContext.Current.Application.Lock();
				if( _TitresEnCache == null ) {
					_TitresEnCache = new Dictionary<int, Titre>();
					using( AnnuaireEntities dc = new AnnuaireEntities() ) {
						foreach( var t in dc.Titres.AsNoTracking() ) {
							_TitresEnCache.Add( t.Id, t );
						}
					}
				}
				HttpContext.Current.Application.UnLock();
				return _TitresEnCache;
			}
		}
	}

	[MetadataType( typeof( WebApplication1.Models.Titre.TitreMetadata ) )]
	public partial class Titre {
		private class TitreMetadata {
			[Display( Name = "Civilité" )]
			public object Civilite = null;
		}
	}

	[MetadataType( typeof( WebApplication1.Models.Personne.PersonneMetadata ) )]
	public partial class Personne {
		private class PersonneMetadata {
			[Display( Name = "Civilité" )]
			public object TitreId = null;
			[Display( Name = "Prénom" )]
			[MaxLength( 50, ErrorMessage = "50 caractères maxi !" )]
			public object Prenom = null;
			[MaxLength( 50, ErrorMessage = "50 caractères maxi !" )]
			public object Nom = null;
			[Display( Name = "Téléphone" )]
			[RegularExpression( @"^0[1-9]\d{8}$", ErrorMessage = "10 chiffres, commençant par un 0, le second ne peut pas être un 0 !" )]
			[Required( ErrorMessage = "Obligatoire !" )]
			public object Telephone = null;
		}
	}


}

