MIF_E31210245/app/Http/Controllers/UserController.php

160 lines
5.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\Transaksi;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
use Yajra\DataTables\Facades\DataTables;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$roles = ['bendahara-excellent', 'bendahara-reguler'];
if (Auth::user()->role == 'bendahara-excellent')
$jurusan = 'excellent';
else
$jurusan = 'reguler';
$trans = Transaksi::with(['user', 'jenistagihan'])
->where('jurusan', $jurusan)
->where('status', '1')
->whereNotNull('tgl_pembayaran')
->latest()
->get();
$totaltransaksi = Transaksi::where('status', '1')->count();
$trans->map(function ($item) {
$item->tgl_pembayaran_formatted = \Carbon\Carbon::parse($item->tgl_pembayaran)->format('F j, Y');
return $item;
});
if (request()->ajax()) {
$query = User::whereIn('role', $roles);
return DataTables::of($query)
->addColumn('action', function ($item) {
// $barcode = DNS1D::getBarcodeHTML($item->id, 'C128', 2, 50);
return '
<div class="btn-group">
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle mr-1 mb-1" type="button" data-toggle="dropdown">Aksi</button>
<div class="dropdown-menu">
<button class="dropdown-item"
data-id="' . $item->id . '"
data-name="' . $item->name . '"
data-email="' . $item->email . '"
data-nik="' . $item->nik . '"
data-no_hp="' . $item->no_hp . '"
data-alamat="' . $item->alamat . '"
data-tempat_lahir="' . $item->tempat_lahir . '"
data-tgl_lahir="' . $item->tgl_lahir . '"
data-jk="' . $item->jk . '"
data-kelas="' . $item->kelas . '"
data-toggle="modal" data-target="#editModal">Edit</button>
<form action="' . route('data-user.destroy', $item->id) . '" method="POST">
' . method_field('delete') . csrf_field() . '
<button type="submit" class="dropdown-item text-danger">Hapus</button>
</form>
</div>
</div>
</div>
';
})
->addColumn('no', function ($item) {
static $counter = 1;
return $counter++;
})
->addColumn('profile', function ($item) {
if ($item->foto) {
// Jika ada data bukti transaksi, tampilkan tautan dan gambar
return '<td><a href="' . Storage::url($item->foto) . '" data-lightbox="gallery">
<img src="' . Storage::url($item->foto) . '" alt="Bukti Transaksi" style="width: 100px; height: auto;">
</a></td>';
} else {
// Jika tidak ada data bukti transaksi, tampilkan tanda strip (-)
return 'Tidak Ada Foto';
}
})
->rawColumns(['action', 'profile'])
->make(true);
}
// $no = 1;
// $user = User::where('role', 'siswa')->get();
return view('pages.data-user', compact('trans', 'totaltransaksi'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
// Simpan data ke database
// Mendapatkan semua data dari request
$data = $request->all();
// Hashing kata sandi sebelum disimpan
$data['password'] = Hash::make($request->password);
// Membuat user baru dan menyimpan ke database
User::create($data);
return redirect()->route('data-user.index')->with('success', 'Data berhasil disimpan.');
} catch (\Exception $e) {
dd($e);
// Tangkap pengecualian dan tampilkan pesan kesalahan
return redirect()->route('data-user.index')->with('error', 'Key yang anda masukkan tidak ada di saldo mon');
}
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
$data = $request->all();
$item = User::findOrFail($id);
$item->update($data);
return redirect()->route('data-user.index')->with('success', 'Data berhasil diperbarui.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
$data = User::findOrFail($id);
$data->delete();
return redirect()->route('data-user.index');
}
}