'', '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; } }