129 lines
3.8 KiB
PHP
129 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Exports\DistrictPaymentRecapExport;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Resources\RequestAssignmentResouce;
|
|
use App\Models\PbgTask;
|
|
use App\Models\PbgTaskGoogleSheet;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use DB;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Log;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
|
class RequestAssignmentController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$query = PbgTask::with(['attachments' => function ($q) {
|
|
$q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']);
|
|
}])->orderBy('id', 'desc');
|
|
|
|
if ($request->has('search') && !empty($request->get("search"))) {
|
|
$query->where(function ($q) use ($request) {
|
|
$q->where('name', 'LIKE', '%' . $request->get('search') . '%')
|
|
->orWhere('registration_number', 'LIKE', '%' . $request->get('search') . '%')
|
|
->orWhere('document_number', 'LIKE', '%' . $request->get('search') . '%');
|
|
});
|
|
}
|
|
|
|
return RequestAssignmentResouce::collection($query->paginate());
|
|
}
|
|
|
|
public function report_payment_recaps(Request $request)
|
|
{
|
|
try {
|
|
// Query dengan group by kecamatan dan sum nilai_retribusi_keseluruhan_simbg
|
|
$query = PbgTaskGoogleSheet::select(
|
|
'kecamatan',
|
|
DB::raw('SUM(nilai_retribusi_keseluruhan_simbg) as total')
|
|
)
|
|
->groupBy('kecamatan')
|
|
->paginate(10);
|
|
|
|
// Return hasil dalam JSON format
|
|
return response()->json([
|
|
'success' => true,
|
|
'data' => $query
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
Log::error($e->getMessage());
|
|
return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
public function export_excel_district_payment_recaps(){
|
|
return Excel::download(new DistrictPaymentRecapExport, 'laporan-rekap-data-pembayaran.xlsx');
|
|
}
|
|
public function export_pdf_district_payment_recaps(){
|
|
$data = PbgTaskGoogleSheet::select(
|
|
'kecamatan',
|
|
DB::raw('SUM(nilai_retribusi_keseluruhan_simbg) as total')
|
|
)
|
|
->groupBy('kecamatan')->get();
|
|
$pdf = Pdf::loadView('exports.district_payment_report', compact('data'));
|
|
return $pdf->download('laporan-rekap-data-pembayaran.pdf');
|
|
}
|
|
public function report_pbg_ptsp()
|
|
{
|
|
try {
|
|
// Query dengan group by status dan count total per status
|
|
$query = PbgTask::select(
|
|
'status',
|
|
'status_name',
|
|
DB::raw('COUNT(*) as total')
|
|
)
|
|
->groupBy('status', 'status_name')
|
|
->paginate(10);
|
|
|
|
// Return hasil dalam JSON format
|
|
return response()->json([
|
|
'success' => true,
|
|
'data' => $query
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
Log::error($e->getMessage());
|
|
return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500);
|
|
}
|
|
}
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*/
|
|
public function show(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)
|
|
{
|
|
//
|
|
}
|
|
}
|