Rework admin panel and other

This commit is contained in:
F4ilji
2025-04-02 18:37:20 +05:00
parent 49072e50c7
commit 5cd6ff11b5
198 changed files with 9715 additions and 6664 deletions
@@ -9,23 +9,47 @@ use Filament\Tables;
use Filament\Tables\Actions\AttachAction;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class WorkersRelationManager extends RelationManager
{
protected static string $relationship = 'workers';
protected static ?string $title = 'Сотрудники';
protected static ?string $title = 'Сотрудники факультета';
protected static ?string $modelLabel = 'сотрудник';
protected static ?string $pluralModelLabel = 'сотрудники';
public function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('position')->label('Должность')->required(),
Forms\Components\TextInput::make('service_email')->label('Служебная почта'),
Forms\Components\TextInput::make('service_phone')->label('Служебный телефон'),
Forms\Components\TextInput::make('cabinet')->label('Кабинет'),
Forms\Components\Grid::make(2)
->schema([
Forms\Components\TextInput::make('position')
->label('Должность')
->required()
->maxLength(255)
->placeholder('Например: Декан факультета')
->helperText('Укажите официальную должность'),
Forms\Components\TextInput::make('service_email')
->label('Рабочая почта')
->email()
->maxLength(255)
->placeholder('example@university.ru')
->helperText('Корпоративная электронная почта'),
Forms\Components\TextInput::make('service_phone')
->label('Рабочий телефон')
->tel()
->maxLength(20)
->placeholder('+7 (XXX) XXX-XX-XX')
->helperText('Номер рабочего телефона с кодом'),
Forms\Components\TextInput::make('cabinet')
->label('Кабинет')
->maxLength(10)
->placeholder('Например: 305а')
->helperText('Номер кабинета для приема'),
])
]);
}
@@ -36,9 +60,34 @@ class WorkersRelationManager extends RelationManager
->reorderable('sort')
->defaultSort('sort')
->columns([
Tables\Columns\TextColumn::make('name')->label('Имя'),
Tables\Columns\TextColumn::make('position')->label('Должность'),
Tables\Columns\TextColumn::make('name')
->label('ФИО')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('position')
->label('Должность')
->searchable()
->sortable()
->limit(30),
Tables\Columns\TextColumn::make('service_email')
->label('Почта')
->searchable()
->icon('heroicon-o-envelope')
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('service_phone')
->label('Телефон')
->searchable()
->icon('heroicon-o-phone')
->toggleable(isToggledHiddenByDefault: true),
Tables\Columns\TextColumn::make('cabinet')
->label('Кабинет')
->searchable()
->icon('heroicon-o-home-modern')
->toggleable(isToggledHiddenByDefault: false),
])
->filters([
//
@@ -46,21 +95,70 @@ class WorkersRelationManager extends RelationManager
->headerActions([
AttachAction::make()
->form(fn (AttachAction $action): array => [
$action->getRecordSelect()->preload(),
Forms\Components\TextInput::make('position')->label('Должность')->required(),
Forms\Components\TextInput::make('service_email')->label('Служебная почта'),
Forms\Components\TextInput::make('service_phone')->label('Служебный телефон'),
Forms\Components\TextInput::make('cabinet')->label('Кабинет'),
$action->getRecordSelect()
->label('Сотрудник')
->searchable()
->preload()
->required()
->helperText('Выберите сотрудника из списка'),
Forms\Components\TextInput::make('position')
->label('Должность на факультете')
->required()
->maxLength(255)
->placeholder('Например: Старший преподаватель')
->helperText('Укажите должность на этом факультете'),
Forms\Components\Grid::make(1)
->schema([
Forms\Components\TextInput::make('service_email')
->label('Рабочая почта')
->email()
->maxLength(255)
->placeholder('example@university.ru')
->helperText('Корпоративная электронная почта'),
Forms\Components\TextInput::make('service_phone')
->label('Рабочий телефон')
->tel()
->maxLength(20)
->placeholder('+7 (XXX) XXX-XX-XX')
->helperText('Номер рабочего телефона с кодом'),
Forms\Components\TextInput::make('cabinet')
->label('Кабинет')
->maxLength(10)
->placeholder('Например: 305а')
->helperText('Номер кабинета для приема'),
])
])
->modalHeading('Добавить сотрудника')
->modalSubmitActionLabel('Добавить')
->modalButton('Добавить')
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DetachAction::make(),
Tables\Actions\EditAction::make()
->iconButton()
->tooltip('Редактировать'),
Tables\Actions\DetachAction::make()
->iconButton()
->tooltip('Открепить')
->modalHeading('Открепить сотрудника')
->modalDescription('Вы уверены, что хотите открепить этого сотрудника от факультета?')
->modalSubmitActionLabel('Открепить'),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DetachBulkAction::make(),
Tables\Actions\DetachBulkAction::make()
->label('Открепить выбранных')
->modalHeading('Открепить сотрудников')
->modalDescription('Вы уверены, что хотите открепить выбранных сотрудников от факультета?')
->modalSubmitActionLabel('Открепить'),
]),
]);
])
->emptyStateHeading('Нет сотрудников')
->emptyStateDescription('Добавьте сотрудников, используя кнопку выше')
->emptyStateIcon('heroicon-o-user-group');
}
}
}