ChartJS Interval 7 Hari - JSON

Raw db Laravel 8.
 avatar
unknown
php_laravel_blade
2 years ago
3.5 kB
3
Indexable
<?php

namespace App\Models\API;

//use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class ChartJS extends Model
{
    //use HasFactory;

    public function grafik_mingguan()
    {
    // Proses 1
    $subquery1 = DB::table(DB::raw('(SELECT "Monday" AS Hari
        UNION ALL SELECT "Tuesday"
        UNION ALL SELECT "Wednesday"
        UNION ALL SELECT "Thursday"
        UNION ALL SELECT "Friday"
        UNION ALL SELECT "Saturday"
        UNION ALL SELECT "Sunday") AS Waktu'))
        ->select('Hari');

    // Proses 2
    $subquery2 = DB::table($subquery1, 'Waktu')
        ->leftJoinSub(function ($query) {
            // Proses 3
            $query->select(DB::raw('DAYNAME(wakturegistrasi) AS DAY, COUNT(*) AS Terdaftar'))
                ->from('registrations')
                ->where('wakturegistrasi', '>=', DB::raw('DATE(NOW()) - INTERVAL 7 DAY'))
                ->where('aktivasi', 'sudah')
                ->groupBy('DAY');
        }, 'Waktu1', 'Waktu.Hari', '=', 'Waktu1.DAY')
        ->select('Waktu.Hari', DB::raw('COALESCE(Waktu1.Terdaftar, 0) AS Terdaftar'));

    // Eksekusi query
    $data = $subquery2->get();

    foreach ($data as $result) {
        $day         = $result->Hari;
        $total       = $result->Terdaftar;

        switch ($day) {
            case "Monday":
                # code...
                $tsenin = array($total);
                break;
            
                case "Tuesday":
                    # code...
                    $tselasa = array($total);
                    break;
            
                    case "Wednesday":
                        # code...
                        $trabu = array($total);
                        break;
            
                        case "Thursday":
                            # code...
                            $tkamis = array($total);
                            break;
            
                            case "Friday":
                                # code...
                                $tjumat = array($total);
                                break;
            
                                case "Saturday":
                                    # code...
                                    $tsabtu = array($total);
                                    break;
            
                                    case "Sunday":
                                        # code...
                                        $tminggu = array($total);
                                        break;
                                                    
            default:
                # code...
                break;
        }
    }

        $hasil_terdaftar = array_merge($tsenin, $tselasa, $trabu, $tkamis, $tjumat, $tsabtu, $tminggu);

        $count = DB::table('registrations')
            ->where('wakturegistrasi', '>=', DB::raw('DATE(NOW()) - INTERVAL 7 DAY'))
            ->where('aktivasi', 'sudah')
            ->selectRaw('COUNT(*) AS Terdaftar')
            ->pluck('Terdaftar');


        $terdaftar = array($count);

        $hasil = array('data[0]' => preg_replace('/"([a-zA-Z]+[a-zA-Z0-9_]*)":/', '$1:', $hasil_terdaftar), 'data[1]' => preg_replace('/"([a-zA-Z]+[a-zA-Z0-9_]*)":/', '$1:', $terdaftar));


        return json_encode($hasil);
    }
        
}
Editor is loading...