예제 #1
0
 /**
  * disconnect
  *  - disconnect a google account (clears pending vendors)
  *
  * @param int $vendor_id
  * @return boolean
  */
 public function disconnect($vendor_id)
 {
     $user = Vendor::find($vendor_id);
     $user->google_token = '';
     $user->google_email = '';
     $user->touch();
     Vendor::where('status', 'pending')->delete();
     return true;
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index(Request $request, Transaction $transactions)
 {
     // Setup query
     $query = $transactions->orderBy('timestamp', 'ASC')->with('category', 'vendor');
     $activeFilters = [];
     // Account filter
     if ($accountFilter = $request->input('account')) {
         $query->whereHas('account', function ($q) use($accountFilter) {
             $q->where('slug', '=', $accountFilter);
         });
         $activeFilters['account'] = ['name' => Account::where('slug', '=', $accountFilter)->first()->name, 'removedUri' => http_build_query($request->except('account'))];
     }
     // Vendor filter
     if ($vendorFilter = $request->input('vendor')) {
         $query->whereHas('vendor', function ($q) use($vendorFilter) {
             $q->where('slug', '=', $vendorFilter);
         });
         $activeFilters['vendor'] = ['name' => Vendor::where('slug', '=', $vendorFilter)->first()->name, 'removedUri' => http_build_query($request->except('vendor'))];
     }
     // Category filter
     if ($categoryFilter = $request->input('category')) {
         $query->whereHas('category', function ($q) use($categoryFilter) {
             $q->where('slug', '=', $categoryFilter);
         });
         $activeFilters['category'] = ['name' => Category::where('slug', '=', $categoryFilter)->first()->name, 'removedUri' => http_build_query($request->except('category'))];
     }
     // Business filter
     if (($businessFilter = $request->input('business')) === "") {
         $query->where('business_expense', '=', '1');
         $activeFilters['business expense'] = ['name' => '', 'removedUri' => http_build_query($request->except('business'))];
     }
     // Charity filter
     if (($charityFilter = $request->input('charity')) === "") {
         $query->where('charitable_deduction', '=', '1');
         $activeFilters['charitable deduction'] = ['name' => '', 'removedUri' => http_build_query($request->except('charity'))];
     }
     // Execute query
     $this->transactions = $query->get();
     $this->calculateRowBalances();
     $rows = $this->transactions->reverse();
     return view('transactions.index', ['rows' => $rows, 'balance' => money_format('%(!i', @$rows[0]->balance), 'filters' => $activeFilters])->withInput($request->all());
 }