Example #1
0
        private void Apply(EmployeeHired @event)
        {
            var employee = new Employee(@event.EmployeeId, new FullName(@event.FirstName, @event.LastName),
                                        new NationalCode(@event.NationalCode));

            _employees.Add(employee);
        }
Example #2
0
        public void Hire_HiredEmployeesHaveEvents(Guid id, string name, decimal salary)
        {
            var expected = new EmployeeHired
            {
                EmployeeId = id,
                Name       = name,
                Salary     = salary,
            };

            sut.Hire(id, name, salary);

            sut.NewEvents.Last()
            .Should().BeEquivalentTo(expected, opt => opt.IncludingFields());
        }
        /// <summary>
        /// Hires a new employee.
        /// </summary>
        public void HireEmployee()
        {
            this.Log("Company is hiring employee");

            var randomIndex = Random.Range(0, EmployeeTemplates.Count);
            var employee    = EmployeeTemplates.ElementAt(randomIndex);

            employee.Generate();

            var employeeFactory   = new EmployeeFactory(employee.Value, gameObject);
            var employeeObject    = employeeFactory.Create();
            var employeeComponent = employeeObject.GetComponent <EmployeeComponent>();

            employeeComponent.SetCompany(this);
            Employees.Add(employeeComponent);

            EmployeeHired?.Invoke(this, new EmployeeHiredEventArgs(employeeComponent, HiringCost));
        }
        /// <inheritdoc />
        public async Task ProjectAsync(EmployeeHired @event)
        {
            var company = await _companyRepository
                          .AsQuery()
                          .Include(q => q.Employees)
                          .FirstOrDefaultAsync(q => q.Id == @event.AggregateId);

            if (company.Employees.Any(q => q.Id == @event.EmployeeId))
            {
                return;
            }

            company.Employees.Add(new Employee
            {
                Id           = @event.EmployeeId,
                FirstName    = @event.FirstName,
                LastName     = @event.LastName,
                NationalCode = @event.NationalCode
            });

            await _companyRepository.SaveChangesAsync();
        }
Example #5
0
 private void OnEmployeeHired(Employee employee) => EmployeeHired?.Invoke(this, new EmployeeEventArgs(employee));
Example #6
0
 public void On(EmployeeHired evt)
 {
     this.Id = evt.EmployeeId;
 }