ldc-crm/app/Http/Resources/Api/V4/CustomerResource.php
Alexis Gousseau 303834bbca
Crm V4
- Make all tests pass Client (V4),CRMV2,CRMV4
- Simplify client submodule path
- Move App_url to .env.testing
2023-10-06 16:37:29 +02:00

101 lines
2.5 KiB
PHP

<?php
namespace App\Http\Resources\Api\V4;
use App\Models\Brand;
use App\Models\Customer;
use Illuminate\Http\Resources\Json\JsonResource;
class CustomerResource extends JsonResource
{
/** @var \App\Models\Customer */
private $customer;
/** @var \App\Models\CustomerInfo */
private $info;
/** @var \App\Models\CustomerLogin */
private $login;
/** @var array */
private static $skeleton = [
'hashcode' => '',
'firstname' => '',
'lastname' => '',
'email' => '',
'birth_date' => '',
'address' => '',
'address2' => '',
'phone' => '',
'country' => '',
'city' => '',
'postcode' => '',
'opt_in' => '',
'status' => '',
'last_connection' => ''
];
/**
* CustomerResource.
*
* @param \App\Models\Brand $brand
* @param \App\Models\Customer $customer
*/
public function __construct(Brand $brand, Customer $customer)
{
$this->customer = $customer;
$this->info = $customer->info($brand, Customer::FIRST_OR_FAIL);
$this->login = $customer->login($brand, Customer::FIRST_OR_FAIL);
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request|null $request
* @return array
* + email string
* + firstname string
* + lastname string
* + birth_date datetime
* + address string
* + address2 string
* + phone string
* + country string
* + city string
* + postcode string
* + opt_in boolean
* + hashcode string
* + status boolean
* + last_connection date
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass, Squiz.Commenting.FunctionComment.Missing
*/
public function toArray($request = null): array
{
//phpcs:enable
$data = array_intersect_key(
array_merge(
[
'email' => $this->customer->email
],
$this->login->toArray(),
$this->info->toArray(),
['status' => $this->login->status]
),
$this->getSkeleton()
);
$data['country'] = $this->info->country->value();
$data['address2'] = $this->info->address2 ?? '';
return $data;
}
/**
* Returns the resource skeletton
*
* @return array
*/
public static function getSkeleton(): array
{
return self::$skeleton;
}
}