MIF_E31211949/app/Http/Controllers/DashboardController.php

239 lines
9.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Charts\AnggotaChart;
use App\Charts\JenisAnggotaChart;
use App\Charts\SHUChart;
use App\Charts\TransaksiChart;
use App\Models\Anggota;
use App\Models\DetailPinjaman;
use App\Models\DetailSimpanan;
use App\Models\HistoryTransaksi;
use App\Models\Laporan;
use App\Models\Pinjaman;
use App\Models\Simpanan;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\DataTables;
class DashboardController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(SHUChart $lineChart, TransaksiChart $pieChart, AnggotaChart $lineChartAnggota, JenisAnggotaChart $pieChartJenisAnggota, Request $request)
{
$jumlahAnggota = Anggota::count();
$jumlahPegawai = User::where('id_role', '!=', '1')->count();
$jumlahSimpanan = Simpanan::count();
$jumlahPinjaman = Pinjaman::count();
$jumlahAnggotaBulanLalu = Anggota::whereMonth('created_at', '=', Carbon::now()->subMonth()->month)->count();
$pertumbuhanAnggota = 0;
if ($jumlahAnggotaBulanLalu > 0) {
$pertumbuhanAnggota = (($jumlahAnggota - $jumlahAnggotaBulanLalu) / $jumlahAnggota) * 100;
} else {
$pertumbuhanAnggota = 100;
}
$selectedYear = $request->get('tahun');
if (Auth::user()->id_role == 1) {
$anggotaTahun = Anggota::selectRaw('YEAR(created_at) as year')
->distinct()
->pluck('year')
->sortDesc()
->toArray();
if ($selectedYear) {
$anggotaData = Anggota::whereYear('created_at', $selectedYear)->get();
$jenisData = Anggota::whereYear('created_at', $selectedYear)->get();
} else {
$anggotaData = Anggota::all();
$jenisaData = Anggota::all();
}
$anggotaChart = $lineChartAnggota->build($selectedYear);
$jenisAnggotaChart = $pieChartJenisAnggota->build($selectedYear);
return view('pages.dashboard.index', compact('jumlahAnggota', 'jumlahPegawai', 'jumlahSimpanan', 'jumlahPinjaman', 'anggotaChart', 'jenisAnggotaChart', 'pertumbuhanAnggota', 'anggotaTahun', 'selectedYear'));
} else {
$setor = DetailSimpanan::where('jenis_transaksi', '=', 'Setor')
->get();
$tarik = DetailSimpanan::where('jenis_transaksi', '=', 'Tarik')
->get();
$shuTahun = Laporan::selectRaw('YEAR(created_at) as year')
->distinct()
->pluck('year')
->sortDesc()
->toArray();
$transaksiTahun = HistoryTransaksi::selectRaw('YEAR(created_at) as year')
->distinct()
->pluck('year')
->sortDesc()
->toArray();
$totalSimpananPokok = $setor->sum('simpanan_pokok');
$totalSimpananWajib = $setor->sum('simpanan_wajib');
$totalSimpananSukarela = $setor->sum('simpanan_sukarela');
$totalPenarikanPokok = $tarik->sum('simpanan_pokok');
$totalPenarikanWajib = $tarik->sum('simpanan_wajib');
$totalPenarikanSukarela = $tarik->sum('simpanan_sukarela');
$totalSimpananPokok -= $totalPenarikanPokok;
$totalSimpananWajib -= $totalPenarikanWajib;
$totalSimpananSukarela -= $totalPenarikanSukarela;
$rekap = HistoryTransaksi::with('users', 'anggota', 'detail_simpanan', 'pinjaman', 'detail_pinjaman')->orderBy('created_at', 'desc')->get();
$shuChart = $lineChart->build($selectedYear);
$transaksiChart = $pieChart->build($selectedYear);
$jumlahMasuk = 0.00;
$jumlahKeluar = 0.00;
$totalPemasukan = 0.00;
$totalPengeluaran = 0.00;
foreach ($rekap as $item) {
if ($item->id_detail_simpanan != null) {
$detail_simpanan = DetailSimpanan::find($item->id_detail_simpanan);
$simpanan_pokok = $detail_simpanan->simpanan_pokok;
$simpanan_wajib = $detail_simpanan->simpanan_wajib;
$simpanan_sukarela = $detail_simpanan->simpanan_sukarela;
if ($item->tipe_transaksi == 'Pemasukan') {
$jenis_transaksi = 'Setor Simpanan';
$jumlahMasuk = $simpanan_pokok + $simpanan_wajib + $simpanan_sukarela;
$totalPemasukan += $jumlahMasuk;
} else {
$jenis_transaksi = 'Tarik Simpanan';
$jumlahKeluar = $simpanan_pokok + $simpanan_wajib + $simpanan_sukarela;
$totalPengeluaran += $jumlahKeluar;
}
} elseif ($item->id_pinjaman != null) {
$pinjaman = Pinjaman::find($item->id_pinjaman);
$jumlahKeluar = $pinjaman->total_pinjaman;
$totalPengeluaran += $jumlahKeluar;
$jenis_transaksi = 'Pengajuan Pinjaman';
} else {
$detail_pinjaman = DetailPinjaman::find($item->id_detail_pinjaman);
$jumlahMasuk = $detail_pinjaman->angsuran_pokok;
$totalPemasukan += $jumlahMasuk;
$jenis_transaksi = 'Angsuran Pinjaman';
}
}
$pendapatan = $totalPemasukan - $totalPengeluaran;
$cek_detail_pinjaman = DetailPinjaman::where('status_pelunasan', 'Belum Lunas')->with(['pinjaman', 'users'])->get();
foreach ($cek_detail_pinjaman as $row) {
if ($row->status_pelunasan == 'Belum Lunas') {
if ($row->tanggal_jatuh_tempo < Carbon::now()) {
$row->status_pelunasan = 'Lewat Jatuh Tempo';
$row->save();
}
}
if ($row->status_pelunasan == 'Lewat Jatuh Tempo') {
if ($row->tanggal_jatuh_tempo > Carbon::now()) {
$row->status_pelunasan = 'Belum Lunas';
$row->save();
}
}
}
$detail_pinjaman = DetailPinjaman::where('status_pelunasan', 'Lewat Jatuh Tempo')->with(['pinjaman', 'users'])->get();
$rowData = [];
if ($request->ajax()) {
foreach ($detail_pinjaman as $row) {
if ($row->status_pelunasan == 'Belum Lunas') {
if ($row->tanggal_jatuh_tempo < Carbon::now()) {
$row->status_pelunasan = 'Lewat Jatuh Tempo';
$row->save();
}
}
if ($row->status_pelunasan == 'Lewat Jatuh Tempo') {
if ($row->tanggal_jatuh_tempo > Carbon::now()) {
$row->status_pelunasan = 'Belum Lunas';
$row->save();
}
}
$pinjaman = $row->pinjaman;
$pinjaman = Pinjaman::where('id_pinjaman', $pinjaman->id_pinjaman)->with('anggota')->first();
$rowData[] = [
'DT_RowIndex' => $row->id_pinjaman,
'id_pinjaman' => $pinjaman->id_pinjaman,
'nama_anggota' => $pinjaman->anggota->nama,
'tanggal_jatuh_tempo' => $row->tanggal_jatuh_tempo,
'angsuran_ke_' => $row->angsuran_ke_,
'angsuran_pokok' => $row->angsuran_pokok,
'bunga' => $row->bunga,
'subtotal_angsuran' => $row->subtotal_angsuran,
'status_pelunasan' => $row->status_pelunasan
];
}
return DataTables::of($rowData)->toJson();
}
return view('pages.dashboard.index', compact('jumlahAnggota', 'jumlahPegawai', 'jumlahSimpanan', 'jumlahPinjaman', 'totalSimpananPokok', 'totalSimpananWajib', 'totalSimpananSukarela', 'pendapatan', 'shuChart', 'transaksiChart', 'pertumbuhanAnggota', 'shuTahun', 'transaksiTahun', 'selectedYear'));
}
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* 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)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}