Skip to content

Commit 801527d

Browse files
reimplement logic on update status for point
1 parent 2dcb334 commit 801527d

File tree

3 files changed

+48
-34
lines changed

3 files changed

+48
-34
lines changed

app/Filament/Resources/PointResource.php

Lines changed: 42 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
use Filament\Forms\Components\Select;
1515
use Filament\Notifications\Notification;
1616
use Filament\Resources\Resource;
17+
use Filament\Support\Enums\MaxWidth;
1718
use Filament\Tables;
1819
use Filament\Tables\Actions\BulkAction;
20+
use Filament\Tables\Actions\BulkActionGroup;
1921
use Filament\Tables\Actions\DeleteBulkAction;
2022
use Filament\Tables\Columns\TextColumn;
2123
use Filament\Tables\Enums\FiltersLayout;
@@ -101,40 +103,49 @@ public static function table(Table $table): Table
101103
]
102104
)
103105
->bulkActions([
104-
Tables\Actions\BulkActionGroup::make([
105-
106-
BulkAction::make('change-status')
107-
->label(__('map_points.buttons.change_status'))
108-
->form([
109-
Select::make('status')
110-
->label(__('map_points.fields.status'))
111-
->options(Status::options())
112-
->required(),
113-
])
114-
->action(function (array $data, Collection $records): void {
106+
BulkActionGroup::make([
107+
BulkAction::make('change-status-verified')
108+
->label(__('map_points.buttons.change_status_verified'))
109+
->action(function (Collection $records): void {
115110
$recordsWithoutIssues = $records->filter(function ($record) {
116-
return $record->issues->isEmpty();
117-
});
111+
$record->load('problems');
118112

119-
$recordsWithoutIssues->map->changeStatus(Status::from($data['status']));
120-
121-
if ($records->count() === $recordsWithoutIssues->count()) {
122-
Notification::make('success_status_changed')
123-
->body(__('map_points.notifications.status_changed.success'))
124-
->success()
125-
->send();
126-
} else {
127-
Notification::make('warning_status_changed')
128-
->body(__('map_points.notifications.status_changed.warning', [
129-
'count' => $records->count() - $recordsWithoutIssues->count(),
130-
]))
131-
->warning()
132-
->send();
133-
}
113+
return $record->problems->isEmpty();
114+
});
115+
Point::whereIn('id', $recordsWithoutIssues->pluck('id')->toArray())
116+
->update([
117+
'verified_at' => now(),
118+
]);
119+
Notification::make('success_status_changed')
120+
->body(__('map_points.notifications.status_change_verified'))
121+
->success()
122+
->send();
134123
})
135124
->deselectRecordsAfterCompletion()
136125
->icon('heroicon-o-check')
137-
->color('warning')
126+
->color('primary')
127+
->requiresConfirmation(),
128+
129+
BulkAction::make('change-status-unverified')
130+
->label(__('map_points.buttons.change_status_unverified'))
131+
->action(function (Collection $records): void {
132+
$recordsWithoutIssues = $records->filter(function ($record) {
133+
$record->load('problems');
134+
135+
return $record->problems->isEmpty();
136+
});
137+
Point::whereIn('id', $recordsWithoutIssues->pluck('id')->toArray())
138+
->update([
139+
'verified_at' => null,
140+
]);
141+
Notification::make('success_status_changed')
142+
->body(__('map_points.notifications.status_change_verified'))
143+
->success()
144+
->send();
145+
})
146+
->deselectRecordsAfterCompletion()
147+
->icon('heroicon-o-exclamation-triangle')
148+
->color('danger')
138149
->requiresConfirmation(),
139150

140151
BulkUpdateInfo::make(),
@@ -178,8 +189,9 @@ public static function table(Table $table): Table
178189
});
179190
})
180191
->label(__('map_points.buttons.delete')),
192+
])
193+
->dropdownWidth(MaxWidth::Medium->value),
181194

182-
]),
183195
])
184196
->deferLoading();
185197
}

app/Filament/Resources/UserResource.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,14 @@ public static function form(Form $form): Form
5252
->maxLength(255),
5353
TextInput::make('email')
5454
->required()
55+
->unique('users', 'email', fn (User $record) => $record)
5556
->maxLength(255),
5657
TextInput::make('password')
5758
->password()
5859
->dehydrateStateUsing(fn (string $state): string => Hash::make($state))
5960
->dehydrated(fn (?string $state): bool => filled($state))
6061
->required(fn (string $operation): bool => $operation === 'create'),
61-
Select::make('roles')
62-
->relationship('roles', 'name')
63-
->preload(),
62+
6463
Select::make('user_group_id')
6564
->label(__('users.group.singular'))
6665
->relationship('userGroup', 'name')

lang/ro/map_points.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
'edit' => 'Modifica punct',
5050
'edit_details' => 'Modifica detalii',
5151
'validate' => 'Marcheaza ca verificat',
52-
'change_status' => 'Schimba status',
52+
'change_status_verified' => 'Seteaza statusul: verificat',
53+
'change_status_unverified' => 'Seteaza statusul: neverificat',
5354
'update_location' => 'Editeaza locatia',
5455
'confirm_info' => 'Confirma informatiile',
5556
'bulk_update' => 'Actualizeaza în masǎ',
@@ -93,6 +94,8 @@
9394
'success' => 'Statusu actualizat cu succes',
9495
'warning' => 'Statusul nu a putut fi actualizat pentru :count puncte',
9596
],
97+
'status_change_verified' => 'Statusul a fost setat verificat la toate punctele care nu au probleme raportate',
98+
'status_change_unverified' => 'Statusul a fost setat neverificat la toate punctele care nu au probleme raportate',
9699

97100
'point_allocated_to_group' => 'Punctele (:number) au fost alocat cu succes la grupul :group',
98101

0 commit comments

Comments
 (0)