Advertisement
Guest User

Untitled

a guest
Feb 28th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Yeeply\FrontPublicBundle\Calculator;
  4.  
  5. use Yeeply\FrontPublicBundle\Calculator\Model\PublishProjectCalculatorRangeModel;
  6. use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightCalculatorInterface;
  7. use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightCategoryCalculator;
  8. use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightHourPrizeCalculator;
  9. use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightServicesCalculator;
  10. use Yeeply\FrontPublicBundle\Calculator\ProjectWeightCalculator\ProjectWeightTypeCalculator;
  11.  
  12. /**
  13. * Class PublishProjectRangeCalculator
  14. *
  15. * @package Yeeply\FrontPublicBundle\Calculator
  16. */
  17. class PublishProjectRangeCalculator
  18. {
  19. private $calculators;
  20.  
  21. /**
  22. * PublishProjectRangeCalculator constructor.
  23. */
  24. public function __construct()
  25. {
  26. $this->addWeightCalculator(new ProjectWeightHourPrizeCalculator());
  27. $this->addWeightCalculator(new ProjectWeightCategoryCalculator());
  28. $this->addWeightCalculator(new ProjectWeightTypeCalculator());
  29. $this->addWeightCalculator(new ProjectWeightServicesCalculator());
  30. }
  31.  
  32. /**
  33. * @param ProjectWeightCalculatorInterface $weightCalculator
  34. */
  35. private function addWeightCalculator(ProjectWeightCalculatorInterface $weightCalculator)
  36. {
  37. $this->calculators[] = $weightCalculator;
  38. }
  39.  
  40. /**
  41. * @param PublishProjectCalculatorRangeModel $publishProjectCalculatorRangeModel
  42. *
  43. * @return array
  44. */
  45. public function calculate(PublishProjectCalculatorRangeModel $publishProjectCalculatorRangeModel)
  46. {
  47. $result = array(
  48. 'hight' => 0,
  49. 'medium' => 0,
  50. 'low' => 0,
  51. );
  52.  
  53. if (!$publishProjectCalculatorRangeModel->isValid()) {
  54. return $result;
  55. }
  56.  
  57. $price = 1;
  58. foreach ($this->calculators as $calculator) {
  59. $price = $price * $calculator->calculate($publishProjectCalculatorRangeModel);
  60. }
  61.  
  62. return $result;
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement