TKK_E32211375/website/monitoring-cabai/app/Http/Controllers/DashboardHistoryController.php

119 lines
4.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Sensors;
use App\Models\Kebun;
use Illuminate\Http\Request;
use Carbon\Carbon;
use Illuminate\Support\Facades\Auth;
class DashboardHistoryController extends Controller
{
public function index(Request $request)
{
$user = Auth::user();
// Query data from the Sensors model
$sensors = Sensors::query();
// Retrieve and store the start_date and end_date query parameters
$start_date = $request->input('start_date');
$end_date = $request->input('end_date');
// Filter data based on the date range if start_date and end_date are provided
if ($start_date && $end_date) {
$startDate = Carbon::createFromFormat('Y-m-d H:i', $start_date);
$endDate = Carbon::createFromFormat('Y-m-d H:i', $end_date);
$sensors->whereBetween('created_at', [$startDate, $endDate]);
}
// Retrieve and store the kebun_id query parameter
$kebunId = $request->input('kebun_id');
// Filter data based on kebun_id if it is provided
if ($kebunId) {
$sensors->where('kebun_id', $kebunId)->whereHas('kebun', function ($query) use ($user) {
$query->where('user_id', $user->id);
});
} else {
// Filter data only by kebun owned by the user
$sensors->whereHas('kebun', function ($query) use ($user) {
$query->where('user_id', $user->id);
});
}
// Mendapatkan data kebun dari model Kebun yang dimiliki oleh user saat ini
$kebunOptions = Kebun::where('user_id', $user->id)->pluck('name', 'id');
// Pagination with the query parameters start_date and end_date
$sensors = $sensors->latest()->paginate(15)->appends(['start_date' => $start_date, 'end_date' => $end_date, 'kebun_id' => $kebunId]);
// Return data to the view, sorted from newest to oldest
return view('dashboard.histories.index', [
'title' => 'Dashboard | Histories',
'today' => Carbon::now()->format('Y-m-d'),
'sensors' => $sensors,
'kebuns' => $kebunOptions,
]);
}
public function cetak(Request $request)
{
$user = Auth::user();
$sensors = Sensors::query();
// Retrieve kebun name from the request
$kebunName = $request->input('kebun_name');
$start_date = $request->input('start_date');
$end_date = $request->input('end_date');
if ($start_date && $end_date) {
$startDate = Carbon::createFromFormat('Y-m-d H:i', $start_date);
$endDate = Carbon::createFromFormat('Y-m-d H:i', $end_date);
$sensors->whereBetween('created_at', [$startDate, $endDate]);
}
$kebunId = $request->input('kebun_id');
$kebun = Kebun::find($kebunId);
if ($kebunId) {
$sensors->where('kebun_id', $kebunId)->whereHas('kebun', function ($query) use ($user) {
$query->where('user_id', $user->id);
});
} else {
$sensors->whereHas('kebun', function ($query) use ($user) {
$query->where('user_id', $user->id);
});
}
return view('dashboard.histories.cetakhistory', [
'title' => 'Dashboard | Cetak History',
'sensors' => $sensors->latest()->get(),
'kebun' => $kebun,
'kebun_name' => $kebunName ?? 'Semua Kebun', // Pass the kebun name from the request
'start_date' => $start_date,
'end_date' => $end_date
]);
}
public function show($id)
{
$kebun = Kebun::findOrFail($id); // Find the selected garden by ID
$sensors = Sensors::where('kebun_id', $kebun->id)->get(); // Fetch sensor data for the selected garden
return view('data-monitoring', [
'kebun' => $kebun,
'sensors' => $sensors
]);
}
public function destroy(Sensors $control)
{
$date = $control->created_at->format('Y-m-d');
Sensors::destroy($control->id);
return redirect('/dashboard/sensors?filter=' . $date)->with('success', 'Data berhasil dihapus!');
}
}