CreateProject.php 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. \Log::info("mutateFormDataBeforeCreate 1", $data);
  17. // 暫存標籤資料
  18. if (isset($data['badgesTarget'])) {
  19. $this->badgesTargetData = $data['badgesTarget'];
  20. unset($data['badgesTarget']);
  21. }
  22. // 暫存標籤資料
  23. if (isset($data['badgesAward'])) {
  24. $this->badgesAwardData = $data['badgesAward'];
  25. unset($data['badgesAward']);
  26. }
  27. return $data;
  28. }
  29. protected function afterCreate(): void
  30. {
  31. \Log::info("afterCreate 1");
  32. if (!empty($this->badgesTargetData)) {
  33. foreach ($this->badgesTargetData as $item) {
  34. $syncData[$item['badge_id'] . '_1'] = [
  35. 'badge_id' => $item['badge_id'],
  36. 'award_type' => 1,
  37. 'award_date' => null,
  38. ];
  39. }
  40. }
  41. \Log::info("afterCreate 2");
  42. if (!empty($this->badgesAwardData)) {
  43. foreach ($this->badgesAwardData as $item) {
  44. $syncData[$item['badge_id'] . '_2'] = [
  45. 'badge_id' => $item['badge_id'],
  46. 'award_type' => 2,
  47. 'award_date' => $item['award_date'],
  48. ];
  49. }
  50. }
  51. \Log::info("afterCreate 3");
  52. \Log::info("", $syncData);
  53. foreach ($syncData as $data) {
  54. \DB::table('badgeables')->insert([
  55. 'tag_id' => $data['tag_id'],
  56. 'badgeable_id' => $this->record->id,
  57. 'badgeable_type' => Project::class,
  58. 'award_type' => $data['award_type'],
  59. 'award_date' => $data['award_date'],
  60. 'created_at' => now(),
  61. 'updated_at' => now(),
  62. ]);
  63. }
  64. }
  65. }