using System;

namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter06.Listing06_20
{
    class Employee
    {
        // ...
        public void Initialize(
            string newFirstName, string newLastName)
        {
            // Używanie właściwości także wewnątrz 
            // klasy Employee.
            FirstName = newFirstName;
            LastName = newLastName;
        }

        // Właściwość LastName.
        public string LastName
        {
            get => _LastName;
            set
            {
                // Sprawdzanie poprawności w trakcie przypisywania wartości właściwości LastName.
                if (value == null)
                {
                    // Zgłaszanie błędu.
                    // W wersji C# 6.0 należy zastąpić value wywołaniem nameof(value).
                    throw new ArgumentNullException("value");
                }
                else
                {
                    // Usuwanie odstępów wokół nazwiska.
                    value = value.Trim();
                    if (value == "")
                    {
                        // Zgłaszanie błędu.
                        // W wersji C# 6.0 zastąp value wywołaniem nameof(value).
                        throw new ArgumentException(
                          "Właściwość LastName nie może być pusta.", "value");
                    }
                    else
                    {
                        _LastName = value;
                    }
                }
            }
        }
        private string _LastName;

        // Właściwość FirstName.
        public string FirstName
        {
            get
            {
                return _FirstName;
            }
            set
            {
                // Sprawdzanie poprawności w trakcie przypisywania wartości właściwości FirstName.
                if (value == null)
                {
                    // Zgłaszanie błędu.
                    throw new ArgumentNullException("value");
                }
                else
                {
                    // Usuwanie odstępów wokół imienia.
                    value = value.Trim();
                    if(value == "")
                    {
                        throw new ArgumentException(
                            "Właściwość FirstName nie może być pusta.", "value");
                    }
                    else
                    {
                        _FirstName = value;
                    }
                }
            }
        }
        private string _FirstName;
    }
}
