Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

CreateClient.php 2.5KB

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