Пример #1
0
 /**
  * POST api/filter/basicTotals
  * @param Request $request
  * @return array
  */
 public function basicTotals(Request $request)
 {
     $filter = array_merge(Config::get('filters.defaults'), $request->get('filter'));
     $query = $this->filterQueryRepository->buildQuery($filter);
     $queryForCalculatingBalance = $this->filterQueryRepository->buildQueryForCalculatingBalance($filter);
     return $this->filterTotalsRepository->getFilterTotals($query, $queryForCalculatingBalance)->toArray();
 }
Пример #2
0
 /**
  *
  * @param $query
  * @param $queryForCalculatingBalance
  * @return array
  */
 public function getGraphTotals($query, $queryForCalculatingBalance)
 {
     $transactions = $query->select('date', 'type', 'total', 'reconciled')->orderBy('date', 'desc')->get();
     $transactionsFromBeginning = $queryForCalculatingBalance->select('date', 'type', 'total', 'reconciled')->orderBy('date', 'desc')->get();
     if (count($transactions) < 1) {
         return null;
     }
     $minDate = Carbon::createFromFormat('Y-m-d', $transactions->min('date'))->startOfMonth();
     $maxDate = Carbon::createFromFormat('Y-m-d', $transactions->max('date'))->startOfMonth();
     $date = $maxDate;
     $totalsForAllMonths = [];
     while ($minDate <= $date) {
         //            $transactionsForMonth = $query
         //                ->whereMonth('date', '=', $date->month)
         //                ->whereYear('date', '=', $date->year)
         //                ->select('date', 'type', 'total', 'reconciled')
         //                ->orderBy('date', 'desc')
         //                ->get();
         $transactionsForMonth = $transactions->filter(function ($transaction) use($date) {
             return Carbon::createFromFormat('Y-m-d', $transaction->date)->year === $date->year && ($transactionMonth = Carbon::createFromFormat('Y-m-d', $transaction->date)->month === $date->month);
         });
         //            $transactionsFromBeginning = $queryForCalculatingBalance
         //                ->where('date', '<=', $date->copy()->endOfMonth()->format('Y-m-d'))
         //                ->select('date', 'type', 'total', 'reconciled')
         //                ->orderBy('date', 'desc')
         //                ->get();
         $transactionsFromBeginning = $transactionsFromBeginning->filter(function ($transaction) use($date) {
             return Carbon::createFromFormat('Y-m-d', $transaction->date) <= $date->copy()->endOfMonth();
         });
         $totalsForMonth = $this->filterTotalsRepository->calculateFilterTotals($transactionsForMonth);
         $totalsForMonth['month'] = $date->format("M Y");
         $totalsFromBeginning = $this->filterTotalsRepository->calculateFilterTotals($transactionsFromBeginning);
         $totalsForMonth['balanceFromBeginning'] = $totalsFromBeginning['creditIncludingTransfers'] + $totalsFromBeginning['debitIncludingTransfers'];
         $totalsForAllMonths[] = $totalsForMonth;
         $date = $date->subMonths(1);
     }
     return ['monthTotals' => array_reverse($totalsForAllMonths)];
 }