<?php

namespace App\Classes\Modules\Banks\DataTransferObjects;

use App\Classes\General\Interfaces\DataTransferObject;

class BankObject implements DataTransferObject
{

    /** @var int  */
    private $company_id;

    /** @var int */
    private $type;

    /** @var string */
    private $bank_name;

    /** @var string */
    private $holder_name;

    /** @var string */
    private $account_no;

    /** @var int */
    private $country_id;

    /** @var string|null */
    private $reference;

    /**
     * BankObject constructor.
     * @param int $company_id
     * @param int $type
     * @param string $bank_name
     * @param string $holder_name
     * @param string $account_no
     * @param int $country_id
     * @param null|string $reference
     */
    public function __construct(int $company_id, int $type, string $bank_name, string $holder_name, string $account_no, ?string $bank_branch = null, ?string $swift = null, ?string $snap = null, int $country_id, ?string $reference = null)
    {
        $this->company_id = $company_id;
        $this->type = $type;
        $this->bank_name = $bank_name;
        $this->holder_name = $holder_name;
        $this->account_no = $account_no;
        $this->bank_branch = $bank_branch;
        $this->swift = $swift;
        $this->snap = $snap;
        $this->country_id = $country_id;
        $this->reference = $reference;
    }

    /**
     * @return int
     */
    public function getCompanyId(): int
    {
        return $this->company_id;
    }

    /**
     * @return int
     */
    public function getType(): int
    {
        return $this->type;
    }

    /**
     * @return string
     */
    public function getBankName(): string
    {
        return $this->bank_name;
    }

    /**
     * @return string
     */
    public function getHolderName(): string
    {
        return $this->holder_name;
    }

    /**
     * @return string
     */
    public function getAccountNo(): string
    {
        return $this->account_no;
    }

    /**
     * @return null|string
     */
    public function getBankBranch(): ?string
    {
        return $this->bank_branch;
    }

    /**
     * @return null|string
     */
    public function getSwift(): ?string
    {
        return $this->swift;
    }

    /**
     * @return null|string
     */
    public function getSnap(): ?string
    {
        return $this->snap;
    }

    /**
     * @return int
     */
    public function getCountryId(): int
    {
        return $this->country_id;
    }

    /**
     * @return null|string
     */
    public function getReference(): ?string
    {
        return $this->reference;
    }


}