소스 검색

fix project

Andrew 2 달 전
부모
커밋
b20ce81054
2개의 변경된 파일42개의 추가작업 그리고 25개의 파일을 삭제
  1. 15
    8
      app/Filament/Resources/ProjectResource/Pages/CreateProject.php
  2. 27
    17
      app/Filament/Resources/ProjectResource/Pages/EditProject.php

+ 15
- 8
app/Filament/Resources/ProjectResource/Pages/CreateProject.php 파일 보기

@@ -4,13 +4,16 @@ namespace App\Filament\Resources\ProjectResource\Pages;
4 4
 
5 5
 use App\Filament\Resources\ProjectResource;
6 6
 use App\Models\Project;
7
-use Filament\Actions;
8 7
 use Filament\Resources\Pages\CreateRecord;
9 8
 
10 9
 class CreateProject extends CreateRecord
11 10
 {
12 11
     protected static string $resource = ProjectResource::class;
13 12
 
13
+    protected array $badgesTargetData = [];
14
+
15
+    protected array $badgesAwardData = [];
16
+
14 17
     protected function getRedirectUrl(): string
15 18
     {
16 19
         return $this->getResource()::getUrl('index');
@@ -28,28 +31,31 @@ class CreateProject extends CreateRecord
28 31
             $this->badgesAwardData = $data['badgesAward'];
29 32
             unset($data['badgesAward']);
30 33
         }
34
+
31 35
         return $data;
32 36
     }
33 37
 
34 38
     protected function afterCreate(): void
35 39
     {
36 40
         $syncData = [];
37
-        if (!empty($this->badgesTargetData)) {
38
-            foreach ($this->badgesTargetData as $item) {
39
-                $syncData[$item['badge_id'] . '_1'] = [
41
+        if (! empty($this->badgesTargetData)) {
42
+            foreach ($this->badgesTargetData as $index => $item) {
43
+                $syncData[$item['badge_id'].'_1'] = [
40 44
                     'badge_id' => $item['badge_id'],
41 45
                     'award_type' => 1,
42 46
                     'award_date' => null,
47
+                    'sort_order' => $index,
43 48
                 ];
44 49
             }
45 50
         }
46 51
 
47
-        if (!empty($this->badgesAwardData)) {
48
-            foreach ($this->badgesAwardData as $item) {
49
-                $syncData[$item['badge_id'] . '_2'] = [
52
+        if (! empty($this->badgesAwardData)) {
53
+            foreach ($this->badgesAwardData as $index => $item) {
54
+                $syncData[$item['badge_id'].'_2'] = [
50 55
                     'badge_id' => $item['badge_id'],
51 56
                     'award_type' => 2,
52
-                    'award_date' => $item['award_date'] . "-01",
57
+                    'award_date' => $item['award_date'].'-01',
58
+                    'sort_order' => $index,
53 59
                 ];
54 60
             }
55 61
         }
@@ -61,6 +67,7 @@ class CreateProject extends CreateRecord
61 67
                 'badgeable_type' => Project::class,
62 68
                 'award_type' => $data['award_type'],
63 69
                 'award_date' => $data['award_date'],
70
+                'sort_order' => $data['sort_order'],
64 71
                 'created_at' => now(),
65 72
                 'updated_at' => now(),
66 73
             ]);

+ 27
- 17
app/Filament/Resources/ProjectResource/Pages/EditProject.php 파일 보기

@@ -4,13 +4,16 @@ namespace App\Filament\Resources\ProjectResource\Pages;
4 4
 
5 5
 use App\Filament\Resources\ProjectResource;
6 6
 use App\Models\Project;
7
-use Filament\Actions;
8 7
 use Filament\Resources\Pages\EditRecord;
9 8
 
10 9
 class EditProject extends EditRecord
11 10
 {
12 11
     protected static string $resource = ProjectResource::class;
13 12
 
13
+    protected array $badgesTargetData = [];
14
+
15
+    protected array $badgesAwardData = [];
16
+
14 17
     protected function getRedirectUrl(): string
15 18
     {
16 19
         return $this->getResource()::getUrl('index');
@@ -24,6 +27,7 @@ class EditProject extends EditRecord
24 27
             ->where('badgeable_id', $project->id)
25 28
             ->where('badgeable_type', Project::class)
26 29
             ->where('award_type', 1)
30
+            ->orderBy('sort_order')
27 31
             ->get()
28 32
             ->map(fn ($item) => [
29 33
                 'badge_id' => $item->badge_id,
@@ -31,15 +35,17 @@ class EditProject extends EditRecord
31 35
             ])->toArray();
32 36
 
33 37
         $data['badgesAward'] = \DB::table('badgeables')
34
-        ->where('badgeable_id', $project->id)
35
-        ->where('badgeable_type', Project::class)
36
-        ->where('award_type', 2)
37
-        ->get()
38
-        ->map(fn ($item) => [
39
-            'badge_id' => $item->badge_id,
40
-            'award_date' => $item->award_date,
41
-            'award_type' => $item->award_type,
42
-        ])->toArray();
38
+            ->where('badgeable_id', $project->id)
39
+            ->where('badgeable_type', Project::class)
40
+            ->where('award_type', 2)
41
+            ->orderBy('sort_order')
42
+            ->get()
43
+            ->map(fn ($item) => [
44
+                'badge_id' => $item->badge_id,
45
+                'award_date' => $item->award_date,
46
+                'award_type' => $item->award_type,
47
+            ])->toArray();
48
+
43 49
         return $data;
44 50
     }
45 51
 
@@ -55,6 +61,7 @@ class EditProject extends EditRecord
55 61
             $this->badgesAwardData = $data['badgesAward'];
56 62
             unset($data['badgesAward']);
57 63
         }
64
+
58 65
         return $data;
59 66
     }
60 67
 
@@ -67,22 +74,24 @@ class EditProject extends EditRecord
67 74
             ->where('badgeable_type', Project::class)
68 75
             ->delete();
69 76
 
70
-        if (!empty($this->badgesTargetData)) {
71
-            foreach ($this->badgesTargetData as $item) {
72
-                $syncData[$item['badge_id'] . '_1'] = [
77
+        if (! empty($this->badgesTargetData)) {
78
+            foreach ($this->badgesTargetData as $index => $item) {
79
+                $syncData[$item['badge_id'].'_1'] = [
73 80
                     'badge_id' => $item['badge_id'],
74 81
                     'award_type' => 1,
75 82
                     'award_date' => null,
83
+                    'sort_order' => $index,
76 84
                 ];
77 85
             }
78 86
         }
79 87
 
80
-        if (!empty($this->badgesAwardData)) {
81
-            foreach ($this->badgesAwardData as $item) {
82
-                $syncData[$item['badge_id'] . '_2'] = [
88
+        if (! empty($this->badgesAwardData)) {
89
+            foreach ($this->badgesAwardData as $index => $item) {
90
+                $syncData[$item['badge_id'].'_2'] = [
83 91
                     'badge_id' => $item['badge_id'],
84 92
                     'award_type' => 2,
85
-                    'award_date' => $item['award_date'] . "-01",
93
+                    'award_date' => $item['award_date'].'-01',
94
+                    'sort_order' => $index,
86 95
                 ];
87 96
             }
88 97
         }
@@ -94,6 +103,7 @@ class EditProject extends EditRecord
94 103
                 'badgeable_type' => Project::class,
95 104
                 'award_type' => $data['award_type'],
96 105
                 'award_date' => $data['award_date'],
106
+                'sort_order' => $data['sort_order'],
97 107
                 'created_at' => now(),
98 108
                 'updated_at' => now(),
99 109
             ]);