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' => '是否補簽',
+ ],
];