55 lines
1.6 KiB
PHP
55 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Customer;
|
|
use App\Support\ApiDataTransformer;
|
|
use Pest\ArchPresets\Custom;
|
|
|
|
class CustomerController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$customers = Customer::with(['contacts' => 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;
|
|
}
|
|
}
|
|
}
|
|
}
|