TIF_E41210713/app/Http/Controllers/ChartsController.php

197 lines
6.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Amonia;
use App\Models\Dioksida;
use App\Models\Humidity;
use App\Models\Metana;
use App\Models\Temperature;
use Illuminate\Http\Request;
class ChartsController extends Controller
{
public function index()
{
function getLatestData($id_alat)
{
return [
'Dioksida' => Dioksida::where('id_alat', $id_alat)->limit(1)->latest()->get(),
'Metana' => Metana::where('id_alat', $id_alat)->limit(1)->latest()->get(),
'Humidity' => Humidity::where('id_alat', $id_alat)->limit(1)->latest()->get(),
'Temperature' => Temperature::where('id_alat', $id_alat)->limit(1)->latest()->get(),
'Amonia' => Amonia::where('id_alat', $id_alat)->limit(1)->latest()->get(),
];
}
$data1 = getLatestData(1);
$data2 = getLatestData(2);
$data3 = getLatestData(3);
$data4 = getLatestData(4);
$data = [
'Dioksida1' => $data1['Dioksida'],
'Metana1' => $data1['Metana'],
'Humidity1' => $data1['Humidity'],
'Temperature1' => $data1['Temperature'],
'Amonia1' => $data1['Amonia'],
'Dioksida2' => $data2['Dioksida'],
'Metana2' => $data2['Metana'],
'Humidity2' => $data2['Humidity'],
'Temperature2' => $data2['Temperature'],
'Amonia2' => $data2['Amonia'],
'Dioksida3' => $data3['Dioksida'],
'Metana3' => $data3['Metana'],
'Humidity3' => $data3['Humidity'],
'Temperature3' => $data3['Temperature'],
'Amonia3' => $data3['Amonia'],
'Dioksida4' => $data4['Dioksida'],
'Metana4' => $data4['Metana'],
'Humidity4' => $data4['Humidity'],
'Temperature4' => $data4['Temperature'],
'Amonia4' => $data4['Amonia'],
];
return view('dashboard', $data);
}
public function dioksida(Request $request, $id)
{
try {
$speeds = Dioksida::where('id_alat', $id)->latest()->take(30)->get()->sortBy('id_dioksida');
$labels = $speeds->pluck('created_at')->map(function ($date) {
return $date->format('H:i');
})->toArray();
$data = $speeds->pluck('nilai_dioksida')->toArray();
// Ambil 1 data terakhir
$latestData = Dioksida::latest()->first();
return response()->json([
'labels' => $labels,
'data' => $data,
'latest' => [
'id_dioksida' => $latestData->id_dioksida,
'nilai_dioksida' => $latestData->nilai_dioksida,
'created_at' => $latestData->created_at,
'updated_at' => $latestData->updated_at,
],
]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
public function detaildashboard(Request $request, $id)
{
return view('dashboard/detaildashboard');
}
public function metana(Request $request, $id)
{
try {
$speeds = Metana::where('id_alat', $id)->latest()->take(30)->get()->sortBy('id_metana');
$labels = $speeds->pluck('created_at')->map(function ($date) {
return $date->format('H:i');
})->toArray();
$data = $speeds->pluck('nilai_metana')->toArray();
$latestData = Metana::latest()->first();
return response()->json([
'labels' => $labels,
'data' => $data,
'latest' => [
'id_metana' => $latestData->id_metana,
'nilai_metana' => $latestData->nilai_metana,
'created_at' => $latestData->created_at,
'updated_at' => $latestData->updated_at,
],
]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
public function humidity(Request $request, $id)
{
try {
$speeds = Humidity::where('id_alat', $id)->latest()->take(30)->get()->sortBy('id_humidity');
$labels = $speeds->pluck('created_at')->map(function ($date) {
return $date->format('H:i');
})->toArray();
$data = $speeds->pluck('nilai_humidity')->toArray();
$latestData = Humidity::latest()->first();
return response()->json([
'labels' => $labels,
'data' => $data,
'latest' => [
'id_humidity' => $latestData->id_humidity,
'nilai_humidity' => $latestData->nilai_humidity,
'created_at' => $latestData->created_at,
'updated_at' => $latestData->updated_at,
],
]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
public function temperature(Request $request, $id)
{
try {
$speeds = Temperature::where('id_alat', $id)->latest()->take(30)->get()->sortBy('id_temp');
$labels = $speeds->pluck('created_at')->map(function ($date) {
return $date->format('H:i');
})->toArray();
$data = $speeds->pluck('nilai_suhu')->toArray();
$latestData = Temperature::latest()->first();
return response()->json([
'labels' => $labels,
'data' => $data,
'latest' => [
'id_temp' => $latestData->id_temp,
'nilai_suhu' => $latestData->nilai_suhu,
'created_at' => $latestData->created_at,
'updated_at' => $latestData->updated_at,
],
]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
public function amonia(Request $request, $id)
{
try {
$speeds = Amonia::where('id_alat', $id)->latest()->take(30)->get()->sortBy('id_amonia');
$labels = $speeds->pluck('created_at')->map(function ($date) {
return $date->format('H:i');
})->toArray();
$data = $speeds->pluck('nilai_amonia')->toArray();
$latestData = Amonia::latest()->first();
return response()->json([
'labels' => $labels,
'data' => $data,
'latest' => [
'id_amonia' => $latestData->id_amonia,
'nilai_amonia' => $latestData->nilai_amonia,
'created_at' => $latestData->created_at,
'updated_at' => $latestData->updated_at,
],
]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
}