dikplhd/app/Models/Dataset/DatasetTable32.php

93 lines
3.2 KiB
PHP

<?php
namespace App\Models\Dataset;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DatasetTable32 extends Model
{
use HasFactory;
use SoftDeletes;
protected $table = 'dataset_table32';
protected $primaryKey = 'DatasetTable32Id';
protected $guarded = [];
function dataset() {
return $this->belongsTo('App\Models\Dataset','dataset_id');
}
public static function dataChart($modelClass,$datasetId,$templateId){
$datasets = \App\Models\Dataset::where('template_id', $templateId)
->orderBy('tahun', 'asc')
->get()
->map(function ($dataset) use ($modelClass) {
$dataset->items = (new $modelClass)->where('dataset_id', $dataset->id)->get();
return $dataset;
});
$years = $datasets->pluck('tahun')->toArray();
$model = self::with('dataset')->whereHas('dataset',function($query) use ($years){
$query->whereIn('tahun',$years);
})->where('dataset_id',$datasetId)->get();
$result = [];
foreach ($model as $row) {
$lokasi = $row->lokasi ?? 'Unknown';
if (!isset($result[$lokasi])) {
$result[$lokasi] = [
'lokasi' => [],
'tidak_sekolah' => [],
'sd' => [],
'sltp' => [],
'slta' => [],
'pt' => [],
];
}
$result[$lokasi]['lokasi'][] = (float) $row->lokasi;
$result[$lokasi]['tidak_sekolah'][] = (float) $row->tidak_sekolah_l+(float) $row->tidak_sekolah_p;
$result[$lokasi]['sd'][] = (float) $row->sd_p+(float) $row->sd_l;
$result[$lokasi]['sltp'][] = (float) $row->sltp_p+(float) $row->sltp_l;
$result[$lokasi]['slta'][] = (float) $row->slta_smk_p+(float) $row->slta_smk_l;
$result[$lokasi]['pt'][] = (float) $row->pt_p+(float) $row->pt_l;
}
return [
'title' => '',
'years' => $years,
'yTitle' => 'Jumlah',
'yOpposite' => '',
'series' => collect($result)->flatMap(function ($item, $lokasi) {
return [
[
'name' => "Tidak Sekolah - {$lokasi}",
'type' => 'column',
'data' => $item['tidak_sekolah']
],[
'name' => "SD - {$lokasi}",
'type' => 'column',
'data' => $item['sd']
],[
'name' => "SMP - {$lokasi}",
'type' => 'column',
'data' => $item['sltp']
],[
'name' => "SMA/SMK - {$lokasi}",
'type' => 'column',
'data' => $item['slta']
],[
'name' => "Perguruan Tinggi - {$lokasi}",
'type' => 'column',
'data' => $item['pt']
],
];
})->values()
];
}
}