Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 20 additions & 12 deletions app/Bot/Commands/Manager/ViewShiftsCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,18 @@
use App\Bot\Abstracts\BaseCommandHandler;
use App\Models\User;
use App\Models\Shift;
use App\Traits\MaterialDesign3Trait;
use SergiX44\Nutgram\Nutgram;
use Carbon\Carbon;

/**
* Command for managers to view shifts
* Command for managers to view shifts.
* MD3: List presentation with status indicators.
*/
class ViewShiftsCommand extends BaseCommandHandler
{
use MaterialDesign3Trait;

protected string $command = 'viewshifts';
protected ?string $description = 'Просмотр смен';

Expand All @@ -37,33 +41,37 @@ protected function execute(Nutgram $bot, User $user): void
->with('user')
->get();

$message = "📊 *Смены сегодня*\n\n";
$lines = [];
$lines[] = '📊 *Смены сегодня*';

if ($todayShifts->isEmpty() && $completedShifts->isEmpty()) {
$message .= "Нет смен на сегодня.\n";
$lines[] = '';
$lines[] = 'Нет смен на сегодня';
} else {
if ($todayShifts->isNotEmpty()) {
$message .= "*Активные смены:*\n";
$lines[] = '';
$lines[] = '*Активные:*';
foreach ($todayShifts as $shift) {
$startTime = $shift->actual_start->format('H:i');
$status = $shift->status === 'late' ? '🔴 Опоздание' : '🟢 Вовремя';
$message .= " {$shift->user->name} ({$startTime}) - {$status}\n";
$status = $shift->status === 'late' ? '🔴' : '🟢';
$lines[] = "{$status} {$shift->user->name} · {$startTime}";
}
$message .= "\n";
}

if ($completedShifts->isNotEmpty()) {
$message .= "*Завершённые смены:*\n";
$lines[] = '';
$lines[] = '*Завершённые:*';
foreach ($completedShifts as $shift) {
$startTime = $shift->actual_start->format('H:i');
$endTime = $shift->actual_end?->format('H:i') ?? 'N/A';
$message .= " {$shift->user->name} ({$startTime} - {$endTime})\n";
$endTime = $shift->actual_end?->format('H:i') ?? '';
$lines[] = " {$shift->user->name} · {$startTime}{$endTime}";
}
}
}

$message .= "\n💡 Для полного функционала используйте веб-админку.";
$lines[] = '';
$lines[] = '💡 Полный функционал в веб-админке';

$bot->sendMessage($message, parse_mode: 'Markdown');
$bot->sendMessage(implode("\n", $lines), parse_mode: 'Markdown');
}
}
22 changes: 15 additions & 7 deletions app/Bot/Commands/Manager/ViewTasksCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
use App\Bot\Abstracts\BaseCommandHandler;
use App\Models\User;
use App\Models\Task;
use App\Traits\MaterialDesign3Trait;
use SergiX44\Nutgram\Nutgram;

/**
* Command for managers to view tasks
* Command for managers to view tasks.
* MD3: Task list with status summary chips.
*/
class ViewTasksCommand extends BaseCommandHandler
{
use MaterialDesign3Trait;

protected string $command = 'viewtasks';
protected ?string $description = 'Просмотр задач';

Expand All @@ -30,13 +34,16 @@ protected function execute(Nutgram $bot, User $user): void
->take(10)
->get();

$message = "📋 *Задачи*\n\n";
$lines = [];
$lines[] = '📋 *Задачи*';

if ($tasks->isEmpty()) {
$message .= "Нет активных задач.\n";
$lines[] = '';
$lines[] = 'Нет активных задач';
} else {
foreach ($tasks as $task) {
$message .= "*{$task->title}*\n";
$lines[] = '';
$lines[] = "*{$task->title}*";

// Count statuses
$completed = 0;
Expand All @@ -59,12 +66,13 @@ protected function execute(Nutgram $bot, User $user): void
}

$total = $task->assignments->count();
$message .= "Назначено: {$total} | ✅ {$completed} | 👁️ {$acknowledged} | ⏸️ {$pending}\n\n";
$lines[] = "👥 {$total} · ✅ {$completed} · 👁️ {$acknowledged} · ⏳ {$pending}";
}
}

$message .= "💡 Для управления задачами используйте веб-админку.";
$lines[] = '';
$lines[] = '💡 Управление в веб-админке';

$bot->sendMessage($message, parse_mode: 'Markdown');
$bot->sendMessage(implode("\n", $lines), parse_mode: 'Markdown');
}
}
25 changes: 17 additions & 8 deletions app/Bot/Commands/Owner/ViewDealershipsCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
use App\Bot\Abstracts\BaseCommandHandler;
use App\Models\User;
use App\Models\AutoDealership;
use App\Traits\MaterialDesign3Trait;
use SergiX44\Nutgram\Nutgram;

/**
* Command for owners to view dealerships
* Command for owners to view dealerships.
* MD3: Card list with location and stats.
*/
class ViewDealershipsCommand extends BaseCommandHandler
{
use MaterialDesign3Trait;

protected string $command = 'viewdealerships';
protected ?string $description = 'Просмотр салонов';

Expand All @@ -22,20 +26,25 @@ protected function execute(Nutgram $bot, User $user): void
// Get all dealerships
$dealerships = AutoDealership::withCount('users')->get();

$message = "🏢 *Автосалоны*\n\n";
$lines = [];
$lines[] = '🏢 *Автосалоны*';

if ($dealerships->isEmpty()) {
$message .= "Нет автосалонов в системе.\n";
$lines[] = '';
$lines[] = 'Нет салонов в системе';
} else {
foreach ($dealerships as $dealership) {
$message .= "*{$dealership->name}*\n";
$message .= "📍 {$dealership->address}\n";
$message .= "👥 Сотрудников: {$dealership->users_count}\n\n";
$lines[] = '';
$lines[] = "*{$dealership->name}*";
$lines[] = "📍 {$dealership->address}";
$lines[] = "👥 {$dealership->users_count} " .
$this->pluralizeRu($dealership->users_count, 'сотрудник', 'сотрудника', 'сотрудников');
}
}

$message .= "💡 Для управления салонами используйте веб-админку.";
$lines[] = '';
$lines[] = '💡 Управление в веб-админке';

$bot->sendMessage($message, parse_mode: 'Markdown');
$bot->sendMessage(implode("\n", $lines), parse_mode: 'Markdown');
}
}
Loading
Loading