Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Rewotec\TimeTracking\Application\Employee;
- use Rewotec\TimeTracking\Domain\Model\Employee\AssignableJobFunctionPolicy;
- use Rewotec\TimeTracking\Domain\Model\Employee\Employee;
- use Rewotec\TimeTracking\Domain\Model\Employee\EmployeeRepository;
- /**
- * Class AssignEmployeeHandler
- * @package Rewotec\TimeTracking\Application\Employee
- * @author Michael Borchers <m.borchers@rewotec.com>
- */
- final class AssignEmployeeHandler
- {
- /** @var AssignableJobFunctionPolicy $jobFunctionPolicy */
- private $jobFunctionPolicy;
- /** @var EmployeeRepository $employees */
- private $employees;
- /**
- * AssignEmployeeHandler constructor.
- * @param AssignableJobFunctionPolicy $jobFunctionPolicy
- * @param EmployeeRepository $employees
- */
- public function __construct(AssignableJobFunctionPolicy $jobFunctionPolicy, EmployeeRepository $employees)
- {
- $this->jobFunctionPolicy = $jobFunctionPolicy;
- $this->employees = $employees;
- }
- /**
- * @param AssignEmployee $command
- */
- public function __invoke(AssignEmployee $command)
- {
- if (!$this->jobFunctionPolicy->isSatisfiedBy($command->jobFunctionId())) {
- // Employees whose job function is not linked to an activity are not assigned.
- return;
- }
- $employee = Employee::assign(
- $command->employeeId(), $command->personnelNumber(), $command->firstName(), $command->lastName(),
- $command->companyId(), $command->startDate(), $command->leavingDate(),
- $command->workerCategory(), $command->jobFunctionId()
- );
- $this->employees->add($employee);
- }
- }
Add Comment
Please, Sign In to add comment