Skip to content

Commit 24e6836

Browse files
committed
Refactor KontrakMitra model to use jenis_kontrak_id instead of jenis_kontrak
1 parent 11148fa commit 24e6836

File tree

11 files changed

+65
-59
lines changed

11 files changed

+65
-59
lines changed

app/Helpers/Helper.php

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,41 @@ public static function createDateFromString($tanggal)
364364
return Carbon::createFromFormat('Y-m-d', $tanggal)->endOfDay()->format('Y-m-d H:i:s');
365365
}
366366

367+
/**
368+
* Mem-parsing filter dari URL yang diberikan.
369+
*
370+
* @param string $url URL yang akan di-parsing.
371+
* @param string $filterUri URI filter yang akan dicari dalam query URL.
372+
* @param string $filterKey Kunci filter yang akan diambil nilainya.
373+
*
374+
* @return string Nilai filter yang ditemukan berdasarkan kunci filter yang diberikan.
375+
*/
376+
public static function parseFilterFromUrl($url, $filterUri, $filterKey, $defaultValue = null)
377+
{
378+
$filterValue = $defaultValue ?? '';
379+
$queries = [];
380+
if ($url) {
381+
$parsed_url = parse_url($url, PHP_URL_QUERY);
382+
}
383+
384+
if ($parsed_url) {
385+
parse_str($parsed_url, $queries);
386+
}
387+
388+
if (isset($queries[$filterUri])) {
389+
$filters = array_merge(
390+
...json_decode(
391+
base64_decode($queries[$filterUri], true),
392+
true
393+
)
394+
);
395+
396+
$filterValue= $filters[$filterKey];
397+
}
398+
399+
return $filterValue;
400+
}
401+
367402
/**
368403
* Membuat Nomor.
369404
*
@@ -870,7 +905,6 @@ public static function setOptionsJenisNaskah($tanggal)
870905
* Membuat option value select field Kode Arsip berdasarkan tanggal yang diberikan.
871906
*
872907
* @param string $tanggal
873-
* @param array $filterId
874908
* @return array
875909
*/
876910
public static function setOptionsKodeArsip($tanggal, array $filterId = [])

