Files
sidata/app/Http/Controllers/ItemSearchController.php
T

329 lines
12 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Tropd;
use App\Models\Trbas;
use App\Models\Program;
use App\Models\Kegiatan;
use App\Models\SubKegiatan;
use App\Models\Rsk;
use App\Models\Sps_pendapatan;
use App\Models\MstDauRinci;
use App\Models\Siesetpembayaran;
use App\Models\Sp2d;
use App\Models\BelanjaRealisasi;
use App\Models\MstJenisDana;
use App\Models\MstJenisBelanja;
use App\Models\MstSubJenisBelanja;
use App\Models\VwRekeningPendapatan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Http;
use App\Models\PendapatanRealisasiSts;
class ItemSearchController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
public function skpd(Request $request)
{
$tropd = [];
$ta = $request->ta;
$search = strtoupper($request->q);
if ($request->has('realisasi-belanja')) {
$sqlStr = "SELECT DISTINCT x.KODE_SKPD AS ID,x.KODE_SKPD||' | '||x.NAMA_SKPD as name
FROM BELANJA_REALISASI x
LEFT JOIN NEWSIPKD.TROPD y ON x.KODE_SKPD = y.C_OPD
WHERE TAHUN_ANGGARAN = $ta ";
if (getRole() == "sbpk") {
$sqlStr .= " AND y.C_WIL_SP2DPROSES=" . Auth::user()->wilayah;
} elseif (getRole() == "walikota" || getRole() == "induk skpd") {
$id = Tropd::where("C_OPD", Auth::user()->nrk)->first()["i_id"];
$sqlStr .= " AND x.KODE_SKPD IN (SELECT C_OPD FROM NEWSIPKD.TROPD WHERE I_IDINDUK=" . $id . ")";
}
if ($request->has('q')) {
$search = strtolower($request->q);
$sqlStr .= " AND ( LOWER(x.NAMA_SKPD) LIKE '%$search%' OR x.KODE_SKPD LIKE '%$search%' )";
}
$tropd = DB::select(DB::raw($sqlStr . " ORDER BY x.KODE_SKPD "));
} else {
$select = DB::raw("C_OPD AS ID,C_OPD||' | '||N_OPD as name");
$tropd = Tropd::select($select);
if ($request->has('q')) {
$search = strtolower($request->q);
$tropd->whereRaw("LOWER(N_OPD) LIKE '%$search%'");
}
$tropd->orderBy("C_OPD");
$tropd = $tropd->get();
}
return response()->json($tropd);
}
public function prog(Request $request)
{
$tropd = [];
if ($request->has('q')) {
$search = strtoupper($request->q);
$select = DB::raw("C_PROGRAM AS ID,C_PROGRAM||' | '||N_PROGRAM as name");
$tropd = Program::select($select)
->where('N_PROGRAM', 'LIKE', "%$search%")
->get();
}
return response()->json($tropd);
}
public function keg(Request $request)
{
$tropd = [];
if ($request->has('q')) {
$search = strtoupper($request->q);
$select = DB::raw("C_GIAT AS ID,C_GIAT||' | '||N_GIAT as name");
$tropd = Kegiatan::select($select)
->where('N_GIAT', 'LIKE', "%$search%")
->get();
}
return response()->json($tropd);
}
public function sk(Request $request)
{
$sk = [];
if ($request->has('q')) {
if ($request->has('realisasi-belanja')) {
$search = $request->q;
$select = DB::raw("DISTINCT KODE_SUB_KEGIATAN AS ID,KODE_SUB_KEGIATAN||' | '||NAMA_SUB_KEGIATAN as name");
$ta = $request->ta;
$sk = BelanjaRealisasi::select($select)
->where("TAHUN_ANGGARAN", $ta)
->where('NAMA_SUB_KEGIATAN', 'LIKE', "%$search%")
->get();
} else {
$search = strtoupper($request->q);
$select = DB::raw("C_SUBGIAT AS ID,C_SUBGIAT||' | '||N_SUBGIAT as name");
$sk = SubKegiatan::select($select)
->where('N_SUBGIAT', 'LIKE', "%$search%")
->get();
}
}
return response()->json($sk);
}
public function rsk(Request $request)
{
$tropd = [];
if ($request->has('q')) {
$search = strtoupper($request->q);
$select = DB::raw("I_ID AS ID,I_ID||' | '||N_RSK as name");
$tropd = Rsk::select($select)
->where('N_RSK', 'LIKE', "%$search%")
->get();
}
return response()->json($tropd);
}
public function sps(Request $request)
{
$sps = [];
$search = strtolower($request->q);
$ta = $request->ta;
$jenis = $request->jenis;
if (getRole() == "skpd") {
$filter = "";
if (isset($jenis)) {
$typeDana = strtoupper($jenis);
$kodeRekening = "'" . implode("','", getKodeRekInduk($typeDana)) . "'";
$filter = " AND SUBSTR(x.KODE_REKENING,1,12) IN ($kodeRekening) ";
}
$sps = DB::select(DB::raw("SELECT x.KODE_REKENING as IDX,x.KODE_REKENING||' | '||z.NAMA_REKENING as name
FROM MAPPING_DBH_SKPD x
LEFT JOIN VW_REKENING_PENDAPATAN z ON x.ID_REKENING = z.ID
WHERE x.kode_skpd='" . Auth::user()->nrk . "' AND (TAHUN_BERLAKU<=" . getTA() . " AND TAHUN_BERAKHIR>=" . getTA() . ") $filter"));
} else {
$select = DB::raw("KODE_REKENING AS IDX,KODE_REKENING||' | '||NAMA_REKENING as name");
$sps = VwRekeningPendapatan::select($select);
$sps->whereRaw("TAHUN_BERLAKU<=" . getTA() . " AND TAHUN_BERAKHIR>=" . getTA());
if (!empty($search)) {
$sps->whereRaw(" (LOWER(KODE_REKENING) LIKE '%$search%' OR LOWER(NAMA_REKENING) LIKE '%$search%') ");
}
if (isset($jenis)) {
$typeDana = strtoupper($jenis);
$kodeRekening = "'" . implode("','", getKodeRekInduk($typeDana)) . "'";
$sps->whereRaw(" SUBSTR(KODE_REKENING,1,12) IN ($kodeRekening)");
}
$sps->orderby("KODE_REKENING");
$sps = $sps->get();
}
return response()->json($sps);
}
public function sts(Request $request)
{
$sts = array();
$no_skprd = $request->no_skprd;
$kode_akun = $request->kode_akun;
$cek = PendapatanRealisasiSts::where("rkud_no_sts",$no_skprd)->count();
if ($cek==0){
$arrTPG = ['4.2.01.01.04.0004','4.2.01.01.04.0005','4.2.01.09.02.0004','4.2.01.09.02.0005'];
if (in_array($kode_akun,$arrTPG)){
$urlAPI = "http://10.15.34.90:8820/api/tpg-tamsil/cek-sp2t";
$httpSTS = Http::withHeaders([
'Accept' => 'application/json',
])->withBasicAuth('sidata_tpgtamsil_dev', 'sidataAp!TpgT4ms1lD3v')
->post($urlAPI, [
"no_sp2t"=>$no_skprd,
"kode_rekening"=>$kode_akun
]);
if(isset($httpSTS["data"])){
$sts["no_skprd"] = $httpSTS["data"]["no_sp2t"];
$sts["tgl_validasi"] = date("Y-m-d", strtotime($httpSTS["data"]["tanggal_pengesahan"]));
$sts["kode_bas"] = $httpSTS["data"]["kode_rekening"];
$sts["n_akun"] = $httpSTS["data"]["nam_rekening"];
$sts["nilai_bayar"] = separateNumberIndo($httpSTS["data"]["jumlah"]);
}
}else{
$select = DB::raw("NO_SKPRD,TGL_VALIDASI,KODE_BAS,NILAI_BAYAR,TRBAS.N_AKUN");
$sts = Siesetpembayaran::select($select)
->join("NEWSIPKD.TRBAS", "SI_ESET_PEMBAYARAN.KODE_BAS", "=", "TRBAS.C_AKUN")
->where("NO_SKPRD", $no_skprd)
->where("SI_ESET_PEMBAYARAN.KODE_BAS", $kode_akun)
->whereRaw("C_TAHUN_BERLAKU<=" . getTA() . " AND C_TAHUN_BERAKHIR>=" . getTA())
->first();
if ($sts) {
$sts["tgl_validasi"] = date("Y-m-d", strtotime($sts["tgl_validasi"]));
$sts["nilai_bayar"] = separateNumberIndo($sts["nilai_bayar"]);
}
}
}
return response()->json($sts);
}
public function sp2d(Request $request)
{
$no_sp2d = $request->no_sp2d;
$sp2d = Sp2d::where(["I_SP2DNO_DOK" => $no_sp2d, "C_SP2D_SAH" => 1])->first();
return response()->json($sp2d);
}
public function jenisBelanja(Request $request)
{
$sk = [];
$select = DB::raw("ID, NAME");
$grup = $request->grup;
if ($request->has('q')) {
$search = $request->q;
$sk = MstJenisBelanja::select($select)
->where('GRUP', $grup)
->where('NAME', 'LIKE', "%$search%")
->get();
} else {
$sk = MstJenisBelanja::select($select)->where('GRUP', $grup)->get();
}
return response()->json($sk);
}
public function subjenisDana(Request $request)
{
$sk = [];
$select = DB::raw("ID, NAME");
$idGrup = $request->id_grup;
if ($request->has('q')) {
$search = $request->q;
$sk = MstJenisDana::select($select)
->where("GRUP", $idGrup)
->where('NAME', 'LIKE', "%$search%")
->get();
} else {
$sk = MstJenisDana::select($select)
->where("GRUP", $idGrup)
->get();
}
return response()->json($sk);
}
public function subjenisBelanja(Request $request)
{
$sk = [];
$select = DB::raw("ID, NAME");
$idJenis = $request->id_jenis;
if ($request->has('q')) {
$search = $request->q;
$sk = MstSubJenisBelanja::select($select)
->where("id_jenis_belanja", $idJenis)
->where('NAME', 'LIKE', "%$search%")
->get();
} else {
$sk = MstSubJenisBelanja::select($select)
->where("id_jenis_belanja", $idJenis)
->get();
}
return response()->json($sk);
}
public function rek_dana(Request $request)
{
$search = strtolower($request->q);
$ta = $request->ta;
$select = DB::raw("C_AKUN AS IDX,C_AKUN||' | '||N_AKUN as NAME");
$trbas = Trbas::select($select)->whereRaw("C_TAHUN_BERAKHIR>=$ta AND (C_AKUN LIKE '4.2.01.01%' OR C_AKUN LIKE '4.2.01.02%' OR C_AKUN LIKE '4.2.01.09%') AND LENGTH(C_AKUN)>=17");
if (!empty($search)) {
$trbas->whereRaw(" (LOWER(C_AKUN) LIKE '%$search%' OR LOWER(N_AKUN) LIKE '%$search%') ");
}
$trbas->orderby("C_AKUN");
$trbas = $trbas->get();
return response()->json($trbas);
}
public function dau_rinci(Request $request)
{
$sk = [];
$select = DB::raw("id, name");
if ($request->has('q')) {
$search = $request->q;
$sk = MstDauRinci::select($select)
->where('name', 'LIKE', "%$search%")
->get();
} else {
$sk = MstDauRinci::select($select)->get();
}
return response()->json($sk);
}
public function dau_rinci_detail(Request $request)
{
$search = $request->id;
$sk = MstDauRinci::where('id', $search)->first();
return response()->json($sk);
}
}