File: D:/HostingSpaces/SBogers10/netwerkbrabant.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;
}
}