- Make all tests pass Client (V4),CRMV2,CRMV4 - Simplify client submodule path - Move App_url to .env.testing
101 lines
2.5 KiB
PHP
101 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Resources\Api\V2;
|
|
|
|
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;
|
|
}
|
|
}
|