function ($query) { $query->orderBy('is_primary', 'desc'); }, 'paymentTerms'])->get(); return $customers->map(function ($customer) { $customerArray = $customer->toArray(); $customerArray['payment_terms'] = $customer->paymentTerms->toArray(); unset($customerArray['payment_terms_id']); return ApiDataTransformer::snakeToCamel($customerArray); }); } public function single($id) { $customer = Customer::with(['contacts' => function ($query) { $query->orderBy('is_primary', 'desc'); }, 'paymentTerms'])->findOrFail($id); $customerArray = $customer->toArray(); if ($customer->paymentTerms) { $customerArray['payment_terms'] = $customer->paymentTerms->toArray(); unset($customerArray['payment_terms_id']); } return ApiDataTransformer::snakeToCamel($customerArray); } /** * Generate a random available customer number */ public static function generateCustomerNumber() { $newNumber = null; while (!$newNumber) { // DATEV standard $randomNumber = rand(10000, 69999); $customer = Customer::firstWhere('customer_nr', $randomNumber); if ($customer) { return $randomNumber; } } } }