Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Yeeply\FrontPublicBundle\Calculator;
- use Yeeply\FrontPublicBundle\Calculator\Model\PublishProjectCalculatorRangeModel;
- use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightCalculatorInterface;
- use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightCategoryCalculator;
- use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightHourPrizeCalculator;
- use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightServicesCalculator;
- use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightTypeCalculator;
- /**
- * Class PublishProjectRangeCalculator
- *
- * @package Yeeply\FrontPublicBundle\Calculator
- */
- class PublishProjectRangeCalculator
- {
- private $calculators;
- /**
- * PublishProjectRangeCalculator constructor.
- */
- public function __construct()
- {
- $this->addWeightCalculator(new ProjectWeightHourPrizeCalculator());
- $this->addWeightCalculator(new ProjectWeightCategoryCalculator());
- $this->addWeightCalculator(new ProjectWeightTypeCalculator());
- $this->addWeightCalculator(new ProjectWeightServicesCalculator());
- }
- /**
- * @param ProjectWeightCalculatorInterface $weightCalculator
- */
- private function addWeightCalculator(ProjectWeightCalculatorInterface $weightCalculator)
- {
- $this->calculators[] = $weightCalculator;
- }
- /**
- * @param PublishProjectCalculatorRangeModel $publishProjectCalculatorRangeModel
- *
- * @return array
- */
- public function calculate(PublishProjectCalculatorRangeModel $publishProjectCalculatorRangeModel)
- {
- $result = array(
- 'hight' => 0,
- 'medium' => 0,
- 'low' => 0,
- );
- if (!$publishProjectCalculatorRangeModel->isValid()) {
- return $result;
- }
- $price = 1;
- foreach ($this->calculators as $calculator) {
- $price = $price * $calculator->calculate($publishProjectCalculatorRangeModel);
- }
- return $result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement