diff --git a/app/Filament/Resources/User/AttendanceLogResource.php b/app/Filament/Resources/User/AttendanceLogResource.php new file mode 100644 index 00000000..b8d31de1 --- /dev/null +++ b/app/Filament/Resources/User/AttendanceLogResource.php @@ -0,0 +1,113 @@ +schema([ + // + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('id')->sortable(), + Tables\Columns\TextColumn::make('uid')->formatStateUsing(fn ($state) => username_for_admin($state)), + Tables\Columns\TextColumn::make('date')->label(__('attendance.fields.date'))->sortable(), + Tables\Columns\TextColumn::make('points')->label(__('attendance.fields.points')), + Tables\Columns\IconColumn::make('is_retroactive') + ->label(__('attendance.fields.is_retroactive')) + ->boolean(true) + , + Tables\Columns\TextColumn::make('created_at')->label(__('label.created_at')), + ]) + ->defaultSort('id', 'desc') + ->filters([ + Tables\Filters\Filter::make('id') + ->form([ + Forms\Components\TextInput::make('id') + ->placeholder('UID') + , + ])->query(function (Builder $query, array $data) { + return $query->when($data['id'], fn (Builder $query, $value) => $query->where("uid", $value)); + }) + , + Tables\Filters\SelectFilter::make('is_retroactive') + ->options(self::getYesNoOptions()) + ->label(__('attendance.fields.is_retroactive')) + , + Tables\Filters\Filter::make('date') + ->form([ + Forms\Components\DatePicker::make('date') + ->maxDate(now()) + ->label(__('attendance.fields.date')) + , + ])->query(function (Builder $query, array $data) { + return $query->when($data['date'], fn (Builder $query, $value) => $query->where("date", $value)); + }) + , + Tables\Filters\Filter::make('created_at') + ->form([ + Forms\Components\DatePicker::make('created_at') + ->label(__('label.created_at')) + , + ])->query(function (Builder $query, array $data) { + return $query->when($data['created_at'], function (Builder $query, $value) { + $begin = Carbon::parse($value)->startOfDay(); + $end = Carbon::parse($value)->endOfDay(); + return $query->where("created_at", ">=", $begin)->where('created_at', '<=', $end); + }); + }) + , + ]) + ->actions([ + ]) + ->bulkActions([ + ]); + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ManageAttendanceLogs::route('/'), + ]; + } +} diff --git a/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php b/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php new file mode 100644 index 00000000..2ca8eb13 --- /dev/null +++ b/app/Filament/Resources/User/AttendanceLogResource/Pages/ManageAttendanceLogs.php @@ -0,0 +1,20 @@ + $attendance->uid, 'points' => $update['points'], 'date' => $now->format('Y-m-d'), + 'created_at' => $now, + 'updated_at' => $now, ]; AttendanceLog::query()->insert($attendanceLog); } diff --git a/database/migrations/2023_04_12_011330_change_agent_allow_deny_table_comment_field_nullable.php b/database/migrations/2023_04_12_011330_change_agent_allow_deny_table_comment_field_nullable.php new file mode 100644 index 00000000..e28a85fb --- /dev/null +++ b/database/migrations/2023_04_12_011330_change_agent_allow_deny_table_comment_field_nullable.php @@ -0,0 +1,33 @@ +string("comment")->nullable(true)->change(); + }); + Schema::table('agent_deny_family', function (Blueprint $table) { + $table->string("comment")->nullable(true)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}; diff --git a/include/constants.php b/include/constants.php index ff040b91..b6bfb3af 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@ 'Already attendance', 'card_not_enough' => 'Attendance card not enough', 'ranking' => "Today's Ranking: :ranking / :counts", + 'fields' => [ + 'date' => 'Date', + 'points' => 'Got bonus', + 'is_retroactive' => 'Is retroactive', + ], ]; diff --git a/resources/lang/zh_CN/admin.php b/resources/lang/zh_CN/admin.php index 33d45696..49d21962 100644 --- a/resources/lang/zh_CN/admin.php +++ b/resources/lang/zh_CN/admin.php @@ -35,6 +35,7 @@ return [ 'login_log' => '登录记录', 'bonus_log' => '魔力记录', 'torrent_buy_log' => '种子购买', + 'attendance_log' => '签到记录', ], 'resources' => [ 'agent_allow' => [ diff --git a/resources/lang/zh_CN/attendance.php b/resources/lang/zh_CN/attendance.php index 6da6dab3..0cf53228 100644 --- a/resources/lang/zh_CN/attendance.php +++ b/resources/lang/zh_CN/attendance.php @@ -6,4 +6,9 @@ return [ 'already_attendance' => '已经签到', 'card_not_enough' => '补签卡不足', 'ranking' => '今日签到排名::ranking / :counts', + 'fields' => [ + 'date' => '日期', + 'points' => '获得魔力', + 'is_retroactive' => '是否补签', + ], ]; diff --git a/resources/lang/zh_TW/attendance.php b/resources/lang/zh_TW/attendance.php index a1d847d9..5783fde8 100644 --- a/resources/lang/zh_TW/attendance.php +++ b/resources/lang/zh_TW/attendance.php @@ -6,5 +6,10 @@ return [ 'already_attendance' => '已經簽到', 'card_not_enough' => '補簽卡不足', 'ranking' => '今日簽到排名::ranking / :counts', + 'fields' => [ + 'date' => '日期', + 'points' => '獲得魔力', + 'is_retroactive' => '是否補簽', + ], ];