Ejemplo n.º 1
0
 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]);
 }
Ejemplo n.º 2
0
 /**
  * Список расходов
  * @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]);
 }