public function actionIndex() { $user_id = Yii::$app->user->getId(); $user = User::findIdentity($user_id); $active_purse = Purse::find()->where(['user_id' => $user_id, 'active' => 1])->one(); $purses = Purse::find()->where(['user_id' => $user_id])->all(); if ($user->payday) { // если есть дата зп $datePayDay = DateComponent::getDateFilterWithPayday(); } else { $datePayDay = [date('Y'), date("m"), 1]; // иначе ставим 1 число текущего месяца } $operations = Expense::find()->orderBy('datetime desc')->limit(6)->all(); $types = TypeExpense::find()->where(['user_id' => $user_id])->select(['type_expense.*', TypeExpense::SELECT_SUM])->innerJoinWith(['expenses' => function ($query) use($datePayDay) { $query->where('date(datetime)>=:date_before', [':date_before' => implode('-', $datePayDay)]); }])->where(['purse_id' => $active_purse->id])->groupBy('type_expense.id')->all(); $arrTypes = []; $sum = 0; foreach ($types as $type) { $sum += $type->sum; array_push($arrTypes, ['value' => $type->sum, 'color' => ColorComponent::random_color(), 'label' => $type->name]); } // var_dump($types->prepare(Yii::$app->db->queryBuilder)->createCommand()->rawSql);die; return $this->render('index', ['arrTypes' => $arrTypes, 'date' => $datePayDay[2] . "." . $datePayDay[1] . "." . $datePayDay[0], 'active_purse' => $active_purse, 'purses' => $purses, 'sum' => $sum, 'operations' => $operations]); }
/** * Список расходов * @return string */ public function actionList() { $purse_get = Yii::$app->request->get('purse_filter'); $category_get = Yii::$app->request->get('category_filter'); $date_before_filter = Yii::$app->request->get('date_before_filter'); $date_after_filter = Yii::$app->request->get('date_after_filter'); $empty_date = Yii::$app->request->get('empty_date'); $active_purse = null; $expenses = null; $pages = null; $sum = null; $datePayDay = null; $user_id = Yii::$app->user->getId(); $user = User::findIdentity($user_id); $purses = Purse::find()->where(['user_id' => $user_id])->orderBy('active DESC')->all(); $purse_id = $purse_get ? $purse_get : ($purses ? $purses[0]->id : null); if ($purse_id) { $active_purse = Purse::find()->where(['id' => $purse_id])->one(); $expensesQuery = Expense::find()->where(['purse_id' => $active_purse->id])->orderBy('datetime desc'); if ($category_get) { $expensesQuery->andWhere(['type_expense_id' => $category_get]); } if ($date_before_filter) { $date_before = DateComponent::PeopleDateToDate($date_before_filter); $expensesQuery->andWhere('date(datetime)>=:date_before', [':date_before' => $date_before]); } else { if (!$empty_date && $user->filter_payday && $user->payday) { $datePayDay = DateComponent::getDateFilterWithPayday(); $expensesQuery->andWhere('date(datetime)>=:date_before', [':date_before' => implode('-', $datePayDay)]); } } if ($date_after_filter) { $date_after = DateComponent::PeopleDateToDate($date_after_filter); $expensesQuery->andWhere('date(datetime)<=:date_after', [':date_after' => $date_after]); } $sum = $expensesQuery->sum('money'); // var_dump($expensesQuery->prepare(Yii::$app->db->queryBuilder)->createCommand()->rawSql); die; // $expenses = $expenses->all(); $countQuery = clone $expensesQuery; $pages = new Pagination(['totalCount' => $countQuery->count()]); $pages->pageSize = 20; $expenses = $expensesQuery->offset($pages->offset)->limit($pages->limit)->all(); } $categories = TypeExpense::find()->where(['user_id' => $user_id])->orderBy('id desc')->all(); return $this->render('list', ['expenses' => $expenses, 'pages' => $pages, 'active_purse' => $active_purse, 'categories' => $categories, 'purses' => $purses, 'datePayDay' => $datePayDay, 'sum' => $sum]); }