119 lines
4.2 KiB
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!');
|
|
}
|
|
}
|