185 lines
6.2 KiB
PHP
185 lines
6.2 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 Illuminate\Support\Facades\DB;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Enums\PbgTaskStatus;
|
|
|
|
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']);
|
|
},
|
|
'pbg_task_retributions'
|
|
])->orderBy('id', 'desc');
|
|
|
|
if ($request->has('filter') && !empty($request->get('filter'))) {
|
|
$filter = strtolower($request->get('filter'));
|
|
|
|
switch ($filter) {
|
|
case 'non-business':
|
|
$query->where(function ($q) {
|
|
$q->where(function ($q2) {
|
|
$q2->whereRaw("LOWER(function_type) NOT LIKE ?", ['%fungsi usaha%'])
|
|
->whereRaw("LOWER(function_type) NOT LIKE ?", ['%sebagai tempat usaha%'])
|
|
->whereIn("status", PbgTaskStatus::getNonVerified());
|
|
})
|
|
->orWhere(function ($q3) {
|
|
$q3->whereNull('function_type')
|
|
->whereIn("status", PbgTaskStatus::getNonVerified());
|
|
});
|
|
});
|
|
break;
|
|
|
|
case 'business':
|
|
$query->where(function ($q) {
|
|
$q->where(function ($q2) {
|
|
$q2->whereRaw("LOWER(function_type) LIKE ?", ['%fungsi usaha%'])
|
|
->orWhereRaw("LOWER(function_type) LIKE ?", ['%sebagai tempat usaha%'])
|
|
->whereIn("status", PbgTaskStatus::getNonVerified());
|
|
});
|
|
});
|
|
break;
|
|
|
|
case 'verified':
|
|
$query->whereIn("status", PbgTaskStatus::getVerified());
|
|
break;
|
|
|
|
case 'non-verified':
|
|
$query->whereIn("status", PbgTaskStatus::getNonVerified());
|
|
break;
|
|
|
|
case 'potention':
|
|
$query->whereIn("status", PbgTaskStatus::getPotention());
|
|
break;
|
|
case 'issuance-realization-pbg':
|
|
$query->whereIn("status", PbgTaskStatus::getIssuanceRealizationPbg());
|
|
break;
|
|
case 'process-in-technical-office':
|
|
$query->whereIn("status", PbgTaskStatus::getProcessInTechnicalOffice());
|
|
break;
|
|
case 'waiting-click-dpmptsp':
|
|
$query->whereIn("status", PbgTaskStatus::getWaitingClickDpmptsp());
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($request->has('search') && !empty($request->get("search"))) {
|
|
$search = $request->get('search');
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('name', 'LIKE', "%$search%")
|
|
->orWhere('registration_number', 'LIKE', "%$search%")
|
|
->orWhere('document_number', 'LIKE', "%$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)
|
|
{
|
|
//
|
|
}
|
|
}
|