SerializesProposalPricing.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. 'registration_included_in_course' => (bool) $proposal->registration_included_in_course,
  12. 'registration_installments_allowed' => (bool) $proposal->registration_installments_allowed,
  13. 'registration_max_installments' => $proposal->registration_max_installments,
  14. 'classes_value' => $proposal->classes_value,
  15. 'classes_included_in_course' => (bool) $proposal->classes_included_in_course,
  16. 'classes_installments_allowed' => (bool) $proposal->classes_installments_allowed,
  17. 'classes_max_installments' => $proposal->classes_max_installments,
  18. 'classes_discount_percentage' => $proposal->classes_discount_percentage,
  19. 'materials_total_value' => $proposal->materials_total_value,
  20. 'materials_included_in_course' => (bool) $proposal->materials_included_in_course,
  21. 'materials_installments_allowed' => (bool) $proposal->materials_installments_allowed,
  22. 'materials_max_installments' => $proposal->materials_max_installments,
  23. 'total_value' => $proposal->total_value,
  24. 'total_max_installments' => $proposal->total_max_installments,
  25. 'materials' => $proposal->relationLoaded('products')
  26. ? $proposal->products->map(fn($item) => [
  27. 'product_id' => $item->product_id,
  28. 'name' => $item->product?->name,
  29. 'quantity' => $item->quantity,
  30. 'price' => (float) $item->price,
  31. ])
  32. : [],
  33. ];
  34. if ($withCondition) {
  35. $array['condition'] = $proposal->condition;
  36. }
  37. return $array;
  38. }
  39. }