$this->lot_number, 'produced_at' => $this->produced_at?->toDateString(), 'expires_at' => $this->expires_at?->toDateString(), 'units_produced' => $this->units_produced, 'quantity_g' => (float) $this->quantity_g, 'product' => [ 'name' => $this->product->title, 'description' => $this->product->description, ], 'packing' => $this->size ? [ 'name' => $this->size->packing->name, 'size_g' => (float) $this->size->packing->size, 'sku' => $this->size->sku, 'gtin' => $this->size->gtin, ] : null, 'recipe' => [ 'version' => $this->recipe->version, 'created_at' => $this->recipe->created_at->toDateString(), ], 'spices' => $this->recipe->spices->map(function ($spice) { $origin = $this->origins->firstWhere('spice_id', $spice->id); return [ 'name' => $spice->name, 'percentage' => (float) $spice->pivot->amount_in_percent, 'origin' => $origin ? [ 'country' => $origin->origin_country, 'farmer' => $origin->farmer, 'supplier' => $origin->supplier?->name, 'notes' => $origin->notes, ] : null, ]; })->values(), ]; } }