From e6ed4857189880af2d9c952995d479463cb2f724 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 14 Jun 2026 13:48:48 +0700 Subject: [PATCH] refactor: remove photo attachment functionality from employee advances module --- .../Admin/Finance/EmployeeAdvanceRequest.php | 7 +--- app/Models/EmployeeAdvance.php | 15 +------ .../Finance/EmployeeAdvanceService.php | 40 ++----------------- .../EmployeeAdvanceFormModal.vue | 31 +------------- .../finance/employee-advances/columns.ts | 8 +--- resources/js/types/employee-advance.ts | 5 --- 6 files changed, 7 insertions(+), 99 deletions(-) diff --git a/app/Http/Requests/Admin/Finance/EmployeeAdvanceRequest.php b/app/Http/Requests/Admin/Finance/EmployeeAdvanceRequest.php index e261226..4da217b 100644 --- a/app/Http/Requests/Admin/Finance/EmployeeAdvanceRequest.php +++ b/app/Http/Requests/Admin/Finance/EmployeeAdvanceRequest.php @@ -4,14 +4,11 @@ use App\Enums\EmployeeAdvanceStatus; use App\Enums\Permission; -use App\Http\Requests\Concerns\ValidatesMediaUploads; use App\Models\EmployeeAdvance; use Illuminate\Foundation\Http\FormRequest; class EmployeeAdvanceRequest extends FormRequest { - use ValidatesMediaUploads; - public function authorize(): bool { $user = $this->user(); @@ -44,8 +41,7 @@ public function rules(): array return [ 'amount' => ['required', 'integer', 'min:1'], 'description' => ['required', 'string', 'max:100'], - 'due_date' => ['required', 'date','after_or_equal:today'], - ...$this->photoRules(), + 'due_date' => ['required', 'date', 'after_or_equal:today'], ]; } @@ -58,7 +54,6 @@ public function attributes(): array 'amount' => 'jumlah', 'description' => 'keterangan', 'due_date' => 'jatuh tempo', - ...$this->photoUploadAttributes('foto bukti'), ]; } } diff --git a/app/Models/EmployeeAdvance.php b/app/Models/EmployeeAdvance.php index 1f6bf19..66c3c53 100644 --- a/app/Models/EmployeeAdvance.php +++ b/app/Models/EmployeeAdvance.php @@ -3,7 +3,6 @@ namespace App\Models; use App\Enums\EmployeeAdvanceStatus; -use App\Models\Concerns\HasModuleMedia; use App\Models\Concerns\HasRejection; use App\Models\Concerns\InteractsWithActivityLog; use Illuminate\Database\Eloquent\Attributes\Appends; @@ -12,7 +11,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Spatie\MediaLibrary\HasMedia; #[Guarded(['id'])] #[Appends([ @@ -27,10 +25,9 @@ 'can_verify', 'can_pay', ])] -class EmployeeAdvance extends Model implements HasMedia +class EmployeeAdvance extends Model { use HasFactory; - use HasModuleMedia; use HasRejection; use InteractsWithActivityLog; @@ -140,14 +137,4 @@ public function statusLabel(): Attribute get: fn () => $this->status?->label(), ); } - - public static function mediaModuleName(): string - { - return 'employee-advance'; - } - - public function registerMediaCollections(): void - { - $this->addMediaCollection('photos'); - } } diff --git a/app/Services/Finance/EmployeeAdvanceService.php b/app/Services/Finance/EmployeeAdvanceService.php index ab2bfdd..f2734b3 100644 --- a/app/Services/Finance/EmployeeAdvanceService.php +++ b/app/Services/Finance/EmployeeAdvanceService.php @@ -6,9 +6,7 @@ use App\Models\EmployeeAdvance; use App\Models\User; use App\Services\Concerns\ResolvesAuthEmployee; -use App\Services\Media\MediaService; use App\Services\System\PushNotificationService; -use App\Support\Media\MediaPresenter; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; @@ -22,7 +20,6 @@ class EmployeeAdvanceService public function __construct( private readonly CashService $cashService, - private readonly MediaService $mediaService, private readonly PushNotificationService $pushNotificationService, ) {} @@ -52,7 +49,7 @@ public function outstandingSummary(): array public function paginateForIndex(array $tableQuery): LengthAwarePaginator { $query = EmployeeAdvance::query() - ->with(['employee.user.profile', 'rejection', 'media']) + ->with(['employee.user.profile', 'rejection']) ->when($tableQuery['search'] !== '', function (Builder $query) use ($tableQuery): void { $search = $tableQuery['search']; $query->where(function (Builder $query) use ($search): void { @@ -67,15 +64,7 @@ public function paginateForIndex(array $tableQuery): LengthAwarePaginator return $query ->paginate(10) - ->withQueryString() - ->through(function (EmployeeAdvance $employeeAdvance) { - $employeeAdvance->setAttribute( - 'photos', - MediaPresenter::collection($employeeAdvance, 'photos'), - ); - - return $employeeAdvance; - }); + ->withQueryString(); } /** @@ -86,17 +75,13 @@ public function create(array $validated, User $user): void $employee = $this->resolveAuthEmployee($user); $employeeAdvance = DB::transaction(function () use ($validated, $employee) { - $employeeAdvance = EmployeeAdvance::create([ + return EmployeeAdvance::create([ 'employee_id' => $employee->id, 'amount' => (int) $validated['amount'], 'description' => $validated['description'], 'due_date' => $validated['due_date'], 'status' => EmployeeAdvanceStatus::PENDING, ]); - - $this->syncPhotos($employeeAdvance, $validated); - - return $employeeAdvance; }); $this->pushNotificationService->sendToRoles( @@ -120,8 +105,6 @@ public function update(EmployeeAdvance $employeeAdvance, array $validated, User $employeeAdvance->description = $validated['description']; $employeeAdvance->due_date = $validated['due_date']; $employeeAdvance->save(); - - $this->syncPhotos($employeeAdvance, $validated); }); } @@ -130,7 +113,6 @@ public function delete(EmployeeAdvance $employeeAdvance, User $user): void $this->ensureOwnedBySubmitter($employeeAdvance, $user); $this->ensurePending($employeeAdvance, 'Kasbon hanya dapat dihapus saat status menunggu.'); - $employeeAdvance->clearMediaCollection('photos'); $employeeAdvance->delete(); } @@ -229,22 +211,6 @@ public function pay(EmployeeAdvance $employeeAdvance, User $user): void }); } - /** - * @param array $validated - */ - private function syncPhotos(EmployeeAdvance $employeeAdvance, array $validated): void - { - $this->mediaService->syncCollection( - $employeeAdvance, - 'photos', - $validated['photos'] ?? null, - $validated['remove_media_ids'] ?? null, - self::MAX_PHOTOS, - required: true, - errorKey: 'photos', - ); - } - private function ensureOwnedBySubmitter(EmployeeAdvance $employeeAdvance, User $user): void { if ($user->employee?->id !== $employeeAdvance->employee_id) { diff --git a/resources/js/components/admin/finance/employee-advances/EmployeeAdvanceFormModal.vue b/resources/js/components/admin/finance/employee-advances/EmployeeAdvanceFormModal.vue index dee54e3..7fd4071 100644 --- a/resources/js/components/admin/finance/employee-advances/EmployeeAdvanceFormModal.vue +++ b/resources/js/components/admin/finance/employee-advances/EmployeeAdvanceFormModal.vue @@ -1,9 +1,8 @@