using Caliburn.Micro;
using Syncfusion.Windows.PropertyGrid;
using Syncfusion.Windows.Shared;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Text;

namespace SFMVVM.Models
{

    public class PersonDisplayModel : Screen
    {

        private int _Id;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Id")]
        [DescriptionAttribute("Database Id.")]
        public int Id
        {
            get { return _Id; }
            set { _Id = value; NotifyOfPropertyChange(() => Id); }
        }

        private string _CallingName;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Callingname")]
        [DescriptionAttribute("The first name used to address the person.")]
        public string CallingName
        {
            get { return _CallingName; }
            set { _CallingName = value; NotifyOfPropertyChange(() => CallingName); }
        }

        private string _GivenNames;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Given names")]
        [DescriptionAttribute("Official names given to the person at birth.")]
        public string GivenNames
        {
            get { return _GivenNames; }
            set { _GivenNames = value; NotifyOfPropertyChange(() => GivenNames); }
        }

        private string _Initials;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Initials")]
        [DescriptionAttribute("Initials of the person using the names given at birth.")]
        public string Initials
        {
            get { return _Initials; }
            set { _Initials = value; NotifyOfPropertyChange(() => Initials); }
        }

        private string _SurnamePrefix;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Surname prefix")]
        [DescriptionAttribute("Optional prefix in front of the surname.")]
        public string SurnamePrefix
        {
            get { return _SurnamePrefix; }
            set { _SurnamePrefix = value; NotifyOfPropertyChange(() => SurnamePrefix); }
        }

        private string _Surname;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Surname")]
        [DescriptionAttribute("Surname of the actual person.")]
        public string Surname
        {
            get { return _Surname; }
            set { _Surname = value; NotifyOfPropertyChange(() => Surname); }
        }

        private string _SurnameSuffix;

        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("Surname suffix")]
        [DescriptionAttribute("Optional suffix after the person's surname.")]
        public string SurnameSuffix
        {
            get { return _SurnameSuffix; }
            set { _SurnameSuffix = value; NotifyOfPropertyChange(() => SurnameSuffix); }
        }

        private string _DisplayName;
        [CategoryAttribute("Identity")]
        [DisplayNameAttribute("DisplayName")]
        [DescriptionAttribute("The name that is displayed in the contacts grid and above the person details.")]
        public override string DisplayName
        {
            get { return _DisplayName; }
            set { _DisplayName = value; NotifyOfPropertyChange(() => DisplayName); }
        }

        public PersonDisplayModel()
        {
            Id = 1;
            CallingName = "Jim";
            GivenNames = "Jim Theodore";
            Initials = "JT";
            Surname = "Kirk";
            DisplayName = "James T Kirk";
        }

    }
}
