public void UpdateSupervisorId(SupervisorId value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("The supervisor id can not be null.");
            }

            SupervisorId = value;
            CheckValidity();
        }
        public Employee(ExternalAgent agent, SupervisorId supervisorId, PersonName name, SSN ssn, PhoneNumber telephone,
                        MaritalStatus maritalStatus, TaxExemption exemption, PayRate payRate, StartDate startDate, IsActive isActive)
            : this()
        {
            ExternalAgent = agent ?? throw new ArgumentNullException("The external agent is required.");
            Id            = agent.Id;
            SupervisorId  = supervisorId ?? throw new ArgumentNullException("The supervisor id paramater is required.");
            EmployeeName  = name ?? throw new ArgumentNullException("The employee name parameter is required.");
            SSN           = ssn ?? throw new ArgumentNullException("The SSN parameter is required.");
            Telephone     = telephone ?? throw new ArgumentNullException("The telephone parameter is required.");
            MaritalStatus = maritalStatus ?? throw new ArgumentNullException("The marital status parameter is required.");
            TaxExemption  = exemption ?? throw new ArgumentNullException("The tax exemption parameter is required.");
            PayRate       = payRate ?? throw new ArgumentNullException("The pay rate parameter is required.");
            StartDate     = startDate ?? throw new ArgumentNullException("The start date parameter is required.");
            IsActive      = isActive ?? throw new ArgumentNullException("The is active parameter is required.");

            CheckValidity();
        }