Spaces:
No application file
No application file
| namespace Mautic\StatsBundle\Aggregate\Collection\DAO; | |
| use Mautic\StatsBundle\Aggregate\Collection\Stats\DayStat; | |
| use Mautic\StatsBundle\Aggregate\Collection\Stats\HourStat; | |
| use Mautic\StatsBundle\Aggregate\Collection\Stats\MonthStat; | |
| use Mautic\StatsBundle\Aggregate\Collection\Stats\WeekStat; | |
| use Mautic\StatsBundle\Aggregate\Collection\Stats\YearStat; | |
| use Mautic\StatsBundle\Aggregate\Helper\CalculatorHelper; | |
| class StatsDAO | |
| { | |
| /** | |
| * @var YearStat[] | |
| */ | |
| private array $years = []; | |
| /** | |
| * @return YearStat | |
| */ | |
| public function getYear($year) | |
| { | |
| if (!isset($this->years[$year])) { | |
| $this->years[$year] = new YearStat($year); | |
| } | |
| return $this->years[$year]; | |
| } | |
| /** | |
| * @return YearStat[] | |
| */ | |
| public function getYears() | |
| { | |
| ksort($this->years); | |
| return $this->years; | |
| } | |
| /** | |
| * @return MonthStat[] | |
| * | |
| * @throws \Exception | |
| */ | |
| public function getMonths(): array | |
| { | |
| $flattenedMonths = []; | |
| foreach ($this->years as $yearStats) { | |
| $months = $yearStats->getStats(); | |
| foreach ($months as $month => $monthStats) { | |
| $flattenedMonths[$month] = $monthStats; | |
| } | |
| } | |
| ksort($flattenedMonths); | |
| return $flattenedMonths; | |
| } | |
| /** | |
| * @return WeekStat[] | |
| * | |
| * @throws \Exception | |
| */ | |
| public function getWeeks(): array | |
| { | |
| $flattenedWeeks = []; | |
| foreach ($this->getDays() as $day => $stats) { | |
| $week = CalculatorHelper::getWeekFromDayString($day); | |
| if (!isset($flattenedWeeks[$week])) { | |
| $flattenedWeeks[$week] = new WeekStat(); | |
| $flattenedWeeks[$week]->setCount($stats->getSum()); | |
| } else { | |
| $flattenedWeeks[$week]->addToCount($stats->getSum()); | |
| } | |
| } | |
| ksort($flattenedWeeks); | |
| return $flattenedWeeks; | |
| } | |
| /** | |
| * @return DayStat[] | |
| * | |
| * @throws \Exception | |
| */ | |
| public function getDays(): array | |
| { | |
| $flattenedDays = []; | |
| $months = $this->getMonths(); | |
| foreach ($months as $monthStats) { | |
| $stats = $monthStats->getStats(); | |
| foreach ($stats as $day => $dayStats) { | |
| $flattenedDays[$day] = $dayStats; | |
| } | |
| } | |
| ksort($flattenedDays); | |
| return $flattenedDays; | |
| } | |
| /** | |
| * @return HourStat[] | |
| * | |
| * @throws \Exception | |
| */ | |
| public function getHours(): array | |
| { | |
| $flattenedHours = []; | |
| $days = $this->getDays(); | |
| foreach ($days as $dayStats) { | |
| $stats = $dayStats->getStats(); | |
| foreach ($stats as $hour => $hourStat) { | |
| $flattenedHours[$hour] = $hourStat; | |
| } | |
| } | |
| ksort($flattenedHours); | |
| return $flattenedHours; | |
| } | |
| } | |