public virtual void ChangeSalary(decimal salary, string reason)
        {
            if (State.Terminated)
            {
                throw new InvalidOperationException("This employee has been terminated.");
            }
            if (State.Id == Guid.Empty)
            {
                throw new InvalidOperationException("The employee must be hired.");
            }
            if (salary < 0)
            {
                throw new InvalidOperationException("Negative salaries are not allowed.");
            }

            var salaryChanged = new SalaryChanged
            {
                Salary = salary,
                Reason = reason
            };

            Apply(salaryChanged);
        }
 public void Apply(SalaryChanged evt)
 {
     Salary = evt.Salary;
 }