Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

65 lines
1.4KB

  1. <?php
  2. namespace common\logic\Config\Unit\Service;
  3. use common\logic\AbstractSolver;
  4. class UnitSolver extends AbstractSolver
  5. {
  6. protected UnitDefinition $unitDefinition;
  7. public function loadDependencies(): void
  8. {
  9. $this->unitDefinition = $this->loadService(UnitDefinition::class);
  10. }
  11. public function getUnit(string $idUnit): ?array
  12. {
  13. $unitsArray = $this->unitDefinition->getUnits();
  14. if(isset($unitsArray[$idUnit])) {
  15. return $unitsArray[$idUnit];
  16. }
  17. return null;
  18. }
  19. // getRefUnit
  20. public function getUnitReference(string $idUnit): string
  21. {
  22. $unit = $this->getUnit($idUnit);
  23. if ($unit && isset($unit['ref_unit'])) {
  24. return $unit['ref_unit'];
  25. }
  26. return $idUnit;
  27. }
  28. public function getUnitCoefficient(string $idUnit): int
  29. {
  30. $unit = $this->getUnit($idUnit);
  31. if($unit) {
  32. return $unit['coefficient'];
  33. }
  34. return 1;
  35. }
  36. /**
  37. * Retourne le libellé d'une unité.
  38. */
  39. public function strUnit(string $idUnit, $format = UnitDefinition::WORDING_SHORT, bool $unitReference = false): string
  40. {
  41. if ($unitReference) {
  42. $idUnit = $this->getUnitReference($idUnit);
  43. }
  44. $unit = $this->getUnit($idUnit);
  45. if ($unit && isset($unit[$format])) {
  46. return $unit[$format];
  47. }
  48. return '';
  49. }
  50. }