TIF_E41210713/routes/web.php

160 lines
6.7 KiB
PHP

<?php
use App\Exports\AmmoniaExport;
use App\Exports\DioksidaExport;
use App\Exports\HumidityExport;
use App\Exports\MetanaExport;
use App\Exports\TemperatureExport;
use App\Http\Controllers\ChartsController;
use App\Http\Controllers\RiwayatController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Http;
Route::view('/', 'welcome');
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('dashboard', [ChartsController::class, 'index'])->name('dashboard');
Route::controller(RiwayatController::class)->prefix('/dashboard')->group(function () {
Route::view('detail/1', 'dashboard/detaildashboard1')->name('detail.dashboard1');
Route::view('detail/2', 'dashboard/detaildashboard2')->name('detail.dashboard2');
Route::view('detail/3', 'dashboard/detaildashboard3')->name('detail.dashboard3');
Route::view('detail/4', 'dashboard/detaildashboard4')->name('detail.dashboard4');
});
Route::get('chartdioksida/{id}', [ChartsController::class, 'dioksida'])->name('api.chartdioksida');
Route::get('chartamonia/{id}', [ChartsController::class, 'amonia'])->name('api.chartamonia');
Route::get('chartmetana/{id}', [ChartsController::class, 'metana'])->name('api.chartmetana');
Route::get('charthumidity/{id}', [ChartsController::class, 'humidity'])->name('api.charthumidity');
Route::get('charttemperature/{id}', [ChartsController::class, 'temperature'])->name('api.charttemperature');
Route::view('karyawan', 'karyawan')->name('karyawan');
Route::view('blog', 'blog')->name('blog');
Route::view('addblog', 'addblog')->name('addblog');
Route::view('profile', 'profile')->name('profile');
Route::controller(RiwayatController::class)->prefix('/dashboard')->group(function () {
Route::get('riwayat-temperature', 'riwayatTemperature')->name('riwayat.temperature');
Route::get('riwayat-humidity', 'riwayatHumidity')->name('riwayat.humidity');
Route::get('riwayat-metana', 'riwayatMetana')->name('riwayat.metana');
Route::get('riwayat-dioksida', 'riwayatDioksida')->name('riwayat.dioksida');
Route::get('riwayat-amonia', 'riwayatAmonia')->name('riwayat.amonia');
Route::post('/data/amonia', 'getAmoniaData')->name('data.riwayatamonia');
Route::post('/data/temperature', 'getTemperatureData')->name('data.riwayattemperature');
Route::post('/data/metana', 'getMetanaData')->name('data.riwayatmetana');
Route::post('/data/humidity', 'getHumidityData')->name('data.riwayathumidity');
Route::post('/data/dioksida', 'getDioksidaData')->name('data.riwayatdioksida');
});
Route::get('export/ammonia', function (Request $request) {
$startDate = $request->query('createFrom');
$endDate = $request->query('createTo');
return Excel::download(new AmmoniaExport($startDate, $endDate), 'ammonia_data.xlsx');
})->name('export.ammonia');
Route::get('export/temperature', function (Request $request) {
$startDate = $request->input('createFrom');
$endDate = $request->input('createTo');
return Excel::download(new TemperatureExport($startDate, $endDate), 'temperature_data.xlsx');
})->name('export.temperature');
Route::get('export/humidity', function (Request $request) {
$startDate = $request->input('createFrom');
$endDate = $request->input('createTo');
return Excel::download(new HumidityExport($startDate, $endDate), 'humidity_data.xlsx');
})->name('export.humidity');
Route::get('export/metana', function (Request $request) {
$startDate = $request->input('createFrom');
$endDate = $request->input('createTo');
return Excel::download(new MetanaExport($startDate, $endDate), 'metana_data.xlsx');
})->name('export.metana');
Route::get('export/dioksida', function (Request $request) {
$startDate = $request->input('createFrom');
$endDate = $request->input('createTo');
return Excel::download(new DioksidaExport($startDate, $endDate), 'dioksida_data.xlsx');
})->name('export.dioksida');
Route::post('/receive-data', function (Request $request) {
$data = $request->all();
// Simpan data ke cache sementara
Cache::put('latest_data', $data, 10); // Simpan 10 detik
return response()->json(['message' => 'Data diterima']);
});
// Route::get('/stream-data', function () {
// return response()->stream(function () {
// while (true) {
// if (Cache::has('latest_data')) {
// $data = Cache::get('latest_data');
// echo "data: " . json_encode($data) . "\n\n";
// ob_flush();
// flush();
// }
// sleep(2);
// }
// }, 200, [
// 'Content-Type' => 'text/event-stream',
// 'Cache-Control' => 'no-cache',
// 'Connection' => 'keep-alive',
// ]);
// });
// Route::get('/get-predict', function () {
// $response = Http::post('http://192.168.18.44:5000/predict', [
// 'NH3' => 30,
// 'CH4' => 120,
// 'CO2' => 5500
// ]);
// return response()->json($response->json());
// });
// Route::get('/test-flask', function () {
// try {
// // Ambil data dari Flask API
// $response = Http::get('http://192.168.18.44:5000/get-data');
// // Pastikan Flask mengembalikan JSON yang valid
// if ($response->successful()) {
// return response()->json($response->json());
// } else {
// return response()->json(['error' => 'Gagal mengambil data dari Flask'], 500);
// }
// } catch (\Exception $e) {
// return response()->json(['error' => $e->getMessage()], 500);
// }
// });
Route::get('/get-sensor-data', function () {
try {
// URL Flask
$flaskUrl = 'http://192.168.18.44:5000/predict';
// Kirim permintaan GET ke Flask
$response = Http::get($flaskUrl);
// Cek jika Flask merespons dengan sukses
if ($response->successful()) {
return response()->json($response->json());
} else {
return response()->json(['error' => 'Flask API tidak merespons dengan sukses'], 500);
}
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
});
});
require __DIR__ . '/auth.php';