kylekatarnls/business-time

View on GitHub
src/BusinessTime/IntervalComposer.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace BusinessTime;

use Carbon\CarbonInterval;

class IntervalComposer
{
    private $inverted;
    private $interval;
    private $unit;
    private $className;

    public function __construct(string $className, bool $inverted, $interval, $unit)
    {
        $this->className = $className;
        $this->inverted = $inverted;
        $this->interval = $interval;
        $this->unit = $unit;
    }

    /**
     * @SuppressWarnings(PHPMD.StaticAccess)
     *
     * @throws \Exception
     *
     * @return CarbonInterval
     */
    public function getInterval(): CarbonInterval
    {
        $intervalResult = $this->interval;

        if ($this->unit) {
            $class = $this->className;
            $intervalResult = "$intervalResult ".$class::pluralUnit($this->unit);
        }

        $intervalResult = CarbonInterval::make($intervalResult) ?: CarbonInterval::create(0);

        if ($this->inverted) {
            $intervalResult->invert();
        }

        return $intervalResult;
    }
}