diff --git a/app/Http/Controllers/NeracasaldoController.php b/app/Http/Controllers/NeracasaldoController.php
index 8975e51..555a780 100644
--- a/app/Http/Controllers/NeracasaldoController.php
+++ b/app/Http/Controllers/NeracasaldoController.php
@@ -5,6 +5,11 @@
use App\Models\NeracasaldoModel;
use Illuminate\Http\Request;
use Carbon\Carbon;
+use Maatwebsite\Excel\Facades\Excel;
+use Maatwebsite\Excel\Concerns\FromCollection;
+use Maatwebsite\Excel\Concerns\WithHeadings;
+use Barryvdh\DomPDF\Facade\Pdf;
+use App\Exports\NeracaSaldoExport;
class NeracasaldoController extends Controller
{
@@ -144,4 +149,275 @@ public function show($id)
$transaksi = NeracasaldoModel::findOrFail($id);
return view('neracasaldo.show', compact('transaksi'));
}
+
+ public function exportExcel(Request $request)
+ {
+ try {
+ // Ambil parameter filter tanggal jika ada
+ $startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d'));
+ $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d'));
+
+ $rawTransaksis = NeracasaldoModel::whereBetween('Tanggal', [$startDate, $endDate])
+ ->orderBy('kode', 'asc')
+ ->get();
+
+ $processedData = [];
+ $totalsPerAkun = [];
+ $totalDebit = 0;
+ $totalKredit = 0;
+
+ // Proses data seperti di fungsi index
+ foreach ($rawTransaksis as $transaksi) {
+ $processAkun = function($kode, $kategori, $debit, $kredit) use (&$totalsPerAkun) {
+ if (!empty($kode) && !empty($kategori)) {
+ if (!isset($totalsPerAkun[$kategori])) {
+ $totalsPerAkun[$kategori] = [
+ 'kode' => $kode,
+ 'kategori' => $kategori,
+ 'debit' => 0,
+ 'kredit' => 0
+ ];
+ }
+ $totalsPerAkun[$kategori]['debit'] += floatval($debit ?? 0);
+ $totalsPerAkun[$kategori]['kredit'] += floatval($kredit ?? 0);
+ }
+ };
+
+ $processAkun($transaksi->kode, $transaksi->kategori, $transaksi->uang_masuk, $transaksi->uang_keluar);
+ $processAkun($transaksi->kode2, $transaksi->kategori2, $transaksi->uang_masuk2, $transaksi->uang_keluar2);
+ $processAkun($transaksi->kode3, $transaksi->kategori3, $transaksi->uang_masuk3, $transaksi->uang_keluar3);
+ $processAkun($transaksi->kode4, $transaksi->kategori4, $transaksi->uang_masuk4, $transaksi->uang_keluar4);
+ $processAkun($transaksi->kode5, $transaksi->kategori5, $transaksi->uang_masuk5, $transaksi->uang_keluar5);
+ }
+
+ foreach ($totalsPerAkun as $kategori => $data) {
+ $kodeAwal = substr($data['kode'], 0, 3);
+ $saldo = $data['debit'] - $data['kredit'];
+
+ if (in_array($kodeAwal, ['111', '112']) || in_array($kodeAwal, ['251', '252'])) {
+ if ($saldo != 0) {
+ $processedData[] = [
+ 'kode' => $data['kode'],
+ 'kategori' => $kategori,
+ 'debit' => $saldo > 0 ? abs($saldo) : 0,
+ 'kredit' => $saldo < 0 ? abs($saldo) : 0
+ ];
+ $totalDebit += $saldo > 0 ? abs($saldo) : 0;
+ $totalKredit += $saldo < 0 ? abs($saldo) : 0;
+ }
+ } else {
+ if ($saldo != 0) {
+ $processedData[] = [
+ 'kode' => $data['kode'],
+ 'kategori' => $kategori,
+ 'debit' => $saldo < 0 ? abs($saldo) : 0,
+ 'kredit' => $saldo > 0 ? abs($saldo) : 0
+ ];
+ $totalDebit += $saldo < 0 ? abs($saldo) : 0;
+ $totalKredit += $saldo > 0 ? abs($saldo) : 0;
+ }
+ }
+ }
+
+ // Tambahkan baris total
+ $processedData[] = [
+ 'kode' => '',
+ 'kategori' => 'Total',
+ 'debit' => $totalDebit,
+ 'kredit' => $totalKredit
+ ];
+
+ // Buat class export inline
+ $export = new class($processedData) implements FromCollection, WithHeadings {
+ protected $data;
+
+ public function __construct($data)
+ {
+ $this->data = collect($data);
+ }
+
+ public function collection()
+ {
+ return $this->data;
+ }
+
+ public function headings(): array
+ {
+ return [
+ 'Kode',
+ 'Nama Akun',
+ 'Debit',
+ 'Kredit'
+ ];
+ }
+ };
+
+ return Excel::download($export, 'neraca-saldo-'.date('Y-m-d').'.xlsx');
+ } catch (\Exception $e) {
+ return redirect()->back()->with('error', 'Gagal mengekspor Excel: ' . $e->getMessage());
+ }
+ }
+
+ public function exportPDF(Request $request)
+ {
+ try {
+ // Ambil parameter filter tanggal jika ada
+ $startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d'));
+ $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d'));
+
+ $rawTransaksis = NeracasaldoModel::whereBetween('Tanggal', [$startDate, $endDate])
+ ->orderBy('kode', 'asc')
+ ->get();
+
+ $processedData = [];
+ $totalsPerAkun = [];
+ $totalDebit = 0;
+ $totalKredit = 0;
+
+ // Proses data seperti di fungsi index
+ foreach ($rawTransaksis as $transaksi) {
+ $processAkun = function($kode, $kategori, $debit, $kredit) use (&$totalsPerAkun) {
+ if (!empty($kode) && !empty($kategori)) {
+ if (!isset($totalsPerAkun[$kategori])) {
+ $totalsPerAkun[$kategori] = [
+ 'kode' => $kode,
+ 'kategori' => $kategori,
+ 'debit' => 0,
+ 'kredit' => 0
+ ];
+ }
+ $totalsPerAkun[$kategori]['debit'] += floatval($debit ?? 0);
+ $totalsPerAkun[$kategori]['kredit'] += floatval($kredit ?? 0);
+ }
+ };
+
+ $processAkun($transaksi->kode, $transaksi->kategori, $transaksi->uang_masuk, $transaksi->uang_keluar);
+ $processAkun($transaksi->kode2, $transaksi->kategori2, $transaksi->uang_masuk2, $transaksi->uang_keluar2);
+ $processAkun($transaksi->kode3, $transaksi->kategori3, $transaksi->uang_masuk3, $transaksi->uang_keluar3);
+ $processAkun($transaksi->kode4, $transaksi->kategori4, $transaksi->uang_masuk4, $transaksi->uang_keluar4);
+ $processAkun($transaksi->kode5, $transaksi->kategori5, $transaksi->uang_masuk5, $transaksi->uang_keluar5);
+ }
+
+ foreach ($totalsPerAkun as $kategori => $data) {
+ $kodeAwal = substr($data['kode'], 0, 3);
+ $saldo = $data['debit'] - $data['kredit'];
+
+ if (in_array($kodeAwal, ['111', '112']) || in_array($kodeAwal, ['251', '252'])) {
+ if ($saldo != 0) {
+ $processedData[] = [
+ 'kode' => $data['kode'],
+ 'kategori' => $kategori,
+ 'debit' => $saldo > 0 ? abs($saldo) : 0,
+ 'kredit' => $saldo < 0 ? abs($saldo) : 0
+ ];
+ $totalDebit += $saldo > 0 ? abs($saldo) : 0;
+ $totalKredit += $saldo < 0 ? abs($saldo) : 0;
+ }
+ } else {
+ if ($saldo != 0) {
+ $processedData[] = [
+ 'kode' => $data['kode'],
+ 'kategori' => $kategori,
+ 'debit' => $saldo < 0 ? abs($saldo) : 0,
+ 'kredit' => $saldo > 0 ? abs($saldo) : 0
+ ];
+ $totalDebit += $saldo < 0 ? abs($saldo) : 0;
+ $totalKredit += $saldo > 0 ? abs($saldo) : 0;
+ }
+ }
+ }
+
+ // Generate PDF
+ $html = '
+
+
+
+ Neraca Saldo
+
+
+
+ Neraca Saldo
+ Periode: ' . date('F Y', strtotime($startDate)) . '
+
+
+
+
+ Kode |
+ Nama Akun |
+ Debit |
+ Kredit |
+
+
+ ';
+
+ foreach($processedData as $data) {
+ if ($data['kategori'] !== 'Total') {
+ $html .= '
+
+ '.$data['kode'].' |
+ '.$data['kategori'].' |
+ '.($data['debit'] > 0 ? 'Rp '.number_format($data['debit'], 0, ',', '.') : '-').' |
+ '.($data['kredit'] > 0 ? 'Rp '.number_format($data['kredit'], 0, ',', '.') : '-').' |
+
';
+ }
+ }
+
+ $html .= '
+
+
+
+ Total: |
+ Rp '.number_format($totalDebit, 0, ',', '.').' |
+ Rp '.number_format($totalKredit, 0, ',', '.').' |
+
+
+
+
+ ';
+
+ $pdf = PDF::loadHTML($html);
+ return $pdf->download('neraca-saldo-'.date('Y-m-d').'.pdf');
+ } catch (\Exception $e) {
+ return redirect()->back()->with('error', 'Gagal mengekspor PDF: ' . $e->getMessage());
+ }
+ }
}
diff --git a/app/Http/Controllers/RekeningController.php b/app/Http/Controllers/RekeningController.php
index 2c1fbd8..662c7cf 100644
--- a/app/Http/Controllers/RekeningController.php
+++ b/app/Http/Controllers/RekeningController.php
@@ -8,6 +8,8 @@
use Carbon\Carbon;
use PDF;
use Excel;
+use Maatwebsite\Excel\Concerns\FromCollection;
+use Maatwebsite\Excel\Concerns\WithHeadings;
class RekeningController extends Controller
{
@@ -17,6 +19,15 @@ public function index(Request $request)
$startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d'));
$endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d'));
+ // Pastikan tanggal valid
+ try {
+ $startDate = Carbon::parse($startDate)->format('Y-m-d');
+ $endDate = Carbon::parse($endDate)->format('Y-m-d');
+ } catch (\Exception $e) {
+ $startDate = Carbon::now()->startOfMonth()->format('Y-m-d');
+ $endDate = Carbon::now()->endOfMonth()->format('Y-m-d');
+ }
+
$query = RekeningModel::whereBetween('Tanggal', [$startDate, $endDate]);
// Filter berdasarkan nama akun jika ada
@@ -98,7 +109,9 @@ public function index(Request $request)
'totals' => $totals,
'totalDebit' => $totalDebit,
'totalKredit' => $totalKredit,
- 'saldo' => $saldo
+ 'saldo' => $saldo,
+ 'startDate' => $startDate,
+ 'endDate' => $endDate
]);
}
@@ -309,24 +322,299 @@ public function destroy($id)
}
}
- public function exportExcel()
+ public function exportExcel(Request $request)
{
- $laporan = RekeningModel::all();
- $groupedLaporan = $laporan->groupBy('kategori');
-
- return Excel::download(function($excel) use ($groupedLaporan) {
- $excel->sheet('Rekening', function($sheet) use ($groupedLaporan) {
- $sheet->loadView('exports.rekening-excel', compact('groupedLaporan'));
- });
- }, 'rekening-' . Carbon::now()->format('Y-m-d') . '.xlsx');
+ try {
+ // Ambil parameter filter tanggal jika ada
+ $startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d'));
+ $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d'));
+
+ $laporan = RekeningModel::whereBetween('Tanggal', [$startDate, $endDate])->get();
+ $groupedLaporan = collect();
+
+ // Proses data seperti di fungsi index
+ foreach ($laporan as $item) {
+ if (!empty($item->kategori)) {
+ $kategori = $item->kategori;
+ if (!isset($groupedLaporan[$kategori])) {
+ $groupedLaporan[$kategori] = collect();
+ }
+
+ $groupedLaporan[$kategori]->push((object)[
+ 'Tanggal' => $item->Tanggal,
+ 'keterangan' => $item->keterangan,
+ 'kode' => $this->generateKode($kategori),
+ 'debit' => $item->uang_masuk ?? 0,
+ 'kredit' => $item->uang_keluar ?? 0
+ ]);
+ }
+
+ // Proses untuk kategori tambahan (2-5)
+ for ($i = 2; $i <= 5; $i++) {
+ $kategoriField = "kategori{$i}";
+ $uangMasukField = "uang_masuk{$i}";
+ $uangKeluarField = "uang_keluar{$i}";
+
+ if (!empty($item->$kategoriField)) {
+ $kategori = $item->$kategoriField;
+ if (!isset($groupedLaporan[$kategori])) {
+ $groupedLaporan[$kategori] = collect();
+ }
+
+ $groupedLaporan[$kategori]->push((object)[
+ 'Tanggal' => $item->Tanggal,
+ 'keterangan' => $item->keterangan,
+ 'kode' => $this->generateKode($kategori),
+ 'debit' => $item->$uangMasukField ?? 0,
+ 'kredit' => $item->$uangKeluarField ?? 0
+ ]);
+ }
+ }
+ }
+
+ // Buat class export inline
+ $export = new class($groupedLaporan) implements FromCollection, WithHeadings {
+ protected $data;
+
+ public function __construct($data)
+ {
+ $this->data = $data;
+ }
+
+ public function collection()
+ {
+ $exportData = collect();
+
+ foreach ($this->data as $kategori => $items) {
+ // Tambahkan header untuk setiap kategori
+ $exportData->push([
+ 'Nama Akun: ' . $kategori,
+ 'Kode Akun: ' . ($items->first()->kode ?? '-'),
+ '', '', '', ''
+ ]);
+
+ // Tambahkan header kolom
+ $exportData->push([
+ 'Tanggal',
+ 'Keterangan',
+ 'Ref',
+ 'Debit',
+ 'Kredit',
+ 'Saldo'
+ ]);
+
+ // Tambahkan data transaksi
+ $runningBalance = 0;
+ foreach ($items->sortBy('Tanggal') as $item) {
+ $accountType = substr($item->kode, 0, 3);
+ $runningBalance = $this->calculateBalance($runningBalance, $item->debit, $item->kredit, $accountType);
+
+ $exportData->push([
+ Carbon::parse($item->Tanggal)->format('d/m/Y'),
+ $item->keterangan,
+ '-',
+ $item->debit > 0 ? number_format($item->debit, 0, ',', '.') : '-',
+ $item->kredit > 0 ? number_format($item->kredit, 0, ',', '.') : '-',
+ number_format($runningBalance, 0, ',', '.')
+ ]);
+ }
+
+ // Tambahkan baris kosong setelah setiap kategori
+ $exportData->push(['', '', '', '', '', '']);
+ }
+
+ return $exportData;
+ }
+
+ public function headings(): array
+ {
+ return []; // Header akan ditangani di dalam collection
+ }
+
+ private function calculateBalance($previousBalance, $debit, $kredit, $accountType) {
+ $balance = $previousBalance;
+
+ if (in_array($accountType, ['111', '112']) || in_array($accountType, ['251', '252'])) {
+ $balance = $balance + $debit - $kredit;
+ } else {
+ $balance = $balance - $debit + $kredit;
+ }
+
+ return $balance;
+ }
+ };
+
+ return Excel::download($export, 'buku-besar-'.date('Y-m-d').'.xlsx');
+ } catch (\Exception $e) {
+ return redirect()->back()->with('error', 'Gagal mengekspor Excel: ' . $e->getMessage());
+ }
}
- public function exportPDF()
+ public function exportPDF(Request $request)
{
- $laporan = RekeningModel::all();
- $groupedLaporan = $laporan->groupBy('kategori');
- $pdf = PDF::loadView('exports.rekening-pdf', compact('groupedLaporan'));
-
- return $pdf->download('rekening-' . Carbon::now()->format('Y-m-d') . '.pdf');
+ try {
+ // Ambil parameter filter tanggal jika ada
+ $startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d'));
+ $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d'));
+
+ $laporan = RekeningModel::whereBetween('Tanggal', [$startDate, $endDate])->get();
+ $groupedLaporan = collect();
+
+ // Proses data seperti di fungsi index
+ foreach ($laporan as $item) {
+ if (!empty($item->kategori)) {
+ $kategori = $item->kategori;
+ if (!isset($groupedLaporan[$kategori])) {
+ $groupedLaporan[$kategori] = collect();
+ }
+
+ $groupedLaporan[$kategori]->push((object)[
+ 'Tanggal' => $item->Tanggal,
+ 'keterangan' => $item->keterangan,
+ 'kode' => $this->generateKode($kategori),
+ 'debit' => $item->uang_masuk ?? 0,
+ 'kredit' => $item->uang_keluar ?? 0
+ ]);
+ }
+
+ // Proses untuk kategori tambahan (2-5)
+ for ($i = 2; $i <= 5; $i++) {
+ $kategoriField = "kategori{$i}";
+ $uangMasukField = "uang_masuk{$i}";
+ $uangKeluarField = "uang_keluar{$i}";
+
+ if (!empty($item->$kategoriField)) {
+ $kategori = $item->$kategoriField;
+ if (!isset($groupedLaporan[$kategori])) {
+ $groupedLaporan[$kategori] = collect();
+ }
+
+ $groupedLaporan[$kategori]->push((object)[
+ 'Tanggal' => $item->Tanggal,
+ 'keterangan' => $item->keterangan,
+ 'kode' => $this->generateKode($kategori),
+ 'debit' => $item->$uangMasukField ?? 0,
+ 'kredit' => $item->$uangKeluarField ?? 0
+ ]);
+ }
+ }
+ }
+
+ // Generate PDF
+ $html = '
+
+
+
+ Buku Besar
+
+
+
+ Buku Besar
+ Periode: ' . date('F Y', strtotime($startDate)) . '
';
+
+ foreach($groupedLaporan as $kategori => $items) {
+ $kodeAkun = $items->first()->kode ?? '-';
+ $html .= '
+
+ Nama Akun: ' . $kategori . '
+ Kode Akun: ' . $kodeAkun . '
+
+
+
+
+
+ Tanggal |
+ Keterangan |
+ Ref |
+ Debit |
+ Kredit |
+ Saldo |
+
+
+ ';
+
+ $runningBalance = 0;
+ $accountType = substr($kodeAkun, 0, 3);
+
+ foreach($items->sortBy('Tanggal') as $item) {
+ if (in_array($accountType, ['111', '112']) || in_array($accountType, ['251', '252'])) {
+ $runningBalance = $runningBalance + $item->debit - $item->kredit;
+ } else {
+ $runningBalance = $runningBalance - $item->debit + $item->kredit;
+ }
+
+ $html .= '
+
+ ' . date('d/m/Y', strtotime($item->Tanggal)) . ' |
+ ' . $item->keterangan . ' |
+ - |
+ ' . ($item->debit > 0 ? number_format($item->debit, 0, ',', '.') : '-') . ' |
+ ' . ($item->kredit > 0 ? number_format($item->kredit, 0, ',', '.') : '-') . ' |
+ ' . number_format($runningBalance, 0, ',', '.') . ' |
+
';
+ }
+
+ $html .= '
+
+
';
+ }
+
+ $html .= '
+
+ ';
+
+ $pdf = PDF::loadHTML($html);
+ return $pdf->download('buku-besar-'.date('Y-m-d').'.pdf');
+ } catch (\Exception $e) {
+ return redirect()->back()->with('error', 'Gagal mengekspor PDF: ' . $e->getMessage());
+ }
}
}
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index 2c1229e..3876d7a 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -12,16 +12,41 @@ class UserController extends Controller
{
public function index()
{
- $users = User::all();
- return view('User', compact('users'));
+ return view('User');
}
- public function getData()
+ public function getData(Request $request)
{
- $users = User::all();
+ $query = User::select('id', 'nama', 'email', 'tipe_pengguna');
+
+ // Apply type filter
+ if ($request->has('type') && !empty($request->type)) {
+ $query->where('tipe_pengguna', $request->type);
+ }
+
+ // Apply search filter
+ if ($request->has('search') && !empty($request->search)) {
+ $search = $request->search;
+ $query->where(function($q) use ($search) {
+ $q->where('nama', 'like', "%{$search}%")
+ ->orWhere('email', 'like', "%{$search}%");
+ });
+ }
+
+ $users = $query->get();
return response()->json($users);
}
+ public function show($id)
+ {
+ try {
+ $user = User::findOrFail($id);
+ return response()->json($user);
+ } catch (\Exception $e) {
+ return response()->json(['error' => 'User tidak ditemukan'], 404);
+ }
+ }
+
public function create()
{
return view('TambahAkun');
@@ -34,22 +59,13 @@ public function store(Request $request)
'email' => ['required', 'string', 'email', 'max:255', 'unique:penggunas'],
'password' => ['required', Password::min(8)->mixedCase()->numbers()],
'tipe_pengguna' => ['required', 'in:owner,karyawan']
- ], [
- 'nama.required' => 'Nama harus diisi',
- 'nama.max' => 'Nama maksimal 255 karakter',
- 'email.required' => 'Email harus diisi',
- 'email.email' => 'Format email tidak valid',
- 'email.unique' => 'Email sudah terdaftar',
- 'password.required' => 'Password harus diisi',
- 'password.min' => 'Password minimal 8 karakter',
- 'tipe_pengguna.required' => 'Tipe pengguna harus dipilih',
- 'tipe_pengguna.in' => 'Tipe pengguna tidak valid'
]);
if ($validator->fails()) {
- return redirect()->back()
- ->withErrors($validator)
- ->withInput();
+ return response()->json([
+ 'success' => false,
+ 'message' => $validator->errors()->first()
+ ], 422);
}
try {
@@ -60,12 +76,15 @@ public function store(Request $request)
'tipe_pengguna' => $request->tipe_pengguna
]);
- return redirect()->route('User.index')
- ->with('success', 'Akun berhasil ditambahkan!');
+ return response()->json([
+ 'success' => true,
+ 'message' => 'User berhasil ditambahkan'
+ ]);
} catch (\Exception $e) {
- return redirect()->back()
- ->with('error', 'Gagal menambahkan akun. ' . $e->getMessage())
- ->withInput();
+ return response()->json([
+ 'success' => false,
+ 'message' => 'Gagal menambahkan user: ' . $e->getMessage()
+ ], 500);
}
}
@@ -82,21 +101,13 @@ public function update(Request $request, $id)
'email' => ['required', 'string', 'email', 'max:255', 'unique:penggunas,email,'.$id],
'password' => ['nullable', Password::min(8)->mixedCase()->numbers()],
'tipe_pengguna' => ['required', 'in:owner,karyawan']
- ], [
- 'nama.required' => 'Nama harus diisi',
- 'nama.max' => 'Nama maksimal 255 karakter',
- 'email.required' => 'Email harus diisi',
- 'email.email' => 'Format email tidak valid',
- 'email.unique' => 'Email sudah terdaftar',
- 'password.min' => 'Password minimal 8 karakter',
- 'tipe_pengguna.required' => 'Tipe pengguna harus dipilih',
- 'tipe_pengguna.in' => 'Tipe pengguna tidak valid'
]);
if ($validator->fails()) {
- return redirect()->back()
- ->withErrors($validator)
- ->withInput();
+ return response()->json([
+ 'success' => false,
+ 'message' => $validator->errors()->first()
+ ], 422);
}
try {
@@ -108,19 +119,21 @@ public function update(Request $request, $id)
'tipe_pengguna' => $request->tipe_pengguna
];
- // Update password hanya jika diisi
if ($request->filled('password')) {
$data['password'] = Hash::make($request->password);
}
$user->update($data);
- return redirect()->route('User.index')
- ->with('success', 'Akun berhasil diperbarui!');
+ return response()->json([
+ 'success' => true,
+ 'message' => 'User berhasil diperbarui'
+ ]);
} catch (\Exception $e) {
- return redirect()->back()
- ->with('error', 'Gagal memperbarui akun. ' . $e->getMessage())
- ->withInput();
+ return response()->json([
+ 'success' => false,
+ 'message' => 'Gagal memperbarui user: ' . $e->getMessage()
+ ], 500);
}
}
@@ -130,11 +143,15 @@ public function destroy($id)
$user = User::findOrFail($id);
$user->delete();
- return redirect()->route('User.index')
- ->with('success', 'Akun berhasil dihapus!');
+ return response()->json([
+ 'success' => true,
+ 'message' => 'User berhasil dihapus'
+ ]);
} catch (\Exception $e) {
- return redirect()->back()
- ->with('error', 'Gagal menghapus akun. ' . $e->getMessage());
+ return response()->json([
+ 'success' => false,
+ 'message' => 'Gagal menghapus user: ' . $e->getMessage()
+ ], 500);
}
}
}
\ No newline at end of file
diff --git a/resources/views/Laporan.blade.php b/resources/views/Laporan.blade.php
index 517bd31..c60cd3e 100644
--- a/resources/views/Laporan.blade.php
+++ b/resources/views/Laporan.blade.php
@@ -357,10 +357,10 @@
-
+
Export Excel
-
+
Export PDF