HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/zipwire.komma.pro/app/KommaApp/Kms/Transfer/ColumnMap.php
<?php


namespace App\KommaApp\Kms\Transfer;


class ColumnMap
{
    /** @var int $columnNumber */
    private $columnNumber;

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

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

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

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

    /** @var bool $optional */
    private $optional;

    /**
     * ColumnMap constructor.
     * @param string|int $columnId
     */
    public function __construct($columnId)
    {
        $this->columnNumber = $this->columnLetterToNumber($columnId);
        $this->validationRegex = '';
        $this->validationErrorText = '';
        $this->headerName = '';
        $this->optional = false;
    }

    /**
     * Gets the column number from an excel column letter
     *
     * @param string $letters
     * @param bool $zeroBasedColumnNumbers If true, column numbering starts at 0 instead of 1
     * @return int
     */
    public function columnLetterToNumber(string $letters, $zeroBasedColumnNumbers = true):int
    {
        $currentValue = 0;
        $length = strlen($letters);
        for($letterPos = 1; $letterPos < $length + 1; $letterPos++)
        {
            $exponent = $length - $letterPos;
            $multiplier = pow(26, $exponent);

            $currentLetter = substr($letters, $letterPos-1, 1);
            $letterValue = $this->letterToNumber($currentLetter);
            $currentValue += $letterValue * $multiplier;
        }

        if($zeroBasedColumnNumbers) $currentValue -= 1;

        return $currentValue;
    }

    /**
     * Converts an letter from the alphabet to a number. If it returns 0, the letter was not found
     *
     * @param $letter
     * @return int
     */
    private function letterToNumber($letter):int
    {
        $alphabet = "abcdefghijklmnopqrstuvwxyz";
        $pos = strpos($alphabet, strtolower($letter));
        if($pos !== false) $pos++;
        return $pos;
    }

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

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

    /**
     * @param string $modelAttributeName
     * @return ColumnMap
     */
    public function setModelAttributeName(string $modelAttributeName): ColumnMap
    {
        $this->modelAttributeName = $modelAttributeName;
        return $this;
    }

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

    /**
     * @param string $validationRegex
     * @return ColumnMap
     */
    public function setValidationRegex(string $validationRegex): ColumnMap
    {
        $this->validationRegex = $validationRegex;
        return $this;
    }

    /**
     * @param string $validationErrorText
     * @return ColumnMap
     */
    public function setValidationErrorText(string $validationErrorText): ColumnMap
    {
        $this->validationErrorText = $validationErrorText;
        return $this;
    }

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

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

    /**
     * @param string $headerName
     * @return ColumnMap
     */
    public function setHeaderName(string $headerName): ColumnMap
    {
        $this->headerName = $headerName;
        return $this;
    }

    /**
     * @return bool
     */
    public function isOptional(): bool
    {
        return $this->optional;
    }

    /**
     * @param bool $optional
     * @return ColumnMap
     */
    public function setOptional(bool $optional): ColumnMap
    {
        $this->optional = $optional;
        return $this;
    }
}