* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Profile\Employee\CommandHandler; use Employee; use PrestaShop\PrestaShop\Core\Domain\Employee\Command\DeleteEmployeeCommand; use PrestaShop\PrestaShop\Core\Domain\Employee\CommandHandler\DeleteEmployeeHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Employee\Exception\CannotDeleteEmployeeException; /** * Class DeleteEmployeeHandler. */ final class DeleteEmployeeHandler extends AbstractEmployeeHandler implements DeleteEmployeeHandlerInterface { /** * {@inheritdoc} */ public function handle(DeleteEmployeeCommand $command) { $employeeId = $command->getEmployeeId(); $employee = new Employee($employeeId->getValue()); $this->assertEmployeeWasFoundById($employeeId, $employee); $this->assertLoggedInEmployeeIsNotTheSameAsBeingUpdatedEmployee($employee); $this->assertEmployeeIsNotTheOnlyAdminInShop($employee); $this->assertEmployeeDoesNotManageWarehouse($employee); if (!$employee->delete()) { throw new CannotDeleteEmployeeException($employeeId, sprintf('Cannot delete employee with id "%s".', $employeeId->getValue())); } } }