You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

EditClient.php 2.5KB

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