SerializesProposalPricing.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Http\Resources\Concerns;
  3. use Illuminate\Database\Eloquent\Model;
  4. trait SerializesProposalPricing
  5. {
  6. private function proposalPricingArray(?Model $proposal, bool $withCondition = false): ?array
  7. {
  8. if (!$proposal) return null;
  9. $array = [
  10. 'registration_value' => $proposal->registration_value,
  11. 'classes_value' => $proposal->classes_value,
  12. 'classes_discount_percentage' => $proposal->classes_discount_percentage,
  13. 'materials_total_value' => $proposal->materials_total_value,
  14. 'total_value' => $proposal->total_value,
  15. 'total_max_installments' => $proposal->total_max_installments,
  16. 'materials' => $proposal->relationLoaded('products')
  17. ? $proposal->products->map(fn($item) => [
  18. 'product_id' => $item->product_id,
  19. 'name' => $item->product?->name,
  20. 'quantity' => $item->quantity,
  21. 'price' => (float) $item->price,
  22. ])
  23. : [],
  24. ];
  25. if ($withCondition) {
  26. $array['condition'] = $proposal->condition;
  27. }
  28. return $array;
  29. }
  30. }