public function actionEngagement() { $params = $this->getQuery(); if (empty($params['year'])) { throw new BadRequestHttpException(Yii::t('common', 'parameters_missing')); } $accountId = $this->getAccountId(); $startDate = $params['year'] . '-01'; $endDate = $params['year'] . '-12'; $statsGrowth = StatsMemberGrowthMonthly::getByMonth($accountId, $startDate, $endDate); $monthActiveMap = []; foreach ($statsGrowth as $growth) { $monthActiveMap[$growth->month] = $growth->totalActive; } $dates = []; $data = []; $dateTime = strtotime($startDate); $endTime = strtotime($endDate); while ($dateTime <= $endTime) { $date = date('Y-m', $dateTime); $dates[] = date('M', $dateTime); $data[] = empty($monthActiveMap[$date]) ? 0 : $monthActiveMap[$date]; $dateTime = strtotime('+1 month', $dateTime); } return ['date' => $dates, 'data' => $data]; }