Writeoff/Http/Controllers/HapusBukuController.php
2024-03-20 17:04:39 +07:00

139 lines
5.3 KiB
PHP

<?php
namespace Modules\Writeoff\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Modules\Writeoff\DataTables\HapusBukuDataTable;
use Modules\Writeoff\Entities\Branch;
use Modules\Writeoff\Entities\Currency;
use Modules\Writeoff\Entities\DetailPembayaran;
use Modules\Writeoff\Entities\FacilityType;
use Modules\Writeoff\Entities\HapusBuku;
use Modules\Writeoff\Entities\LoanType;
use Modules\Writeoff\Entities\Rekening;
use Modules\Writeoff\Http\Requests\HapusBuku\StoreHapusBukuRequest;
use Modules\Writeoff\Http\Requests\HapusBuku\UpdateHapusBukuRequest;
class HapusBukuController extends Controller
{
public $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::guard('web')->user();
return $next($request);
});
}
/**
* Display a listing of the SubrogasiJamkrindos.
*
* @param \Modules\Writeoff\DataTables\HapusBukuDataTable $dataTable
*
* @return mixed
*/
public function index(HapusBukuDataTable $dataTable, Request $request)
{
if (is_null($this->user) || !$this->user->can('pencatatan.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
}
if ($request->rekening) {
return redirect()->route('pencatatan.hapus_buku.create', ['rekening' => $request->rekening]);
} else {
return $dataTable->render('writeoff::pencatatan.hapus_buku.index', ['add' => false]);
}
}
/**
* Display a listing of the SubrogasiJamkrindos.
*
* @param \Modules\Writeoff\DataTables\HapusBukuDataTable $dataTable
*
* @return mixed
*/
public function create(HapusBukuDataTable $dataTable, Request $request)
{
if (is_null($this->user) || !$this->user->can('pencatatan.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
}
$branch = Branch::all();
$loan_type = LoanType::all();
$facility_type = FacilityType::all();
$currency = Currency::all();
$totalbayar = 0;
if($request->id) {
$hapusbuku = HapusBuku::find($request->id);
$totalbayar = DetailPembayaran::where('nomor_pinjaman', $hapusbuku->nomor_pinjaman)
->where('status', 1)
->sum('nominal');
$rekening = Rekening::with('loan_type', 'debitur', 'branch', 'currency')
->where('nomor_rekening', $hapusbuku->nomor_pinjaman)
->whereHas('loan_type', function ($query) {
$query->whereBetween('kode', [3000, 3999]);
})
->get()
->first();
return view('writeoff::pencatatan.hapus_buku.add', compact('branch', 'loan_type', 'facility_type', 'currency', 'rekening', 'totalbayar', 'hapusbuku'));
} else {
$rekening = Rekening::with('loan_type', 'debitur', 'branch', 'currency')
->where('nomor_rekening', $request->rekening)
->whereDoesntHave('hapusBuku')
->whereHas('loan_type', function ($query) {
$query->whereBetween('kode', [3000, 3999]);
})
->get()
->first();
return view('writeoff::pencatatan.hapus_buku.add', compact('branch', 'loan_type', 'facility_type', 'currency', 'rekening', 'totalbayar'));
}
}
public function edit($id)
{
return redirect()->route('pencatatan.hapus_buku.create', ['id' => $id]);
}
public function store(StoreHapusBukuRequest $request)
{
$validated = $request->validated();
if ($validated) {
try {
HapusBuku::create($validated);
echo json_encode(['status' => 'success', 'message' => 'Hapus Buku created successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
}
}
public function update(UpdateHapusBukuRequest $request,$id)
{
$validated = $request->validated();
if ($validated) {
try {
$hapusbuku = HapusBuku::find($id);
$hapusbuku->update($validated);
echo json_encode(['status' => 'success', 'message' => 'Hapus Buku Updated successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
}
}
}