using System; using Hermes.Model; using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel; using System.Runtime.CompilerServices; namespace Hermes.Model { public class Citoyen : INotifyPropertyChanged { private int _id; private string _civilite; private string _nom; private string _nomNaissance; private string _prenom; private DateTime? _dateNaissance = null; private string _profession; private bool _typeResidence = false; private string _mail; private string _tel; private string _telPort; private string _quartier; private string _adresseNumero; private string _adresseRue; private string _adresseBatiment; private string _adresseExtNumero; private string _adresseExtRue; private string _adresseExtCP; private string _adresseExtVille; private DateTime _dateCreation; private DateTime _dateModification; public int Id { get => _id; set => _id = value; } public string Civilite { get => _civilite; set { _civilite = value; OnPropertyChanged(); } } public string Nom { get => _nom; set { _nom = value; OnPropertyChanged(); } } public string NomNaissance { get => _nomNaissance; set { _nomNaissance = value; OnPropertyChanged(); } } public string Prenom { get => _prenom; set { _prenom = value; OnPropertyChanged(); } } public DateTime? DateNaissance { get => _dateNaissance; set { _dateNaissance = value; OnPropertyChanged(); OnPropertyChanged("Age"); } } public string Profession { get => _profession; set { _profession = value; OnPropertyChanged(); } } public bool TypeResidence { get => _typeResidence; set { _typeResidence = value; if(_typeResidence == false) { AdresseExtNumero = null; AdresseExtRue = null; AdresseExtCP = null; AdresseExtVille = null; } OnPropertyChanged(); OnPropertyChanged("TypeResidenceLabel"); } } public string Mail { get => _mail; set { _mail = value; OnPropertyChanged(); } } public string Tel { get => _tel; set { _tel = value; OnPropertyChanged(); } } public string TelPort { get => _telPort; set { _telPort = value; OnPropertyChanged(); } } public string Quartier { get => _quartier; set { _quartier = value; OnPropertyChanged(); } } public string AdresseNumero { get => _adresseNumero; set { _adresseNumero = value; OnPropertyChanged(); } } public string AdresseRue { get => _adresseRue; set { _adresseRue = value; OnPropertyChanged(); } } public string AdresseBatiment { get => _adresseBatiment; set { _adresseBatiment = value; OnPropertyChanged(); } } public string AdresseExtNumero { get => TypeResidence == false ? null : _adresseExtNumero; set { _adresseExtNumero = value; OnPropertyChanged(); } } public string AdresseExtRue { get => TypeResidence == false ? null : _adresseExtRue; set { _adresseExtRue = value; OnPropertyChanged(); } } public string AdresseExtCP { get => TypeResidence == false ? null : _adresseExtCP; set { _adresseExtCP = value; OnPropertyChanged(); } } public string AdresseExtVille { get => TypeResidence == false ? null : _adresseExtVille; set { _adresseExtVille = value; OnPropertyChanged(); } } public DateTime DateCreation { get => _dateCreation; set { _dateCreation = value; OnPropertyChanged(); } } public DateTime DateModification { get => _dateModification; set { _dateModification = value; OnPropertyChanged(); } } [NotMapped] public string TypeResidenceLabel { get => TypeResidence == false ? "Principale" : "Secondaire"; } [NotMapped] public string Age { get { if(DateNaissance.HasValue) { return (DateTime.Now.Year - DateNaissance.Value.Year).ToString(); } return ""; } set { if(String.IsNullOrWhiteSpace(value)) { DateNaissance = null; } else { try { DateNaissance = new DateTime(DateTime.Now.Year - Int32.Parse(value), 1, 1); } catch(Exception) {} } } } [NotMapped] public string AdresseCP => ModelContext.Getinstance().Preferences.Local[0].VilleCP; [NotMapped] public string AdresseVille => ModelContext.Getinstance().Preferences.Local[0].Ville; public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string name = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } public void Copyto(Citoyen citoyen) { citoyen.Id = Id; citoyen.Civilite = Civilite; citoyen.Nom = Nom; citoyen.NomNaissance = NomNaissance; citoyen.Prenom = Prenom; citoyen.DateNaissance = DateNaissance; citoyen.Profession = Profession; citoyen.TypeResidence = TypeResidence; citoyen.Mail = Mail; citoyen.Tel = Tel; citoyen.TelPort = TelPort; citoyen.Quartier = Quartier; citoyen.AdresseNumero = AdresseNumero; citoyen.AdresseRue = AdresseRue; citoyen.AdresseBatiment = AdresseBatiment; citoyen.AdresseExtNumero = AdresseExtNumero; citoyen.AdresseExtRue = AdresseExtRue; citoyen.AdresseExtCP = AdresseExtCP; citoyen.AdresseExtVille = AdresseExtVille; citoyen.DateCreation = DateCreation; citoyen.DateModification = DateModification; } } }