Додадено е филтрирање по датумски опсег за подобро управување со активностите.
// Во контролерот
$activities = Activity::whereDate('created_at', '>=', '2024-01-01')
->whereDate('created_at', '<=', '2024-12-31')
->get();today- Денесyesterday- Вчераlast_7_days- Последни 7 деновиlast_30_days- Последни 30 деновиlast_3_months- Последни 3 месециlast_6_months- Последни 6 месециlast_year- Последна година
/activity?date_from=2024-01-01&date_to=2024-12-31
/activity?period=last_7_days
// config/laravel-logger.php
'enableDateFiltering' => env('LARAVEL_LOGGER_ENABLE_DATE_FILTERING', true),Додадена е функционалност за експорт на активности во различни формати.
// URL
/activity/export?format=csv
// Метод
public function exportToCsv($activities)
{
$filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.csv';
// ... имплементација
}// URL
/activity/export?format=json
// Метод
public function exportToJson($activities)
{
$filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.json';
// ... имплементација
}// URL
/activity/export?format=excel
// Метод
public function exportToExcel($activities)
{
$filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.xlsx';
// ... имплементација
}// Експорт со филтри
/activity/export?format=csv&date_from=2024-01-01&date_to=2024-12-31
/activity/export?format=json&period=last_7_days&user=123// config/laravel-logger.php
'enableExport' => env('LARAVEL_LOGGER_ENABLE_EXPORT', true),{{-- Додај го во activity-log.blade.php --}}
@include('LaravelLogger::partials.filter-export-form')// Додај го во scripts.blade.php
document.getElementById("period").addEventListener("change", function () {
if (this.value) {
document.getElementById("date_from").value = "";
document.getElementById("date_to").value = "";
}
});// Во контролерот
public function exportActivityLog(Request $request)
{
$format = $request->get('format', 'csv');
$activities = Activity::orderBy('created_at', 'desc');
// Примени филтри
if (config('LaravelLogger.enableDateFiltering')) {
$activities = $this->applyDateFilter($activities, $request);
}
// Експорт
switch ($format) {
case 'csv':
return $this->exportToCsv($activities->get());
case 'json':
return $this->exportToJson($activities->get());
case 'excel':
return $this->exportToExcel($activities->get());
}
}// routes/web.php
Route::get('/export', ['uses' => 'LaravelLoggerController@exportActivityLog'])->name('export-activity');// resources/lang/en/laravel-logger.php
'filterAndExport' => 'Filter and Export',
'fromDate' => 'From Date',
'toDate' => 'To Date',
'exportCSV' => 'Export CSV',
'exportJSON' => 'Export JSON',
'exportExcel' => 'Export Excel',
// ... повеќе преводиcomposer require jeremykenedy/laravel-loggerphp artisan vendor:publish --provider="jeremykenedy\LaravelLogger\LaravelLoggerServiceProvider"// routes/web.php
Route::group(['middleware' => ['web', 'auth']], function () {
// Додај ги Laravel Logger рутите
});{{-- Во твојот layout --}}
@include('LaravelLogger::partials.filter-export-form')// Во контролерот
public function getFilteredActivities(Request $request)
{
$activities = Activity::orderBy('created_at', 'desc');
// Примени филтри
if ($request->filled('date_from')) {
$activities->whereDate('created_at', '>=', $request->get('date_from'));
}
if ($request->filled('period')) {
switch ($request->get('period')) {
case 'last_7_days':
$activities->where('created_at', '>=', now()->subDays(7));
break;
// ... повеќе случаи
}
}
return $activities->get();
}$todayCount = Activity::whereDate('created_at', today())->count();
$weekCount = Activity::where('created_at', '>=', now()->subDays(7))->count();
$monthCount = Activity::where('created_at', '>=', now()->subDays(30))->count();- Подобрена перформанса - Филтрирање на ниво на база на податоци
- Флексибилност - Поддршка за различни формати на експорт
- Корисничко искуство - Интуитивен интерфејс за филтрирање
- Скалабилност - Ефикасно управување со големи количини на податоци
- Интеграција - Лесна интеграција со постоечки системи