<?php

namespace modules\virkdata\helpers;
/**
 * Class virkdata_response
 * @package modules\virkdata\helpers
 * @see https://virkdata.dk/app/dokumentation
 */
class virkdata_response
{
    /**
     * Virksomhedens CVR-nummer
     * @var ?int $vat
     */
    public ?int $vat;
    /**
     * Status for virksomhed (Aktiv, ophørt, under konkurs m.m.)
     * @var ?string $status
     */
    public ?string $status;
    /**
     * Virksomhedens navn
     * @var ?string $name
     */
    public ?string $name;
    /**
     * Virksomhedens adresse
     * @var ?string $address
     */
    public ?string $address;
    /**
     * Postnummer hvor virksomheden beliggende
     * @var ?int $zipcode
     */
    public ?int $zipcode;
    /**
     * By hvor virksomheden beliggende
     * @var ?string $city
     */
    public ?string $city;
    /**
     * true = reklamebeskyttet. false = ikke reklamebeskyttet
     * @var ?bool $protected
     */
    public ?bool $protected;
    /**
     * Virksomhedens telefonnumer
     * @var ?string $phone
     */
    public ?string $phone;
    /**
     * Virksomhedens hjemmeside
     * @var ?string $website
     */
    public ?string $website;
    /**
     * Virksomhedens email
     * @var ?string $email
     */
    public ?string $email;
    /**
     * Virksomhedens faxnummer
     * @var ?string $fax
     */
    public ?string $fax;
    /**
     * Dato virksomheden blev etableret (format: YYYY-MM-DD)
     * @var ?string $startdate
     */
    public ?string $startdate;
    /**
     * Dato virksomheden blev lukket (format: YYYY-MM-DD). Er virksomheden fortsat aktivt returneres null
     * @var ?string $enddate
     */
    public ?string $enddate;
    /**
     * Antal medarbejdere ansat i virksomheden
     * @var ?int $employees
     */
    public ?int $employees;
    /**
     * Branchekode nummer
     * @var ?int $industrycode
     */
    public ?int $industrycode;
    /**
     * Branchekode beskrivelse
     * @var ?string $industrydesc
     */
    public ?string $industrydesc;
    /**
     * Virksomhedstype (kort beskrivelse)
     * @var ?string $companytype
     */
    public ?string $companytype;
    /**
     * Virksomhedstype (fuldt beskrivelse)
     * @var ?string $companydesc
     */
    public ?string $companydesc;
    /**
     * Ejere af virksomheden returneres som et array
     * @var ?array $owners
     */
    public ?array $owners;
    /**
     * Nøgletal for regnskab. Data er ikke tilgængelig for alle virksomheder
     * @var ?array $financial_summary
     */
    public ?array $financial_summary;
    /**
     * Fejlkode
     * @var ?int $error_code
     */
    public ?int $error_code;
    /**
     * (Fejl-)besked
     * @var ?virkdata_response_error_codes $response
     * @see virkdata_response_error_codes::cases()
     */
    public ?virkdata_response_error_codes $response;
    /**
     * Besked om fejl
     * @var ?string $message
     */
    public ?string $message;

    public function asArray(): array
    {
        return (array)$this;
    }

    public function populate(array $json_decode): static
    {
        foreach ($json_decode as $key => $value) {
            if (property_exists($this, $key)) {
                $this->$key = $value;
            }
        }
        return $this;
    }
}