reminder for todos
This commit is contained in:
1 parent
f78740fbb0
commit
ec6d7e2a80
9 files changed
+171
-27
No files matched your search
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Actions;
|
||||
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\ActionGroup;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class SetReminderAction extends ActionGroup
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->label('Erinnerung')
|
||||
->tooltip('Wiedervorlage setzen')
|
||||
->icon(Heroicon::BellSnooze)
|
||||
->iconButton()
|
||||
->visible(function (Model $record) {
|
||||
return $record->is_owner_or_assigned();
|
||||
})
|
||||
->actions([
|
||||
Action::make('reminderIn1Day')
|
||||
->label('in 1 Tag')
|
||||
->action(fn (Model $record) => $record->update(['follow_up' => now()->addDay()])),
|
||||
Action::make('reminderIn3Days')
|
||||
->label('in 3 Tagen')
|
||||
->action(fn (Model $record) => $record->update(['follow_up' => now()->addDays(3)])),
|
||||
Action::make('reminderIn1Week')
|
||||
->label('in 1 Woche')
|
||||
->action(fn (Model $record) => $record->update(['follow_up' => now()->addWeek()])),
|
||||
Action::make('reminderIn1Month')
|
||||
->label('in 1 Monat')
|
||||
->action(fn (Model $record) => $record->update(['follow_up' => now()->addMonth()])),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace App\Filament\Resources\Todos\Pages;
|
||||
|
||||
use App\Filament\Actions\DoneTodoAction;
|
||||
use App\Filament\Actions\ReopenTodoAction;
|
||||
use App\Filament\Actions\SetReminderAction;
|
||||
use App\Filament\Resources\Todos\TodoResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
@@ -18,6 +19,7 @@ class EditTodo extends EditRecord
|
||||
return [
|
||||
DoneTodoAction::make('done'),
|
||||
ReopenTodoAction::make('reopen'),
|
||||
SetReminderAction::make([]),
|
||||
DeleteAction::make()->iconButton()->icon(Heroicon::Trash),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class TodoForm
|
||||
Toggle::make('review')->label('Review')->hint('Todo geht nach Erledigung noch mal zum Ersteller'),
|
||||
|
||||
]),
|
||||
// DatePicker::make('follow_up')->label('Wiedervorlage/Erinnerung'),
|
||||
DatePicker::make('follow_up')->label('Wiedervorlage/Erinnerung')->hiddenOn(['create']),
|
||||
DatePicker::make('done_date')->label('Erledigt am')->hiddenOn(['create']),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -4,14 +4,13 @@ namespace App\Filament\Resources\Todos\Tables;
|
||||
|
||||
use App\Filament\Actions\DoneTodoAction;
|
||||
use App\Filament\Actions\ReopenTodoAction;
|
||||
use App\Filament\Actions\SetReminderAction;
|
||||
use App\Models\Group;
|
||||
use App\Models\User;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Columns\IconColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Filters\Filter;
|
||||
@@ -52,10 +51,10 @@ class TodosTable
|
||||
->label('Erledigt am')
|
||||
->date()
|
||||
->sortable(),
|
||||
// TextColumn::make('follow_up')
|
||||
// ->label('Wiedervorlage')
|
||||
// ->date()
|
||||
// ->sortable(),
|
||||
TextColumn::make('follow_up')
|
||||
->label('Wiedervorlage')
|
||||
->date()
|
||||
->sortable(),
|
||||
IconColumn::make('review')
|
||||
->label('Review')
|
||||
->boolean(),
|
||||
@@ -66,6 +65,7 @@ class TodosTable
|
||||
->label('nicht erledigt')
|
||||
->query(function (Builder $query) {
|
||||
$query->whereNull('done_date');
|
||||
|
||||
return $query;
|
||||
}),
|
||||
Filter::make('mine')->label('von mir oder für mich')
|
||||
@@ -76,8 +76,24 @@ class TodosTable
|
||||
->orWhere('user_id', filament()->auth()->user()->id)
|
||||
->orWhere('todoable_type', User::class)->where('todoable_id', filament()->auth()->user()->id)
|
||||
->orwhere('todoable_type', Group::class)->whereIn('todoable_id', User::find(filament()->auth()->user()->id)->groups()->get()->pluck('id'));
|
||||
|
||||
return $query;
|
||||
});
|
||||
|
||||
return $query;
|
||||
}),
|
||||
Filter::make('keineZukuenftigeWiedervorlage')
|
||||
->label('ohne zukünftige Wiedervorlage')
|
||||
->default()
|
||||
->query(function (Builder $query) {
|
||||
$query->where(function (Builder $query) {
|
||||
$query
|
||||
->whereNull('follow_up')
|
||||
->orWhereDate('follow_up', '<=', today());
|
||||
|
||||
return $query;
|
||||
});
|
||||
|
||||
return $query;
|
||||
}),
|
||||
|
||||
@@ -85,6 +101,7 @@ class TodosTable
|
||||
->recordActions([
|
||||
DoneTodoAction::make('done'),
|
||||
ReopenTodoAction::make('reopen'),
|
||||
SetReminderAction::make([]),
|
||||
EditAction::make()->iconButton(),
|
||||
DeleteAction::make()->iconButton()
|
||||
->visible(function (Model $record) {
|
||||
|
||||
Reference in new issue
Block a user