CreateProject.php 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Filament\Resources\ProjectResource\Pages;
  3. use App\Filament\Resources\ProjectResource;
  4. use App\Models\Project;
  5. use Filament\Actions;
  6. use Filament\Resources\Pages\CreateRecord;
  7. class CreateProject extends CreateRecord
  8. {
  9. protected static string $resource = ProjectResource::class;
  10. protected function getRedirectUrl(): string
  11. {
  12. return $this->getResource()::getUrl('index');
  13. }
  14. protected function mutateFormDataBeforeCreate(array $data): array
  15. {
  16. // 暫存標籤資料
  17. if (isset($data['badgesTarget'])) {
  18. $this->badgesTargetData = $data['badgesTarget'];
  19. unset($data['badgesTarget']);
  20. }
  21. // 暫存標籤資料
  22. if (isset($data['badgesAward'])) {
  23. $this->badgesAwardData = $data['badgesAward'];
  24. unset($data['badgesAward']);
  25. }
  26. return $data;
  27. }
  28. protected function afterCreate(): void
  29. {
  30. if (!empty($this->badgesTargetData)) {
  31. foreach ($this->badgesTargetData as $item) {
  32. $syncData[$item['badge_id'] . '_1'] = [
  33. 'badge_id' => $item['badge_id'],
  34. 'award_type' => 1,
  35. 'award_date' => null,
  36. ];
  37. }
  38. }
  39. if (!empty($this->badgesAwardData)) {
  40. foreach ($this->badgesAwardData as $item) {
  41. $syncData[$item['badge_id'] . '_2'] = [
  42. 'badge_id' => $item['badge_id'],
  43. 'award_type' => 2,
  44. 'award_date' => $item['award_date'],
  45. ];
  46. }
  47. }
  48. foreach ($syncData as $data) {
  49. \DB::table('badgeables')->insert([
  50. 'tag_id' => $data['tag_id'],
  51. 'badgeable_id' => $this->record->id,
  52. 'badgeable_type' => Project::class,
  53. 'award_type' => $data['award_type'],
  54. 'award_date' => $data['award_date'],
  55. 'created_at' => now(),
  56. 'updated_at' => now(),
  57. ]);
  58. }
  59. }
  60. }