Guest User

Untitled

a guest
Jan 22nd, 2018
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Rewotec\TimeTracking\Application\Employee;
  4.  
  5. use Rewotec\TimeTracking\Domain\Model\Employee\AssignableJobFunctionPolicy;
  6. use Rewotec\TimeTracking\Domain\Model\Employee\Employee;
  7. use Rewotec\TimeTracking\Domain\Model\Employee\EmployeeRepository;
  8.  
  9. /**
  10. * Class AssignEmployeeHandler
  11. * @package Rewotec\TimeTracking\Application\Employee
  12. * @author Michael Borchers <m.borchers@rewotec.com>
  13. */
  14. final class AssignEmployeeHandler
  15. {
  16. /** @var AssignableJobFunctionPolicy $jobFunctionPolicy */
  17. private $jobFunctionPolicy;
  18.  
  19. /** @var EmployeeRepository $employees */
  20. private $employees;
  21.  
  22. /**
  23. * AssignEmployeeHandler constructor.
  24. * @param AssignableJobFunctionPolicy $jobFunctionPolicy
  25. * @param EmployeeRepository $employees
  26. */
  27. public function __construct(AssignableJobFunctionPolicy $jobFunctionPolicy, EmployeeRepository $employees)
  28. {
  29. $this->jobFunctionPolicy = $jobFunctionPolicy;
  30. $this->employees = $employees;
  31. }
  32.  
  33. /**
  34. * @param AssignEmployee $command
  35. */
  36. public function __invoke(AssignEmployee $command)
  37. {
  38. if (!$this->jobFunctionPolicy->isSatisfiedBy($command->jobFunctionId())) {
  39. // Employees whose job function is not linked to an activity are not assigned.
  40. return;
  41. }
  42.  
  43. $employee = Employee::assign(
  44. $command->employeeId(), $command->personnelNumber(), $command->firstName(), $command->lastName(),
  45. $command->companyId(), $command->startDate(), $command->leavingDate(),
  46. $command->workerCategory(), $command->jobFunctionId()
  47. );
  48. $this->employees->add($employee);
  49. }
  50. }
Add Comment
Please, Sign In to add comment