project-ta/.history/app/Http/Controllers/IuranController_20260416121...

187 lines
5.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Iuran;
use App\Models\Penghuni;
use Carbon\Carbon;
use Illuminate\Support\Facades\Http;
class IuranController extends Controller
{
public function index()
{
$iuran = Iuran::with('penghuni')->get(); // relasi ke penghuni
return view('admin.iuran.index', compact('iuran'));
}
public function create()
{
$penghuni = Penghuni::all(); // ambil data penghuni
return view('admin.iuran.create', compact('penghuni'));
}
public function store(Request $request)
{
$request->validate([
'penghuni_id' => 'required',
'bulan' => 'required',
'tahun' => 'required',
'jumlah' => 'required',
'jenis_iuran' => 'required', // 🔥 WAJIB
'keterangan' => 'required', // 🔥 tambahkan ini
'status' => 'required|in:lunas,belum',
]);
Iuran::create([
'penghuni_id' => $request->penghuni_id,
'bulan' => $request->bulan,
'tahun' => $request->tahun,
'jumlah' => $request->jumlah,
'jenis_iuran' => $request->jenis_iuran, // ✅
'keterangan' => $request->keterangan, // ✅
'status' => 'belum',
'tanggal_bayar' => $request->status == 'lunas' ? now() : null,
]);
// =========================
// 🔥 TAMBAHAN WHATSAPP
// =========================
$penghuni = \App\Models\Penghuni::find($request->penghuni_id);
if ($penghuni && $penghuni->telepon) {
// format nomor
$nohp = preg_replace('/^0/', '62', $penghuni->telepon);
$pesan = "Halo {$penghuni->nama},\n";
$pesan .= "Iuran baru ditambahkan:\n";
$pesan .= "Bulan: {$request->bulan} {$request->tahun}\n";
$pesan .= "Jumlah: Rp " . number_format($request->jumlah,0,',','.') . "\n";
$pesan .= "Jenis: {$request->jenis_iuran}\n";
$pesan .= "Terima kasih 🙏";
Http::withHeaders([
'Authorization' => env('FONNTE_TOKEN')
])->post('https://api.fonnte.com/send', [
'target' => $nohp,
'message' => $pesan,
]);
}
return redirect()->route('iuran.index')
->with('success', 'Data iuran berhasil ditambahkan');
}
public function edit($id)
{
$iuran = Iuran::findOrFail($id);
$penghuni = Penghuni::all();
return view('admin.iuran.edit', compact('iuran', 'penghuni'));
}
public function update(Request $request, $id)
{
$iuran = Iuran::findOrFail($id);
$request->validate([
'penghuni_id' => 'required',
'bulan' => 'required',
'tahun' => 'required',
'jumlah' => 'required',
'jenis_iuran' => 'required',
'keterangan' => 'required',
'status' => 'required',
]);
$iuran->update([
'penghuni_id' => $request->penghuni_id,
'bulan' => $request->bulan,
'tahun' => $request->tahun,
'jumlah' => $request->jumlah,
'jenis_iuran' => $request->jenis_iuran,
'keterangan' => $request->keterangan,
'status' => $request->status,
'tanggal_bayar' => $request->status == 'lunas'
? ($request->tanggal_bayar ?? now())
: null,
]);
return redirect()->route('iuran.index')->with('success', 'Data berhasil diupdate');
}
public function destroy($id)
{
$iuran = Iuran::findOrFail($id);
$iuran->delete();
return redirect()->route('iuran.index')->with('success', 'Data berhasil dihapus');
}
public function approve($id)
{
$iuran = Iuran::findOrFail($id);
$iuran->update([
'status' => 'lunas',
'tanggal_bayar' => now()
]);
return back();
}
public function realtime()
{
$iuran = Iuran::with('penghuni')->get();
return response()->json($iuran);
}
public function approveRT($id)
{
$iuran = Iuran::findOrFail($id);
$iuran->status = 'proses'; // ke admin
$iuran->save();
return back()->with('success', 'Disetujui RT → ke Admin');
}
public function approveAdmin($id)
{
$iuran = Iuran::findOrFail($id);
$iuran->status = 'selesai';
$iuran->tanggal_bayar = now();
$iuran->save();
return back()->with('success', 'Iuran selesai');
}
public function dashboardRT()
{
// total data
$totalPenghuni = \App\Models\Penghuni::count();
$totalIuran = \App\Models\Iuran::count();
$totalPengaduan = \App\Models\Layanan::count();
// status khusus RT
$menungguRT = \App\Models\Iuran::where('status', 'belum')
->whereNotNull('bukti_pembayaran')
->count();
$menungguAdmin = \App\Models\Iuran::where('status', 'proses')->count();
return view('rt.dashboard', compact(
'totalPenghuni',
'totalIuran',
'totalPengaduan',
'menungguRT',
'menungguAdmin'
));
}
}