您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

CreateClient.php 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Filament\Company\Resources\Sales\ClientResource\Pages;
  3. use App\Concerns\RedirectToListPage;
  4. use App\Enums\Common\AddressType;
  5. use App\Filament\Company\Resources\Sales\ClientResource;
  6. use App\Models\Common\Client;
  7. use Filament\Resources\Pages\CreateRecord;
  8. use Filament\Support\Enums\MaxWidth;
  9. use Illuminate\Database\Eloquent\Model;
  10. class CreateClient extends CreateRecord
  11. {
  12. use RedirectToListPage;
  13. protected static string $resource = ClientResource::class;
  14. public function getMaxContentWidth(): MaxWidth | string | null
  15. {
  16. return MaxWidth::FiveExtraLarge;
  17. }
  18. protected function handleRecordCreation(array $data): Model
  19. {
  20. /** @var Client $record */
  21. $record = parent::handleRecordCreation($data);
  22. // Create billing address first
  23. $billingAddress = $record->addresses()->create([
  24. ...$data['billingAddress'],
  25. 'type' => AddressType::Billing,
  26. ]);
  27. // Create shipping address with reference to billing if needed
  28. $shippingData = $data['shippingAddress'];
  29. $shippingAddress = [
  30. 'type' => AddressType::Shipping,
  31. 'recipient' => $shippingData['recipient'],
  32. 'phone' => $shippingData['phone'],
  33. 'notes' => $shippingData['notes'],
  34. ];
  35. if ($shippingData['same_as_billing']) {
  36. $shippingAddress = [
  37. ...$shippingAddress,
  38. 'parent_address_id' => $billingAddress->id,
  39. 'address_line_1' => $billingAddress->address_line_1,
  40. 'address_line_2' => $billingAddress->address_line_2,
  41. 'country_code' => $billingAddress->country_code,
  42. 'state_id' => $billingAddress->state_id,
  43. 'city' => $billingAddress->city,
  44. 'postal_code' => $billingAddress->postal_code,
  45. ];
  46. } else {
  47. $shippingAddress = [
  48. ...$shippingAddress,
  49. 'address_line_1' => $shippingData['address_line_1'],
  50. 'address_line_2' => $shippingData['address_line_2'],
  51. 'country_code' => $shippingData['country_code'],
  52. 'state_id' => $shippingData['state_id'],
  53. 'city' => $shippingData['city'],
  54. 'postal_code' => $shippingData['postal_code'],
  55. ];
  56. }
  57. $record->addresses()->create($shippingAddress);
  58. return $record;
  59. }
  60. }