open-orchestra/open-orchestra-cms-bundle

View on GitHub
WorkflowAdminBundle/BusinessRules/Strategies/StatusStrategy.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\WorkflowAdminBundle\BusinessRules\Strategies;

use OpenOrchestra\Backoffice\BusinessRules\Strategies\AbstractBusinessRulesStrategy;
use OpenOrchestra\Backoffice\BusinessRules\Strategies\BusinessActionInterface;
use OpenOrchestra\ModelInterface\Model\StatusInterface;
use OpenOrchestra\Backoffice\UsageFinder\StatusUsageFinder;

/**
 * class StatusStrategy
 */
class StatusStrategy extends AbstractBusinessRulesStrategy
{
    protected $statusUsageFinder;

    /**
     * @param StatusUsageFinder $statusUsageFinder
     */
    public function __construct(StatusUsageFinder $statusUsageFinder)
    {
        $this->statusUsageFinder = $statusUsageFinder;
    }

    /**
     * @return string
     */
    public function getType()
    {
        return StatusInterface::ENTITY_TYPE;
    }

    /**
     * @return array
     */
    public function getActions()
    {
        return array(
            BusinessActionInterface::DELETE => 'canDelete',
        );
    }

    /**
     * @param StatusInterface $status
     * @param array           $parameters
     *
     * @return boolean
     */
    public function canDelete(StatusInterface $status, array $parameters)
    {
        return !$this->statusUsageFinder->hasUsage($status)
            && !$status->isInitialState()
            && !$status->isPublishedState()
            && !$status->isTranslationState()
            && !$status->isAutoPublishFromState()
            && !$status->isAutoUnpublishToState();
    }
}