app/Models/DaftarKontrakMitra.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected static function booted(): void
3838
static::creating(function (DaftarKontrakMitra $daftar) {
3939
$daftar->status = 'dibuat';
4040
$kontrak = KontrakMitra::find($daftar->kontrak_mitra_id);
41-
$jenis_kontrak = Helper::getPropertyFromCollection(JenisKontrak::cache()->get('all')->where('id', $kontrak->jenis_kontrak)->first(), 'jenis');
41+
$jenis_kontrak = Helper::getPropertyFromCollection(JenisKontrak::cache()->get('all')->where('id', $kontrak->jenis_kontrak_id)->first(), 'jenis');
4242
$bulan_kontrak = Helper::$bulan[$kontrak->bulan];
4343
$default_naskah = NaskahDefault::cache()->get('all')
4444
->where('jenis', 'kontrak')

app/Models/HonorKegiatan.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ protected static function booted(): void
6666
}
6767
if ($honor->jenis_honor !== 'Kontrak Mitra Bulanan') {
6868
$honor->bulan = null;
69-
$honor->jenis_kontrak = null;
69+
$honor->jenis_kontrak_id = null;
7070
}
7171
if ($honor->isDirty('tahun')) {
7272
$DaftarHonorMitraIds = DaftarHonorMitra::where('honor_kegiatan_id', $honor->id)->pluck('id');
@@ -90,12 +90,12 @@ protected static function booted(): void
9090
if ($honor->jenis_honor === 'Kontrak Mitra Bulanan') {
9191
$kontrak = KontrakMitra::firstOrNew(
9292
[
93-
'jenis_kontrak' => $honor->jenis_kontrak,
93+
'jenis_kontrak_id' => $honor->jenis_kontrak_id,
9494
'bulan' => $honor->bulan,
9595
'tahun' => $honor->tahun,
9696
]
9797
);
98-
$kontrak->nama_kontrak = 'Kontrak '.Helper::getPropertyFromCollection(Helper::getJenisKontrakById($honor->jenis_kontrak), 'jenis').' Bulan '.Helper::$bulan[$honor->bulan];
98+
$kontrak->nama_kontrak = 'Kontrak '.Helper::getPropertyFromCollection(Helper::getJenisKontrakById($honor->jenis_kontrak_id), 'jenis').' Bulan '.Helper::$bulan[$honor->bulan];
9999
$kontrak->status = 'dibuat';
100100
$kontrak->jenis_honor = $honor->jenis_honor;
101101
$kontrak->awal_kontrak = Carbon::createFromDate(session('year'), $honor->bulan)->startOfMonth();

app/Models/KontrakMitra.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class KontrakMitra extends Model
1111
{
1212
use HasFactory;
1313

14-
protected $fillable = ['status', 'tahun', 'bulan', 'jenis_kontrak', 'jenis_honor', 'honor_kegiatan_id'];
14+
protected $fillable = ['status', 'tahun', 'bulan', 'jenis_kontrak_id', 'jenis_honor', 'honor_kegiatan_id'];
1515

1616
protected $casts = [
1717
'awal_kontrak' => 'date',

app/Nova/Actions/GenerateBastMitra.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function handle(ActionFields $fields, Collection $models)
3737
$daftar_kontrak->bast_mitra_id = $model->id;
3838
if (is_null($daftar_kontrak->bast_naskah_keluar_id)) {
3939
$kontrak = KontrakMitra::find($model->kontrak_mitra_id);
40-
$jenis_kontrak = Helper::getPropertyFromCollection(JenisKontrak::cache()->get('all')->where('id', $kontrak->jenis_kontrak)->first(), 'jenis');
40+
$jenis_kontrak_id = Helper::getPropertyFromCollection(JenisKontrak::cache()->get('all')->where('id', $kontrak->jenis_kontrak_id)->first(), 'jenis');
4141
$bulan_kontrak = Helper::$bulan[$kontrak->bulan];
4242
$default_naskah = NaskahDefault::cache()->get('all')
4343
->where('jenis', 'bast')
@@ -48,7 +48,7 @@ public function handle(ActionFields $fields, Collection $models)
4848
$naskahkeluar->kode_arsip_id = $model->kode_arsip_id;
4949
$naskahkeluar->derajat_naskah_id = Helper::getPropertyFromCollection($default_naskah, 'derajat_naskah_id');
5050
$naskahkeluar->tujuan = Helper::getPropertyFromCollection(Helper::getMitraById($daftar_kontrak->mitra_id), 'nama');
51-
$naskahkeluar->perihal = 'BERITA ACARA SERAH TERIMA HASIL PEKERJAAN MITRA STATISTIK PETUGAS '.strtoupper($jenis_kontrak).' BULAN '.strtoupper($bulan_kontrak).' TAHUN '.$kontrak->tahun;
51+
$naskahkeluar->perihal = 'BERITA ACARA SERAH TERIMA HASIL PEKERJAAN MITRA STATISTIK PETUGAS '.strtoupper($jenis_kontrak_id).' BULAN '.strtoupper($bulan_kontrak).' TAHUN '.$kontrak->tahun;
5252
$naskahkeluar->generate = 'A';
5353
$naskahkeluar->save();
5454
$daftar_kontrak->bast_naskah_keluar_id = $naskahkeluar->id;

app/Nova/Actions/GenerateKontrakMitra.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function handle(ActionFields $fields, Collection $models)
3434
if ($model->jenis_honor === 'Kontrak Mitra Bulanan') {
3535
$honorKegiatanIds = HonorKegiatan::where('bulan', $model->bulan)
3636
->where('tahun', $model->tahun)
37-
->where('jenis_kontrak', $model->jenis_kontrak)
37+
->where('jenis_kontrak_id', $model->jenis_kontrak_id)
3838
->get()
3939
->pluck('id');
4040
}
@@ -61,9 +61,9 @@ public function handle(ActionFields $fields, Collection $models)
6161
->get()
6262
->pluck('honor_kegiatan_id');
6363
$jumlah_kontrak = HonorKegiatan::whereIn('id', $daftarHonorIds)
64-
->distinct(['jenis_kontrak', 'jenis_honor', 'bulan', 'tahun'])
64+
->distinct(['jenis_kontrak_id', 'jenis_honor', 'bulan', 'tahun'])
6565
->count();
66-
if ($mitra->nilai_kontrak <= Helper::getPropertyFromCollection(Helper::getJenisKontrakById($model->jenis_kontrak), 'sbml')) {
66+
if ($mitra->nilai_kontrak <= Helper::getPropertyFromCollection(Helper::getJenisKontrakById($model->jenis_kontrak_id), 'sbml')) {
6767
$daftar_mitra->valid_sbml = true;
6868
}
6969

app/Nova/KontrakMitra.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static function indexQuery(NovaRequest $request, $query)
5050
* @var array
5151
*/
5252
public static $search = [
53-
'nama_kontrak', 'bulan', 'jenis_kontrak', 'jenis_honor',
53+
'nama_kontrak', 'bulan', 'jenis_kontrak_id', 'jenis_honor',
5454
];
5555

5656
/**
@@ -69,7 +69,7 @@ public function fields(NovaRequest $request)
6969
->readonly()
7070
->exceptOnForms()
7171
->displayUsing(fn ($bulan) => $bulan ? Helper::$bulan[$bulan] : null),
72-
Text::make('Jenis Kegiatan', 'jenis_kontrak')
72+
Text::make('Jenis Kegiatan', 'jenis_kontrak_id')
7373
->readonly()
7474
->exceptOnForms()
7575
->displayUsing(fn ($kode) => Helper::getPropertyFromCollection(JenisKontrak::cache()->get('all')->where('id', $kode)->first(), 'jenis')),

app/Nova/Metrics/JumlahKegiatan.php

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use App\Helpers\Helper;
66
use Illuminate\Support\Facades\DB;
7-
use Laravel\Nova\Http\Requests\LensMetricRequest;
87
use Laravel\Nova\Http\Requests\NovaRequest;
98
use Laravel\Nova\Metrics\Value;
109

@@ -27,24 +26,17 @@ public function name()
2726
*/
2827
public function calculate(NovaRequest $request)
2928
{
30-
$filtered_bulan = date('m');
31-
$filtered_jenis = null;
32-
$queries = [];
33-
34-
parse_str(parse_url(request()->headers->get('referer'), PHP_URL_QUERY), $queries);
35-
36-
if (isset($queries['daftar-honor-mitras_filter'])) {
37-
$filters = json_decode(base64_decode($queries['daftar-honor-mitras_filter'], true), true);
38-
$filtered_bulan = $filters['App\\Nova\\Filters\\BulanKontrak'][1] ?? $filtered_bulan;
39-
$filtered_jenis = $filters['App\\Nova\\Filters\\JenisKontrak'][1] ?? null;
40-
}
29+
$filtered_bulan = Helper::parseFilterFromUrl(request()->headers->get('referer'),'daftar-honor-mitras_filter', 'App\Nova\Filters\BulanKontrak', date('m'));
30+
$filtered_jenis= Helper::parseFilterFromUrl(request()->headers->get('referer'),'daftar-honor-mitras_filter', 'App\Nova\Filters\JenisKontrak');
4131
$bulan_ini = DB::table('daftar_honor_mitras')
4232
->select('honor_kegiatans.id')
4333
->join('honor_kegiatans', 'honor_kegiatans.id', '=', 'daftar_honor_mitras.honor_kegiatan_id')
4434
->where('jenis_honor', 'Kontrak Mitra Bulanan')
4535
->where('tahun', session('year'))
46-
->where('bulan', $filtered_bulan)
47-
->when(isset($filtered_jenis), function ($query) use ($filtered_jenis) {
36+
->when(!empty($filtered_bulan), function ($query) use ($filtered_bulan) {
37+
return $query->where('bulan', $filtered_bulan);
38+
})
39+
->when(!empty($filtered_jenis), function ($query) use ($filtered_jenis) {
4840
return $query->where('jenis_kontrak_id', $filtered_jenis);
4941
})
5042
->distinct('honor_kegiatans.id')
@@ -54,8 +46,10 @@ public function calculate(NovaRequest $request)
5446
->join('honor_kegiatans', 'honor_kegiatans.id', '=', 'daftar_honor_mitras.honor_kegiatan_id')
5547
->where('jenis_honor', 'Kontrak Mitra Bulanan')
5648
->where('tahun', session('year'))
57-
->where('bulan', $filtered_bulan - 1)
58-
->when(isset($filtered_jenis), function ($query) use ($filtered_jenis) {
49+
->when(!empty($filtered_bulan), function ($query) use ($filtered_bulan) {
50+
return $query->where('bulan', $filtered_bulan-1);
51+
})
52+
->when(!empty($filtered_jenis), function ($query) use ($filtered_jenis) {
5953
return $query->where('jenis_kontrak_id', $filtered_jenis);
6054
})
6155
->distinct('honor_kegiatans.id')

app/Nova/Metrics/JumlahMitra.php

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,7 @@ public function name()
2727
*/
2828
public function calculate(NovaRequest $request)
2929
{
30-
$filtered_bulan = date('m');
31-
$filtered_jenis = null;
32-
$queries = [];
33-
34-
parse_str(parse_url(request()->headers->get('referer'), PHP_URL_QUERY), $queries);
35-
36-
if (isset($queries['daftar-honor-mitras_filter'])) {
37-
$filters = json_decode(base64_decode($queries['daftar-honor-mitras_filter'], true), true);
38-
$filtered_bulan = $filters['App\\Nova\\Filters\\BulanKontrak'][1] ?? $filtered_bulan;
39-
$filtered_jenis = $filters['App\\Nova\\Filters\\JenisKontrak'][1] ?? null;
40-
}
30+
$filtered_jenis= Helper::parseFilterFromUrl(request()->headers->get('referer'),'daftar-honor-mitras_filter', 'App\Nova\Filters\JenisKontrak');
4131
$arr = [];
4232
foreach (Helper::$bulan as $key => $value) {
4333
$arr[$value] = DB::table('daftar_honor_mitras')
@@ -51,15 +41,15 @@ public function calculate(NovaRequest $request)
5141
->where('jenis_honor', 'Kontrak Mitra Bulanan')
5242
->where('tahun', session('year'))
5343
->where('bulan', $key)
54-
->when(isset($filtered_jenis), function ($query) use ($filtered_jenis) {
44+
->when(!empty($filtered_jenis), function ($query) use ($filtered_jenis) {
5545
return $query->where('jenis_kontrak_id', $filtered_jenis);
5646
})
5747
->distinct('mitra_id')
5848
->count();
5949
}
6050

6151
return (new TrendResult)->trend($arr)
62-
->result($arr[Helper::$bulan[$filtered_bulan]])
52+
->result($arr[Helper::$bulan[date('m')]])
6353
->suffix('Mitra')
6454
->withoutSuffixInflection();
6555
}

app/Nova/Metrics/JumlahMitraPerJenisKontrak.php

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,8 @@ public function name()
2626
*/
2727
public function calculate(NovaRequest $request)
2828
{
29-
$filtered_bulan = date('m');
30-
$filtered_jenis = null;
31-
$queries = [];
32-
33-
parse_str(parse_url(request()->headers->get('referer'), PHP_URL_QUERY), $queries);
34-
35-
if (isset($queries['daftar-honor-mitras_filter'])) {
36-
$filters = json_decode(base64_decode($queries['daftar-honor-mitras_filter'], true), true);
37-
$filtered_bulan = $filters['App\\Nova\\Filters\\BulanKontrak'][1] ?? $filtered_bulan;
38-
$filtered_jenis = $filters['App\\Nova\\Filters\\JenisKontrak'][1] ?? null;
39-
}
40-
41-
$arr= DB::table('daftar_honor_mitras')
29+
$filtered_bulan = Helper::parseFilterFromUrl(request()->headers->get('referer'),'daftar-honor-mitras_filter', 'App\Nova\Filters\BulanKontrak', date('m'));
30+
$arr = DB::table('daftar_honor_mitras')
4231
->selectRaw('jenis, count(distinct(mitra_id)) as jumlah_mitra')
4332
->join(
4433
'honor_kegiatans',
@@ -55,9 +44,8 @@ public function calculate(NovaRequest $request)
5544
->join('mitras', 'mitras.id', '=', 'daftar_honor_mitras.mitra_id')
5645
->where('jenis_honor', 'Kontrak Mitra Bulanan')
5746
->where('tahun', session('year'))
58-
->where('bulan', $filtered_bulan)
59-
->when(isset($filtered_jenis), function ($query) use ($filtered_jenis) {
60-
return $query->where('jenis_kontrak_id', $filtered_jenis);
47+
->when(!empty($filtered_bulan), function ($query) use ($filtered_bulan) {
48+
return $query->where('bulan', $filtered_bulan);
6149
})
6250
->groupBy('jenis_kontrak_id')
6351
->pluck('jumlah_mitra', 'jenis')

0 commit comments

Comments
 (0)