43 lines
962 B
PHP
43 lines
962 B
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Import from files
|
||
|
*/
|
||
|
namespace App\Traits;
|
||
|
|
||
|
use Illuminate\Support\Collection;
|
||
|
|
||
|
trait Import
|
||
|
{
|
||
|
protected Collection $_columns;
|
||
|
|
||
|
/**
|
||
|
* Return the columns from the file that we'll work with.
|
||
|
* This creates an index of the position of each header in the file, which we use to find an value by getColumnKey()
|
||
|
*
|
||
|
* @param string $line
|
||
|
* @return Collection
|
||
|
* @throws \Exception
|
||
|
*/
|
||
|
private function setColumns(string $line): Collection
|
||
|
{
|
||
|
// If columns is not set, then this is an error
|
||
|
if (! $this->columns)
|
||
|
throw new \Exception('ERROR: Columns must be set before calling setColumns()');
|
||
|
|
||
|
$this->_columns = collect(explode(',',strtolower($line)))->filter();
|
||
|
|
||
|
return $this->_columns->intersect($this->columns);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the index for the column in the file
|
||
|
*
|
||
|
* @param string $key
|
||
|
* @return mixed
|
||
|
*/
|
||
|
private function getColumnKey(string $key)
|
||
|
{
|
||
|
return $this->_columns->search($this->columns->get($key));
|
||
|
}
|
||
|
}
|