using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;


namespace SFMVVM.Models
{

	public class ContactAddressDisplayModel : Screen
    {

		private int _Id;

		//[GlobalizedCategory("ContactAddressDisplayModelAnnotationCategoryAddress")]
		[Display(Description = "Id of the address", GroupName = "Address", AutoGenerateField = true)]
		public int Id
		{
			get { return _Id; }
			set { _Id = value; NotifyOfPropertyChange(() => Id); }
		}

		
		private string _BagId;

		[Display(Description = "Id in the government administration of buildings, see: https://bagviewer.kadaster.nl", GroupName = "Address", AutoGenerateField = true)]
		public string BagId
		{
			get { return _BagId; }
			set { _BagId = value; NotifyOfPropertyChange(() => BagId); }
		}
		
		private string _DisplayName;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public override string DisplayName
		{
			get { return _DisplayName; }
			set { _DisplayName = value; NotifyOfPropertyChange(() => DisplayName); }
		}

		private string _AddressLine1;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string AddressLine1
		{
			get { return _AddressLine1; }
			set { _AddressLine1 = value; NotifyOfPropertyChange(() => AddressLine1); }
		}

		private string _AddressLine2;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string AddressLine2
		{
			get { return _AddressLine2; }
			set { _AddressLine2 = value; NotifyOfPropertyChange(() => AddressLine2); }
		}

		private string _HouseNumber;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string HouseNumber
		{
			get { return _HouseNumber; }
			set { _HouseNumber = value; NotifyOfPropertyChange(() => HouseNumber); }
		}

		private string _HouseNumberLetter;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string HouseNumberLetter
		{
			get { return _HouseNumberLetter; }
			set { _HouseNumberLetter = value; NotifyOfPropertyChange(() => HouseNumberLetter); }
		}

		private string _HouseNumberSuffix;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string HouseNumberSuffix
		{
			get { return _HouseNumberSuffix; }
			set { _HouseNumberSuffix = value; NotifyOfPropertyChange(() => HouseNumberSuffix); }
		}

		private string _PostalCode;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string PostalCode
		{
			get { return _PostalCode; }
			set { _PostalCode = value; NotifyOfPropertyChange(() => PostalCode); }
		}

		private string _City;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string City
		{
			get { return _City; }
			set { _City = value; NotifyOfPropertyChange(() => City); }
		}

		private string _Municipality;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string Municipality
		{
			get { return _Municipality; }
			set { _Municipality = value; NotifyOfPropertyChange(() => Municipality); }
		}

		private int _Country;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public int Country
		{
			get { return _Country; }
			set { _Country = value; NotifyOfPropertyChange(() => Country); }
		}

		private string _Building;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string Building
		{
			get { return _Building; }
			set { _Building = value; NotifyOfPropertyChange(() => Building); }
		}

		private string _FloorLevel;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string FloorLevel
		{
			get { return _FloorLevel; }
			set { _FloorLevel = value; NotifyOfPropertyChange(() => FloorLevel); }
		}

		private string _AdditionalInfo;
		[Display(Description = "NetSalary of the employee", GroupName = "Address", AutoGenerateField = true)]
		public string AdditionalInfo
		{
			get { return _AdditionalInfo; }
			set { _AdditionalInfo = value; NotifyOfPropertyChange(() => AdditionalInfo); }
		}

        public ContactAddressDisplayModel()
        {
			Id = 1;
			AddressLine1 = "Galaxy Highway";
			HouseNumber = "302901";
			HouseNumberLetter = "E";
			HouseNumberSuffix = "1";
			City = "Moonbase 33";			
        }
     
    }
}
