|
| 1 | +# Laravel Logger - Ново фичиња |
| 2 | + |
| 3 | +## 📅 Филтрирање по датум |
| 4 | + |
| 5 | +### Опис |
| 6 | + |
| 7 | +Додадено е филтрирање по датумски опсег за подобро управување со активностите. |
| 8 | + |
| 9 | +### Користење |
| 10 | + |
| 11 | +#### 1. Филтрирање по датумски опсег |
| 12 | + |
| 13 | +```php |
| 14 | +// Во контролерот |
| 15 | +$activities = Activity::whereDate('created_at', '>=', '2024-01-01') |
| 16 | + ->whereDate('created_at', '<=', '2024-12-31') |
| 17 | + ->get(); |
| 18 | +``` |
| 19 | + |
| 20 | +#### 2. Преддефинирани периоди |
| 21 | + |
| 22 | +- `today` - Денес |
| 23 | +- `yesterday` - Вчера |
| 24 | +- `last_7_days` - Последни 7 денови |
| 25 | +- `last_30_days` - Последни 30 денови |
| 26 | +- `last_3_months` - Последни 3 месеци |
| 27 | +- `last_6_months` - Последни 6 месеци |
| 28 | +- `last_year` - Последна година |
| 29 | + |
| 30 | +#### 3. URL параметри |
| 31 | + |
| 32 | +``` |
| 33 | +/activity?date_from=2024-01-01&date_to=2024-12-31 |
| 34 | +/activity?period=last_7_days |
| 35 | +``` |
| 36 | + |
| 37 | +### Конфигурација |
| 38 | + |
| 39 | +```php |
| 40 | +// config/laravel-logger.php |
| 41 | +'enableDateFiltering' => env('LARAVEL_LOGGER_ENABLE_DATE_FILTERING', true), |
| 42 | +``` |
| 43 | + |
| 44 | +## 📊 Експорт функционалност |
| 45 | + |
| 46 | +### Опис |
| 47 | + |
| 48 | +Додадена е функционалност за експорт на активности во различни формати. |
| 49 | + |
| 50 | +### Поддржани формати |
| 51 | + |
| 52 | +#### 1. CSV експорт |
| 53 | + |
| 54 | +```php |
| 55 | +// URL |
| 56 | +/activity/export?format=csv |
| 57 | + |
| 58 | +// Метод |
| 59 | +public function exportToCsv($activities) |
| 60 | +{ |
| 61 | + $filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.csv'; |
| 62 | + // ... имплементација |
| 63 | +} |
| 64 | +``` |
| 65 | + |
| 66 | +#### 2. JSON експорт |
| 67 | + |
| 68 | +```php |
| 69 | +// URL |
| 70 | +/activity/export?format=json |
| 71 | + |
| 72 | +// Метод |
| 73 | +public function exportToJson($activities) |
| 74 | +{ |
| 75 | + $filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.json'; |
| 76 | + // ... имплементација |
| 77 | +} |
| 78 | +``` |
| 79 | + |
| 80 | +#### 3. Excel експорт |
| 81 | + |
| 82 | +```php |
| 83 | +// URL |
| 84 | +/activity/export?format=excel |
| 85 | + |
| 86 | +// Метод |
| 87 | +public function exportToExcel($activities) |
| 88 | +{ |
| 89 | + $filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.xlsx'; |
| 90 | + // ... имплементација |
| 91 | +} |
| 92 | +``` |
| 93 | + |
| 94 | +### Користење со филтри |
| 95 | + |
| 96 | +```php |
| 97 | +// Експорт со филтри |
| 98 | +/activity/export?format=csv&date_from=2024-01-01&date_to=2024-12-31 |
| 99 | +/activity/export?format=json&period=last_7_days&user=123 |
| 100 | +``` |
| 101 | + |
| 102 | +### Конфигурација |
| 103 | + |
| 104 | +```php |
| 105 | +// config/laravel-logger.php |
| 106 | +'enableExport' => env('LARAVEL_LOGGER_ENABLE_EXPORT', true), |
| 107 | +``` |
| 108 | + |
| 109 | +## 🎨 Frontend интеграција |
| 110 | + |
| 111 | +### Blade template пример |
| 112 | + |
| 113 | +```blade |
| 114 | +{{-- Додај го во activity-log.blade.php --}} |
| 115 | +@include('LaravelLogger::partials.filter-export-form') |
| 116 | +``` |
| 117 | + |
| 118 | +### JavaScript за динамично филтрирање |
| 119 | + |
| 120 | +```javascript |
| 121 | +// Додај го во scripts.blade.php |
| 122 | +document.getElementById("period").addEventListener("change", function () { |
| 123 | + if (this.value) { |
| 124 | + document.getElementById("date_from").value = ""; |
| 125 | + document.getElementById("date_to").value = ""; |
| 126 | + } |
| 127 | +}); |
| 128 | +``` |
| 129 | + |
| 130 | +## 🔧 API употреба |
| 131 | + |
| 132 | +### Експорт преку API |
| 133 | + |
| 134 | +```php |
| 135 | +// Во контролерот |
| 136 | +public function exportActivityLog(Request $request) |
| 137 | +{ |
| 138 | + $format = $request->get('format', 'csv'); |
| 139 | + $activities = Activity::orderBy('created_at', 'desc'); |
| 140 | + |
| 141 | + // Примени филтри |
| 142 | + if (config('LaravelLogger.enableDateFiltering')) { |
| 143 | + $activities = $this->applyDateFilter($activities, $request); |
| 144 | + } |
| 145 | + |
| 146 | + // Експорт |
| 147 | + switch ($format) { |
| 148 | + case 'csv': |
| 149 | + return $this->exportToCsv($activities->get()); |
| 150 | + case 'json': |
| 151 | + return $this->exportToJson($activities->get()); |
| 152 | + case 'excel': |
| 153 | + return $this->exportToExcel($activities->get()); |
| 154 | + } |
| 155 | +} |
| 156 | +``` |
| 157 | + |
| 158 | +## 📝 Рути |
| 159 | + |
| 160 | +### Нови рути |
| 161 | + |
| 162 | +```php |
| 163 | +// routes/web.php |
| 164 | +Route::get('/export', ['uses' => 'LaravelLoggerController@exportActivityLog'])->name('export-activity'); |
| 165 | +``` |
| 166 | + |
| 167 | +## 🌐 Преводи |
| 168 | + |
| 169 | +### Англиски (en) |
| 170 | + |
| 171 | +```php |
| 172 | +// resources/lang/en/laravel-logger.php |
| 173 | +'filterAndExport' => 'Filter and Export', |
| 174 | +'fromDate' => 'From Date', |
| 175 | +'toDate' => 'To Date', |
| 176 | +'exportCSV' => 'Export CSV', |
| 177 | +'exportJSON' => 'Export JSON', |
| 178 | +'exportExcel' => 'Export Excel', |
| 179 | +// ... повеќе преводи |
| 180 | +``` |
| 181 | + |
| 182 | +## 🚀 Инсталација и употреба |
| 183 | + |
| 184 | +### 1. Инсталирај го пакетот |
| 185 | + |
| 186 | +```bash |
| 187 | +composer require jeremykenedy/laravel-logger |
| 188 | +``` |
| 189 | + |
| 190 | +### 2. Публикувај ги конфигурациите |
| 191 | + |
| 192 | +```bash |
| 193 | +php artisan vendor:publish --provider="jeremykenedy\LaravelLogger\LaravelLoggerServiceProvider" |
| 194 | +``` |
| 195 | + |
| 196 | +### 3. Додај ги рутите |
| 197 | + |
| 198 | +```php |
| 199 | +// routes/web.php |
| 200 | +Route::group(['middleware' => ['web', 'auth']], function () { |
| 201 | + // Додај ги Laravel Logger рутите |
| 202 | +}); |
| 203 | +``` |
| 204 | + |
| 205 | +### 4. Користи го во Blade |
| 206 | + |
| 207 | +```blade |
| 208 | +{{-- Во твојот layout --}} |
| 209 | +@include('LaravelLogger::partials.filter-export-form') |
| 210 | +``` |
| 211 | + |
| 212 | +## 🔍 Пример за користење |
| 213 | + |
| 214 | +### Филтрирање и експорт |
| 215 | + |
| 216 | +```php |
| 217 | +// Во контролерот |
| 218 | +public function getFilteredActivities(Request $request) |
| 219 | +{ |
| 220 | + $activities = Activity::orderBy('created_at', 'desc'); |
| 221 | + |
| 222 | + // Примени филтри |
| 223 | + if ($request->filled('date_from')) { |
| 224 | + $activities->whereDate('created_at', '>=', $request->get('date_from')); |
| 225 | + } |
| 226 | + |
| 227 | + if ($request->filled('period')) { |
| 228 | + switch ($request->get('period')) { |
| 229 | + case 'last_7_days': |
| 230 | + $activities->where('created_at', '>=', now()->subDays(7)); |
| 231 | + break; |
| 232 | + // ... повеќе случаи |
| 233 | + } |
| 234 | + } |
| 235 | + |
| 236 | + return $activities->get(); |
| 237 | +} |
| 238 | +``` |
| 239 | + |
| 240 | +## 📊 Статистики |
| 241 | + |
| 242 | +### Број на активности по период |
| 243 | + |
| 244 | +```php |
| 245 | +$todayCount = Activity::whereDate('created_at', today())->count(); |
| 246 | +$weekCount = Activity::where('created_at', '>=', now()->subDays(7))->count(); |
| 247 | +$monthCount = Activity::where('created_at', '>=', now()->subDays(30))->count(); |
| 248 | +``` |
| 249 | + |
| 250 | +## 🎯 Предности |
| 251 | + |
| 252 | +1. **Подобрена перформанса** - Филтрирање на ниво на база на податоци |
| 253 | +2. **Флексибилност** - Поддршка за различни формати на експорт |
| 254 | +3. **Корисничко искуство** - Интуитивен интерфејс за филтрирање |
| 255 | +4. **Скалабилност** - Ефикасно управување со големи количини на податоци |
| 256 | +5. **Интеграција** - Лесна интеграција со постоечки системи |
0 commit comments