CreateProject.php 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. \Log::info("", $syncData);
  49. foreach ($syncData as $data) {
  50. \DB::table('badgeables')->insert([
  51. 'tag_id' => $data['tag_id'],
  52. 'badgeable_id' => $this->record->id,
  53. 'badgeable_type' => Project::class,
  54. 'award_type' => $data['award_type'],
  55. 'award_date' => $data['award_date'],
  56. 'created_at' => now(),
  57. 'updated_at' => now(),
  58. ]);
  59. }
  60. }
  61. }