minor fixes

This commit is contained in:
ludo
2023-12-09 21:02:28 +01:00
parent b5da5fc881
commit 2a429e4163
49 changed files with 448 additions and 266 deletions

View File

@@ -14,6 +14,27 @@ class Customers
{
use Basic;
public static function init()
{
return [
'sale_channels' => SaleChannels::getOptions(),
];
}
public static function getSaleChannelIds($customerId = false)
{
$channels = self::getSaleChannels($customerId);
return $channels ? $channels->pluck('id')->toArray() : false;
}
public static function getSaleChannels($customerId = false)
{
$customer = $customerId ? self::get($customerId) : self::getAuth();
return $customer ? $customer->sale_channels : SaleChannels::getDefault();
}
public static function getSaleChannel()
{
return SaleChannels::getDefault();
@@ -60,7 +81,7 @@ class Customers
$filename = self::makeAvatarFilename($customer);
$name = $customer->first_name.' '.$customer->last_name;
$avatar = new Avatar();
return $avatar->create($name)
->setBackground('#F2B90F')
->setForeground('#335012')
@@ -129,22 +150,25 @@ class Customers
public static function edit($id)
{
$customer = self::get($id, ['delivery_addresses', 'invoice_addresses']);
$customer = self::get($id, ['delivery_addresses', 'invoice_addresses', 'sale_channels']);
$data = $customer->toArray();
$data['deliveries'] = $customer->deliveries->pluck('id')->toArray();
$data['sale_channels'] = $customer->sale_channels->pluck('id')->toArray();
return $data;
}
public static function storeFull($data)
{
$deliveries = $data['deliveries'];
$invoices = $data['invoices'];
unset($data['deliveries']);
unset($data['invoices']);
// $invoices = $data['invoices'];
$saleChannels = $data['sale_channels'];
// unset($data['invoices']);
unset($data['sale_channels']);
$customer = self::store($data);
self::storeAddresses($customer, $deliveries);
self::storeAddresses($customer, $invoices);
if ($customer) {
// self::storeAddresses($customer->id, $deliveries);
// self::storeAddresses($customer->id, $invoices);
self::storeSaleChannels($customer->id, $saleChannels);
}
return $customer->id;
}
@@ -163,31 +187,37 @@ class Customers
return $customer->deliveries()->sync($deliveries);
}
public static function storeAddresses($customer, $addresses)
public static function storeAddresses($customerId, $addresses)
{
foreach ($addresses as $address) {
$address['customer_id'] = $customer->id;
$address['customer_id'] = $customerId;
CustomerAddresses::store($address);
}
}
public static function storeSaleChannels($customerId, $saleChannels)
{
$oldSaleChannels = self::getSaleChannelIds($customerId);
$deleteSaleChannels = array_diff($oldSaleChannels, $saleChannels);
$newSaleChannels = array_diff($saleChannels, $oldSaleChannels);
$data = ['customer_id' => $customerId];
foreach ($newSaleChannels as $saleChannelId) {
$data['sale_channel_id'] = $saleChannelId;
CustomerSaleChannels::store($data);
}
foreach ($deleteSaleChannels as $saleChannelId) {
CustomerSaleChannels::destroyByCustomerAndSaleChannel($customerId, $saleChannelId);
}
}
public static function create($data)
{
return Customer::create([
'uuid' => Str::uuid(),
'active' => true,
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'company' => $data['company'],
'tva' => $data['tva'],
'phone' => $data['phone'],
'address' => $data['address'],
'address2' => $data['address2'],
'zipcode' => $data['zipcode'],
'city' => $data['city'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$data['uuid'] = Str::uuid();
$data['active'] = true;
$data['password'] = bcrypt($data['password']);
return Customer::create($data);
}
public static function getStorage($filename = false)