<?php

namespace App\Http\Resources;

use App\Models\GenericBackoffice\WebsiteObject;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Http\Resources\SocialMediasCollection as SocialMediaCollectionResource;

class Footer extends JsonResource
{
    public function __construct($resource)
    {
        $this->resource = $resource;
    }

    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        $out = [
            'address'       => $this->address,
            'emailContact'  => $this->_getLink($this->email_contact),
            'phoneContact'  => $this->_getLink($this->phone_contact),
            'socialMedia'   => new SocialMediaCollectionResource($this->socialMedias),
            'copyrightText' =>  str_replace("{year}", date("Y"), $this->copyright_text),
            'legalInfoLink' => $this->_getLink($this->legal_link_info),
            'funnyPhrase'   => $this->funny_phrase
        ];

        $out['emailContact']['url'] = str_replace('mailto://', 'mailto:', $out['emailContact']['url']);
        $out['phoneContact']['url'] = str_replace('tel://', 'tel:', $out['phoneContact']['url']);

        return $out;
    }

    private function _getLink(?array $linkInfo)
    {
        if ($linkInfo) {
            if (array_key_exists('objectId', $linkInfo)) {
                $websiteObject = WebsiteObject::find($linkInfo['objectId']);
                if ($websiteObject) {
                    $linkInfo['url'] = $websiteObject->uri;
                }
            }
        }
        return $linkInfo;
    }
}
