public function doExport() { $filename = 'firefly-export-' . date('Y-m-d') . '.json'; $data = array(); // accounts $accounts = Auth::user()->accounts()->get(); foreach ($accounts as $account) { $account->name = Crypt::decrypt($account->name); $account->balance = floatval($account->balance); $data['accounts'][] = $account->toArray(); } // icons $icons = Icon::all(); foreach ($icons as $i) { $data['icons'][] = $i->toArray(); } // beneficiaries $bene = Auth::user()->beneficiaries()->get(); foreach ($bene as $b) { $b->name = Crypt::decrypt($b->name); $data['beneficiaries'][] = $b->toArray(); } // budgets $budgets = Auth::user()->budgets()->get(); foreach ($budgets as $budget) { $budget->name = Crypt::decrypt($budget->name); $budget->amount = floatval($budget->amount); $data['budgets'][] = $budget->toArray(); } // categories $categories = Auth::user()->categories()->get(); foreach ($categories as $cat) { $cat->name = Crypt::decrypt($cat->name); $data['categories'][] = $cat->toArray(); } // targets $targets = Auth::user()->targets()->get(); foreach ($targets as $target) { $target->description = Crypt::decrypt($target->description); $target->amount = floatval($target->amount); $data['targets'][] = $target->toArray(); } // transactions $transactions = Auth::user()->transactions()->get(); foreach ($transactions as $transaction) { $transaction->description = Crypt::decrypt($transaction->description); $transaction->amount = floatval($transaction->amount); $data['transactions'][] = $transaction->toArray(); } // transfers $transfers = Auth::user()->transfers()->get(); foreach ($transfers as $transfer) { $transfer->description = Crypt::decrypt($transfer->description); $transfer->amount = floatval($transfer->amount); $data['transfers'][] = $transfer->toArray(); } // settings: $settings = Auth::user()->settings()->get(); foreach ($settings as $setting) { $setting->value = Crypt::decrypt($setting->value); $data['settings'][] = $setting->toArray(); } $payload = json_encode($data, JSON_PRETTY_PRINT); // We'll be outputting a PDF header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $filename); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . strlen($payload)); echo $payload; exit; }